01 前言
随着 ClickHouse 的快速发展,越来越多的开发者关注并在业务中使用 ClickHouse。作为开发人员除了在应用中访问数据库、进行业务数据的分析跟进,还有很重要的一个库表结构的设计。但在 ClickHouse 官方文档推荐的众多第三方开发的可视化管理工具中,不论是商业的还是开源的,绝大多数只关注在其数据的查询、分析、报表呈现、性能等领域,对表结构变更的可视化管理仅 DBeaver、DBM 有少量支持(前者交互较重,后者仅少量场景的新建支持,可参考两个产品的建表界面)。
在前面的文章中我们已经介绍过「NineData:强大的ClickHouse图形客户端工具」,今天我们重点来介绍一下如何通过 NineData 帮助开发者,通过 GUI 的方式创建、修改 ClickHouse 的数据库表结构。
02 新建表
进入 NineData平台后,首先打开左侧的 SQL 窗口,选择我们的目标数据源(此处演示为 ck_集群测试1);在左侧对象导航树找到我们的目标数据库(此处演示为 str_test),在该对象名上鼠标右键选择“创建表”,进入新建表页面,如下:
缺省我们 NineData会提供默认表名、主键 id 等信息,缺省表引擎为 ClickHouse 里最强的 MergeTree,您可按需调整表名、注释、引擎参数、字段、压缩与编码、索引、排序键(key 配置)、投影、约束、分区、过期时间等相关信息。如果您想要在指定逻辑集群的多个节点同时创建同一个表,也可以选择配置 on cluster 参数(此处演示选择 ninedata_cluster);当您选择 on cluster 参数后,我们 NineData提供您一键为“本地表”创建“分布式表”的能力(勾选 创建分布式表,您可在下方 SQL 脚本中实时看到对应的语句);若您暂时不需要创建分布式表,则可取消该勾选项。
另外,如果您的本地表已经创建在每个分片节点上,您想对其再创建一个分布式表,您只需要将表引擎选择为 Distributed ,我们同样为您提供高效的创建方案。当您选择好本地表,我们 NineData将为您一键带入本地表的字段相关定义信息,只需要补充分布式参数就可以完成创建(一般建议填写 sharding_key,此处示例为 user_id;缺省分布式表的表名为“本地表名称_all”)。
在建表语句确认后,点击页面的保存,完成确认即可执行生效到数据库中。执行完成后您在 NineData SQL 窗口可通过如下 SQL 进行确认:
## 查看逻辑集群有哪些分片节点:
## 此处 ninedata_cluster 需要替换为您使用的逻辑集群名
select *
from system.clusters
where cluster='ninedata_cluster';
## 查看本地表、分布式表的创建情况:
## 此处 order 需要替换为您实际定义的本地表的表名称
## 此处str_test 需要替换为您实际使用的ClickHouse数据库名称
SELECT *
from system.tables
where name like 'order%'
and database='str_test';
您还可以按需在SQL1查出来的逻辑集群分片上逐一确认表结构、建表语句等信息。
当前,我们 NineData的「新建表」功能完整支持 ClickHouse 的所有表引擎、引擎参数、字段属性等相关的选择与配置;同时,新建表对集群与分布式的支持,即可以帮您保障多个本地表在集群分片上的一致、分布式表与本地表的一致,更可有效帮您提升研发效率,减少重复工作的投入。
03 修改表
当业务发展发生需求变更时,表结构的修改也是极其常见的需求;此时您只需要在 SQL 窗口左侧导航树找到对应目标表,右键“编辑表”即可进入修改页面,字段等相关信息您可按需修改(注:为了更好的适配 ClickHouse 的特性,部分信息如表引擎等是不支持修改的,具体数据库支持能力参考 ClickHouse 官方文档)。
当前,我们 NineData的「编辑表」功能也完整支持 ClickHouse 的全部变更操作,集群多个分片的一致性变更也已支持。
04 总结
关于 ClickHouse 表结构变更的可视化管理,今天先介绍到这里。当前 NineData 已经完全适配支持ClickHouse所有表引擎的新建及其变更,在集群与分布式表的新建支持上更是做了联动优化,进一步帮助广大开发者提升效率,减少不一致现象的出现。未来,我们将继续迭代优化支持本地表与分布式表的一键联动更新, NineData 让每个人用好数据和云。