关于工程内部ID、Version等设计的思考

今天在学习grafana的dashboard json model语法时,发现其内部结构设计时,使用了id、uid、version、schemaVersion等设计,总结起来看还是很不错的。

id:唯一标识一个dashboard,由数据库自增序列保证,每次新创建一个dashboard时,都会新增ID;
优点:可以唯一标识系统内部的dashboard
缺点:因序列自增,无法在系统间迁移使用

uid:此uid也是用于唯一标识一个dashboard,但是其生成规则由唯一性算法保证,由8-40个长度的字符标识,在不同grafana 安装系统中唯一;
优点:全局唯一,可以用于系统间迁移使用,另外系统访问时,业务通过此uid访问,在迁移数据时,也可以保证dashboard访问唯一
缺点:uid算法需要自己实现,更新时,需要同时传入id和uid

version:标识每次json model的修改,每次修改后,对应的version号也都会加一,也是由数据库自增序列保证;
优点:每次修改都有版本记录,同时历史记录可恢复
缺点:历史记录保存,占用一点存储

schemaVersion:标识当前json schema的版本号,当schema升级后,对应的schemaVersion数字加一,唯一代表一个版本的json schema;
优点:可以及早发现并解决版本兼容性问题
缺点:增加存储字段

xuzs wechat
欢迎您扫一扫上面的微信,及时与我交流!
坚持原创技术分享,您的支持将鼓励我继续创作!