dbml与skyDataDefine区别
2023-05-26 09:55:52
skyDataDefine推出后,一直想找个工具自动生成ER图。终于通过Kroki,找到了dbml,天络先生成dbml,再利用dbml生成dbml-renderer生成ER图。
dbml使用过程中,也大体了解下dbml的功能及作用。发现与skyDataDefine中有很多功能相似,如:自动生成各种数据库的建表语句。但在产品定位上,与skyDataDefine不同。
skyDataDefine的初衷是利用git对数据库表结构版本化管理。天络在一个项目实施中,由于业务需求的不断变化,每次涉及数据表结构变化时,就会重建出一个新库,并把历史数据导入再修改。最后导致数据库版本太多,且混乱。
尝过git对代码管理的甜头后 ,版本化一切的概念根深蒂固。所以版本化数据库表结构成为目标,之后慢慢延伸出建表、git diff 修改表结构、生成skyServer及skyAdmin配置、生成word格式数据库结构说明等。。。
dbml呢,定位于通过一种通用数据库描述语言,来在不同数据库间方便切换。因此生成各种数据库下建表语句功能及生成ER图功能强大,skyDataDefine目前只支持了mysql及postgresql。
同时由于dbml是一种语言,生成及解析时,要通过词法及语法分析;而skyDataDefine利用js 对象来描述,易于修改及解析。
skyDataDefine缺点之一是灵活,没用dbml严谨,之二是方便通过nodejs来处理,其它语言处理起来就会麻烦一些,但对于一个开发辅助工具而说,需安装nodejs来运行,也不是问题。
dbml使用过程中,也大体了解下dbml的功能及作用。发现与skyDataDefine中有很多功能相似,如:自动生成各种数据库的建表语句。但在产品定位上,与skyDataDefine不同。
skyDataDefine的初衷是利用git对数据库表结构版本化管理。天络在一个项目实施中,由于业务需求的不断变化,每次涉及数据表结构变化时,就会重建出一个新库,并把历史数据导入再修改。最后导致数据库版本太多,且混乱。
尝过git对代码管理的甜头后 ,版本化一切的概念根深蒂固。所以版本化数据库表结构成为目标,之后慢慢延伸出建表、git diff 修改表结构、生成skyServer及skyAdmin配置、生成word格式数据库结构说明等。。。
dbml呢,定位于通过一种通用数据库描述语言,来在不同数据库间方便切换。因此生成各种数据库下建表语句功能及生成ER图功能强大,skyDataDefine目前只支持了mysql及postgresql。
同时由于dbml是一种语言,生成及解析时,要通过词法及语法分析;而skyDataDefine利用js 对象来描述,易于修改及解析。
skyDataDefine缺点之一是灵活,没用dbml严谨,之二是方便通过nodejs来处理,其它语言处理起来就会麻烦一些,但对于一个开发辅助工具而说,需安装nodejs来运行,也不是问题。