使用 NineData GUI 创建与修改 ClickHouse 表结构

简介: 当前 NineData 已经完全适配支持 ClickHouse 所有表引擎的新建及其变更,在集群与分布式表的新建支持上更是做了联动优化,进一步帮助广大开发者提升效率,减少不一致现象的出现。未来,我们将继续迭代优化支持本地表与分布式表的一键联动更新,NineData 让每个人用好数据和云。

01 前言

随着 ClickHouse 的快速发展,越来越多的开发者关注并在业务中使用 ClickHouse。作为开发人员除了在应用中访问数据库、进行业务数据的分析跟进,还有很重要的一个库表结构的设计。但在 ClickHouse 官方文档推荐的众多第三方开发的可视化管理工具中,不论是商业的还是开源的,绝大多数只关注在其数据的查询、分析、报表呈现、性能等领域,对表结构变更的可视化管理仅 DBeaver、DBM 有少量支持(前者交互较重,后者仅少量场景的新建支持,可参考两个产品的建表界面)。

参考两个产品DBeaver、DBM的建表界面.png

在前面的文章中我们已经介绍过「NineData:强大的ClickHouse图形客户端工具」,今天我们重点来介绍一下如何通过 NineData 帮助开发者,通过 GUI 的方式创建、修改 ClickHouse 的数据库表结构。

02 新建表

进入 NineData平台后,首先打开左侧的 SQL 窗口,选择我们的目标数据源(此处演示为 ck_集群测试1);在左侧对象导航树找到我们的目标数据库(此处演示为 str_test),在该对象名上鼠标右键选择“创建表”,进入新建表页面,如下:

NineData SQL窗口.png

缺省我们 NineData会提供默认表名、主键 id 等信息,缺省表引擎为 ClickHouse 里最强的 MergeTree,您可按需调整表名、注释、引擎参数、字段、压缩与编码、索引、排序键(key 配置)、投影、约束、分区、过期时间等相关信息。如果您想要在指定逻辑集群的多个节点同时创建同一个表,也可以选择配置 on cluster 参数(此处演示选择 ninedata_cluster);当您选择 on cluster 参数后,我们 NineData提供您一键为“本地表”创建“分布式表”的能力(勾选 创建分布式表,您可在下方 SQL 脚本中实时看到对应的语句);若您暂时不需要创建分布式表,则可取消该勾选项。

NineData 提供一键“本地表”创建“分布式表”的能力.png

另外,如果您的本地表已经创建在每个分片节点上,您想对其再创建一个分布式表,您只需要将表引擎选择为 Distributed ,我们同样为您提供高效的创建方案。当您选择好本地表,我们 NineData将为您一键带入本地表的字段相关定义信息,只需要补充分布式参数就可以完成创建(一般建议填写 sharding_key,此处示例为 user_id;缺省分布式表的表名为“本地表名称_all”)。

NineData 选择本地表.png

在建表语句确认后,点击页面的保存,完成确认即可执行生效到数据库中。执行完成后您在 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 修改表.png

当前,我们 NineData的「编辑表」功能也完整支持 ClickHouse 的全部变更操作,集群多个分片的一致性变更也已支持。

04 总结

关于 ClickHouse 表结构变更的可视化管理,今天先介绍到这里。当前 NineData 已经完全适配支持ClickHouse所有表引擎的新建及其变更,在集群与分布式表的新建支持上更是做了联动优化,进一步帮助广大开发者提升效率,减少不一致现象的出现。未来,我们将继续迭代优化支持本地表与分布式表的一键联动更新, NineData 让每个人用好数据和云。

