You need to enable JavaScript to run this app.
ByteHouse 企业版

ByteHouse 企业版

复制全文
表高级设置
建表模式
复制全文
建表模式

ByteHouse 支持通用建表模式和兼容建表模式,本文将介绍两种建表模式的差异,以及如何开启通用建表模式。

背景信息

ClickHouse 最初为单机数据库,因此只需要本地表(通常为 MergeTree),后来随着进化为分布式数据库,引入了分布式表与分布式 DDL 的概念,因此目前建一张可在分布式系统中使用的表,需要使用分布式 DDL 同时建本地表和分布式表。
ByteHouse 企业版在历史版本中,参考了 ClickHouse 的原创语法,建表需要建分布式表+本地表,并采用分布式 DDL。从 v24.9 版本开始,ByteHouse 企业版支持通用建表模式,支持通过创建一张表来完成历史分布式表+本地表的两张表的建表操作。同时,ByteHouse 也保留了兼容建表模式,方便存量库表数据的维护。

基本概念

  • 本地表(Local Table):用于存储本地数据的表,常用表引擎为 MergeTree 家族,如 HaMergeTree
  • 分布式表(Distributed Table):用于分发查询与插入请求的表,表引擎为 Distributed
  • 分布式 DDL(Distributed DDL):用于指定 DDL 在集群上每个节点创建的语法,用法为在建表 DDL 中 db.table 后添加 ON CLUSTER <集群名>。若不采用分布式 DDL,建表 DDL 仅在执行操作的目标节点生效。

建表模式差异

模式

建表操作

数据表状态

通用建表模式

建 MergeTree 表
(无需分布式 DDL)

一张分布式 MergeTree 表

兼容建表模式

建 MergeTree 表
建 Distributed 表
(都需要分布式 DDL)

界面:
一张分布式逻辑表
底层:

  • 一张 MergeTree 表
  • 一张 Distributed 表

通用建表模式

在通用建表模式下,您可以像使用一张 MySQL 表一样,增删改查 ByteHouse 表,使得非 ClickHouse 用户可以快速开始使用,在不改变可靠性的情况下,支持以下特性:

  • 不需要 ON CLUSTER,自动执行分布式 DDL。
  • 不需要建 Distributed 表。

在这种模式下,MergeTree 表即可作为一个完整的、有分布式查询能力的表使用,我们将新的表称为分布式 MergeTree

兼容建表模式

此模式兼容 ClickHouse 社区版需要同时新建 Distributed 表和 Local 表的逻辑。
在这种模式下,ByteHouse 控制台将一张本地表和一张分布式表合并为分布式逻辑表(Distributed Logical Table),简称逻辑表;逻辑表仅在控制台服务上存在并可见,在引擎不存在。

基本语法对比

以下仅为基本语法对比示例,详细建表语法请参见新建数据库/表:基于 DDL 模版

  • 通用建表模式(新版本支持)

    CREATE TABLE db.table (
        id Int8
        ...
    ) ENGINE = HaUniqueMergeTree(
       '/clickhouse/0/cluster_name/db.table_17658700573/{shard}',
       '{replica}')
    UNIQUE KEY (id)
    ORDER BY id
    SETTINGS enable_common_table_mode = 1, // enable_common_table_mode=1 表示使用“通用建表模式”
    cluster_name = 'bytehouse_test', // 集群名称
    sharding_key='cityHash64(id)';
    
  • 兼容建表模式(传统方式)

    -- 本地表
    CREATE TABLE db.table_local ON CLUSTER bytehouse_test (
        id Int8
        ...
    ) ENGINE = HaUniqueMergeTree(
       '/clickhouse/0/cluster_name/default.db.table_local_17658700575/{shard}',
       '{replica}')
    UNIQUE KEY (id)
    ORDER BY id;
     
    -- 分布式表
    CREATE TABLE db.table ON CLUSTER bytehouse_test As table_local ENGINE = Distributed(bytehouse_test, db,table_local, cityHash64(id))
    

开启通用建表模式

如果您的账号拥有管理员权限,您可以在系统后台开启“通用建表模式”。开通此模式后:

  • 控制台可显示、使用通用建表SQL语句。
  • 命令行仍然兼容传统建表SQL语法。

注意

“通用建表模式”功能开启后无法关闭,请根据业务情况谨慎选择。

操作步骤

  1. 登录 ByteHouse 企业版控制台,单击右上角个人中心按钮,选择系统设置项。
    Image
  2. 您可以分别为指定集群或后续新建集群开启通用建表模式:
    • 指定集群:单击集群右侧的启用按钮,为特定的集群开启通用建表模式。
    • 后续新建集群:勾选新建集群默认开启通用建表,所有后续新建的集群将默认采用通用建表模式。
      Image
最近更新时间:2025.12.22 16:16:49
这个页面对您有帮助吗?
有用
有用
无用
无用