开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
由于最近在负责数据库管理工具中的脚本管理模块,特地对市面上的数款产品进行了调研。脚本管理作为数据库管理工具中重要的基础模块之一,在数款典型产品中有着不同的展示菜单以及相似的功能。下面将列举几款具有行业代表性的数据库管理工具产品,通过体验SQL脚本管理以对比其功能差异。
1. 阿里云DMS
阿里云数据管理DMS(Data Management)是一款支撑数据全生命周期的一站式数据管理平台。DMS提供全域数据资产管理、数据治理、数据库设计开发、数据集成、数据开发和数据消费等功能。
阿里云DMS控制台上,关于SQL脚本管理模块的功能简洁却实用,图1是连接了本地MySQL后,连接到某个库的SQL窗口页面,其中“我的SQL”菜单中是脚本管理模块的几个重要功能:脚本列表、添加脚本、管理脚本。
图1 阿里云DMS SQL Console页面
1.1 添加脚本
添加脚本页面如图2所示,需要填写脚本名(尝试脚本命名特殊字符无限制)、脚本可见权限、SQL内容(未进行SQL格式规范校验也可保存)。
图2 添加SQL脚本
1.2 选择脚本(脚本列表)
选择脚本如图3所示,可展示当前的库的所有脚本。如果SQL脚本属性选择了“所有库”,则会显示在所有连接和所有数据库的脚本列表里;如果选择了“当前库”,则只会显示在当前连接的当前数据库。
图3 选择脚本功能
1.3 管理脚本
管理脚本功能界面如图4所示,展示了SQL脚本的所有属性:标题、内容、适用范围、操作(打开、编辑属性、删除)。
图4 管理脚本
1.4 DMS脚本管理模块总结
DMS的脚本管理模块包括了用户对脚本的基本功能需求:SQL文件存储、编辑(标题、内容、适用范围)、列表展示(根据当前库和所有库属性隔离可见性)。但是当前版本的功能类似于demo,还有许多地方可以拓展。
2. DBeaver
DBeaver是一款通用数据库管理工具,免费、跨平台、基于开源框架和允许拓展写作是其功能,它支持任何具有一个JDBC驱动程序数据库。
DBeaver的脚本管理模块主菜单如图6所示,点击“SQL编辑器”可以打开SQL脚本列表,如图7所示。这里的脚本可见性是以connection为隔离条件。
图6 DBeaver的SQL脚本管理模块
图7 DBeaver的SQL脚本列表
可以打开存放脚本的文件夹,如图8所示。并且DBeaver支持全局搜索关键词,如图9所示。
图8 存放SQL脚本文件夹
图9 全局搜索关键词
2.1 DBeaver的脚本管理模块总结
DBeaver的脚本管理功能已经比较完善,偏向于文件系统级别的存储和搜索,关于脚本的可见性是以connection进行区分,而不是表或者库。
3. Snowflake
Snowflake是一款数仓产品,其存储层目前支持Windows Azure、AWS、Google云。而该款产品的脚本管理是在Worksheets上,如图10所示。每个脚本作为一个worksheet进行保存,在SQL窗口的上方可以选择执行脚本的库表。
图10 Snowflake页面的Worksheets功能
左侧connection列表里的查询菜单显示已经保存的SQL语句,如图11所示。并且SQL的可见性是以connection为单位区分,但其实SQL窗口上方可以选择connection和database执行。
图11 Navicat显示已保存脚本
4.ByteBase
ByteBase是一款数据库 DevOps 和 CI/CD 团队协同工具,专为开发者和 DBA 打造。唯一被 CNCF Landscape 收录的 Database CI/CD 产品。本地可以通过docker镜像直接提起来使用。
其SQL编辑器窗口如图12所示。
图12 SQL编辑器窗口
脚本在bytebase这里保存为“工作表”。可见性以用户作为区分,当前用户在不同实例下保存的工作表均可见。
图13 工作表列表
“工作表”不能改标题,只能改内容,可进行分享
图14 分享工作表
5. 数款产品脚本管理模块总结
通过上述几款产品的脚本管理模块体验后,总结对比出其中的一些异同如下表:
| 功能/产品 | 阿里DMS | DBeaver | Snowflake | Navicat | ByteBase |
|---|---|---|---|---|---|
| 脚本列表 | 有 | 有 | 有,以Worksheets管理 | 有 | 有 |
| 脚本标题关键词搜索 | 无 | 有 | 无 | 无,不过可打开文件夹搜索 | 有 |
| 脚本内容全局搜索 | 无 | 有 | 无 | 无 | 无 |
| 创建脚本 | 有 | 有 | 有,以Worksheets管理 | 有 | 有 |
| 删除脚本 | 有,无回收站 | 有,并且本地历史记录可以复原 | 有,无回收站 | 有,无回收站 | 有,无回收站 |
| 脚本分级可见性 | 划分为“当前库”和“所有库”,如果选择了“所有库”,则所有连接都可以看到该脚本 | 以connection为单位划分,选中脚本后可在窗口中选择connection和database | 每个Worksheets对应一个脚本,可以在SQL窗口中选择database和warehouse | 以connection为单位划分,选中脚本后可在窗口中选择connection和database | 通过不同的项目和用户区分,可分享 |
| 脚本规范性校验 | 无 | 无 | 无 | 无 | 无 |
| 脚本上传/下载 | 无 | 可在本地打开存放脚本目录,将SQL放入目录即可 | 可以选择“上传SQL以创建worksheet”,暂无看到下载 | 可在本地打开存放脚本目录,将SQL放入目录即可 | 无 |
通过上述的对比列表,可以看出几款产品在对SQL脚本的“增删改查”功能都比较完善,DBeaver和Navicat因为安装在本地所以搜索SQL脚本方面的功能更为便捷。