目录
相关文章
|
3月前
|
消息中间件 监控 数据挖掘
NineData:从Kafka到ClickHouse的数据同步解决方案
NineData 提供了强大的数据转换和映射功能,以解决 Kafka 和 ClickHouse 之间的格式和结构差异,确保数据在同步过程中的一致性和准确性。
124 2
NineData:从Kafka到ClickHouse的数据同步解决方案
|
SQL 关系型数据库 MySQL
NineData:强大的ClickHouse GUI管理工具
NineData除了可以支持以GUI的方式访问和管理ClickHouse之外,NineData还支持MySQL到ClickHouse的数据迁移/同步/复制功能,相比ClickHouse内置的集成引擎,NineData很好的解决了上游MySQL DDL变更时的链路稳定性以及复制时对象映射等问题,可以帮助用户高性能、高效率、高稳定性的完成从MySQL到ClickHouse的数据复制。
1112 0
NineData:强大的ClickHouse GUI管理工具
|
2月前
|
存储 关系型数据库 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 多对一和多对多
【6月更文挑战第7天】该文探讨数据模型,比较了“多对一”和“多对多”关系。通过使用ID而不是纯文本(如region_id代替"Greater Seattle Area"),可以实现统一、避免歧义、简化修改、支持本地化及优化搜索。在数据库设计中,需权衡冗余和范式。文档型数据库适合一对多但处理多对多复杂,若无Join,需应用程序处理。关系型数据库则通过外键和JOIN处理这些关系。文章还提及文档模型与70年代层次模型的相似性,层次模型以树形结构限制了多对多关系处理。为克服层次模型局限,发展出了关系模型和网状模型。
37 6
|
2月前
|
XML NoSQL 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 概念 + 数据模型
【6月更文挑战第5天】本文探讨了数据模型的分析,关注点包括数据元素、关系及不同类型的模型(关系、文档、图)与Schema模式。查询语言的考量涉及与数据模型的关联及声明式与命令式编程。数据模型从应用开发者到硬件工程师的各抽象层次中起着简化复杂性的关键作用,理想模型应具备简洁直观和可组合性。
23 2
|
2月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
28 0
|
2月前
|
SQL JSON NoSQL
【DDIA笔记】【ch2】 数据模型和查询语言 -- 关系模型与文档模型
【6月更文挑战第6天】关系模型是主流数据库模型,以二维表形式展示数据,支持关系算子。分为事务型、分析型和混合型。尽管有其他模型挑战,如网状和层次模型,但关系模型仍占主导。然而,随着大数据增长和NoSQL的出现(如MongoDB、Redis),强调伸缩性、专业化查询和表达力,关系模型的局限性显现。面向对象编程与SQL的不匹配导致“阻抗不匹配”问题,ORM框架缓解但未完全解决。文档模型(如JSON)提供更自然的嵌套结构,适合表示复杂关系,具备模式灵活性和更好的数据局部性。
32 0
|
2月前
|
敏捷开发 存储 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可维护性
【6月更文挑战第4天】本文探讨了Twitter面临的一次发推文引发的巨大写入压力问题,指出用户粉丝数分布是决定系统扩展性的关键因素。为解决此问题,Twitter采用混合策略,大部分用户推文扇出至粉丝主页时间线,而少数名人推文则单独处理。性能指标包括吞吐量、响应时间和延迟,其中高百分位响应时间对用户体验至关重要。应对负载的方法分为纵向和横向扩展,以及自动和手动调整。文章强调了可维护性的重要性,包括可操作性、简单性和可演化性,以减轻维护负担和适应变化。此外,良好设计应减少复杂性,提供预测性行为,并支持未来改动。
32 0
|
2月前
|
缓存 关系型数据库 数据库
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- 可扩展性
【6月更文挑战第3天】可扩展性关乎系统应对负载增长的能力,但在产品初期过度设计可能导致失败。理解基本概念以应对可能的负载增长是必要的。衡量负载的关键指标包括日活、请求频率、数据库读写比例等。推特的扩展性挑战在于"扇出",即用户关注网络的广度。两种策略包括拉取(按需查询数据库)和推送(预计算feed流)。推送方法在推特案例中更为有效,因为它减少了高流量时的实时计算压力。
29 0
|
2月前
|
存储 消息中间件 缓存
【DDIA笔记】【ch1】 可靠性、可扩展性和可维护性 -- part1 可靠性
【6月更文挑战第2天】本书探讨现代数据系统,阐述其在信息社会中的关键作用,包括数据库、缓存、搜索引擎、流处理、批处理和消息队列等组成部分。随着技术发展,工具如Kafka、Spark和Redis等多功能组件使得系统设计更为复杂。面对可靠性、可扩展性和可维护性的挑战,书中强调了容错和韧性的重要性,区分了硬件故障、软件错误和人为错误,并提出了应对措施。可靠性关乎用户数据、企业声誉和生存,因此是系统设计的核心考量。
36 0
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
有了原理图,可以设计硬件PCB,在设计PCB之间还有一个协同优先动作,就是映射封装,原理图库的元器件我们是自己设计的。为了更好的表述封装设计过程,本文描述了CH340G和MAX232芯片封装创建(SOP-16),并将原理图的元器件关联引脚封装。
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件