You need to enable JavaScript to run this app.
导航
新建数据库/表
最近更新时间:2025.12.11 10:46:57首次发布时间:2022.10.28 16:31:50
复制全文
我的收藏
有用
有用
无用
无用

数据库是数据的逻辑分组,每个数据库包含许多表,表是存放数据的地方,由结构化的行和列组成。本文介绍了如何在 ByteHouse 企业版中创建数据库、表以及如何克隆表。

创建数据库

您可以根据业务场景创建多个数据库,同时在创建表时也需要选择目标数据库。因此,如果当前集群中未存在数据库时,请先进行创建。具体操作步骤如下:

  1. 登录 ByteHouse 企业版控制台,进入数据管理界面。
    Image
  2. 在左上角下拉选择已创建成功的集群。如果您需要创建新集群,请参见创建集群
    Image
  3. 在左侧点击➕ 新建按钮,选择创建库
    Image
  4. 自定义数据库名称及描述。
    Image
    其中,数据库名称命名规则如下:
    • 请以字母或下划线开头,支持数字,字母及下划线。
    • 不能使用关键字: 'system', 'default' or 'admin'。
    • 最大长度不超过 63 字符。
  5. 单击创建按钮,完成数据库创建。

创建数据表
  1. 登录 ByteHouse 企业版控制台,进入数据管理界面。
    Image
  2. 在左上角下拉选择已创建成功的集群。
    Image
  3. 在左侧点击➕ 新建按钮,您可通过创建表(可视化建表)、基于 DDL 模板建表批量建表方式来新建数据表。具体操作请参见下文对应章节。
    Image

可视化建表

操作步骤

  1. 单击创建表,进入建表页面。

  2. 配置表基本信息。
    Image

    参数

    配置说明

    集群 & 数据库

    选择已创建的集群和数据库,后续表会创建在此集群和数据库中。

    表引擎

    • 默认为 HaMergeTree,和社区的 ReplicatedMergeTree 引擎基本兼容,详情可参见HaMergeTree
    • 如果需要根据唯一键去重功能,请选择 HaUniqueMergeTree,选此引擎后,才可以选择唯一键、生效范围、版本字段,使用方式参考:HaUniqueMergeTree

    数据表名称 & 描述

    自定义表名称与描述信息。

  3. 配置表的列信息。您可点击上传导入批量导入表的列信息,也可在界面单击添加列按钮手动逐条添加列,或单击下方添加多行手动添加多个列。
    Image
    列信息中:

  4. 配置表的高级键信息。在页面下方配置表的排序键、分区键、分片键等。
    Image

    注意

    排序键、分区键、唯一键均不能为空。

    参数

    配置说明

    排序键(ORDER BY)

    ByteHouse 为提升查询性能,存储数据时将按排序索引的顺序组织数据,核心规则与配置建议如下:

    1. 字段约束:排序键支持非唯一值,但不可设为 Nullable 类型;
    2. 配置建议
      • 优先选择 1-3 个高频作为查询过滤条件的字段,使用频率越高,排序优先级应越高;
      • 若多个字段使用频率相近,建议将基数较小的字段置于更优先的排序位置;
    3. 分区字段无需作为排序索引,二者可独立配置。

    注意

    排序键在建表后无法修改,请谨慎操作。

    分区键(PARTITION BY)

    可选类型:

    • 时间类型(Date/DateTime),选择时间类型为最佳实践,仅当选择时间分区时才可设置 TTL(数据生命周期)。分区粒度可选 DAY(按日),HOUR(按小时),MONTH(按月)。

      注意

      建议单天数据量 > 100 亿才考虑按小时分区,或数据量过小时可选按月分区,否则建议采用按日分区。

      • 数字类型(Int / UInt / Float)
      • 字符串类型(String)
    • 如果无需进行分区时,可以不选分区键。
    • 分区字段不可以为 Nullable。

    用于数据分片存储,支持多类型配置。

    • 可选数据类型:
      • 时间类型(Date/DateTime):设置为时间类型为最佳实践。分区粒度可选 DAY(按日)、HOUR(按小时)、MONTH(按月)。仅当分区键设为此类型时,ByteHouse 才支持为表配置 TTL(数据生命周期)。

        注意

        建议单天数据量 > 100 亿考虑按小时(HOUR)分区,或数据量过小时,可选按月分区,否则建议采用按日分区。

      • 数字类型(Int/UInt/Float)
      • 字符串类型(String)
    • 如果无需分区优化查询/管理数据时,可不配置分区键。
    • 分区字段不可为 Nullable 类型。

    数据生命周期(TTL)

    用于设置数据保留规则,生效粒度为表级别。
    数据保留时间是以“分区字段”作为基础进行计算,因此,对于非时间分区的表将无法设置 TTL,系统将强制修改为永久保留。

    • 开启转至冷存储后,对于访问频次较低的数据,可存储在较低价的冷数据盘中,满足高性价比的存储需求。使用 HaUniqueMergeTree 引擎时,不按照本地存储上限进行移动。
    • 开启删除数据后,可将不需要的数据按照时间周期删除,降低存储成本。

    分片键
    (HaMergeTree 引擎需配置)

    分片字段用于确保一列数据均匀分布在集群各节点下,最大化利用集群性能提升查询效率。
    通常选择取经常出现在 Group by 中的字段作为分片字段。
    分片字段仅支持 String/Int/UInt/Date/DateTime/DateTime64 类型,并且不可为 Nullable 类型。

    唯一键
    (HaUniqueMergeTree 引擎需配置)

    唯一键用于选取字段作为数据去重 (upsert) 的判断标准,支持多字段配置。

    • 唯一键(必填):每个表只能有一个唯一键,支持最多 3 个字段构成组合键。如果超过 3 个字段,您可自行计算所有唯一字段的 64 位哈希值,并用该哈希字段作为唯一键。如果是有符号哈希值,则需要使用 Int64 类型。
    • 唯一键作用范围(必填):包含两种类型
      • 如果是【分区粒度唯一】,需保证唯一键在分区内的唯一性。
      • 如果是【表粒度唯一】,需保证唯一键在表内的唯一性。表粒度唯一有额外的写入开销,建议优先使用分区粒度唯一
    • 版本字段(选填):写入相同唯一键的多条数据时,默认保留最新写入的数据。如果指定了版本字段,将保留版本最大的数据。如果使用表粒度唯一,可以额外使用分区表达式作为版本字段,即相同唯一键保留最新分区的数据。

    跳数索引(INDEX)

    若查询条件中包含跳数索引中的字段,可以预先过滤数据、减少 IO,从而加速查询效率。您可以在界面中选择需设置为跳数索引的列,并设置跳数索引的类型。
    当前支持以下类型索引:setminmaxbloom_filtertokenbf_v1ngrambf_v1,支持配置的参数如下:

    • 通用参数
      • GRANULARITY索引粒度):所有类型的索引均支持设置 GRANULARITY,控制台设定的默认值均为 1。通常建议设置为 1,以获得更高的过滤率。GRANULARITY 值越大存储占用越少,相应的过滤效果也可能减弱。当前支持配置的范围为 1~10。
    • 专属参数:不同索引支持配置的参数不同,请按需配置。
      • set:支持设置单个参数,即每个数据块的值集的最大大小。取值范围为 0~256。当该参数设置为 0 时,允许存储无限数量的离散值。如果数据块中值的数量超过该最大容量,索引将为空。
      • minmax:无专属参数。
      • bloom_filter:支持设置允许的“误报率”,取值范围为 0~1。若未指定,默认值为 0.025,此参数为可选配置。不适用于 Map、JSON、Geometry 数据类型。
      • tokenbf_v1:仅适用于 String、FixedString 数据类型,支持设置三个参数:
        • 过滤器大小:以字节为单位,过滤器越大,误报率越低,但存储成本会相应增加;
        • 哈希函数数量:哈希函数数量越多,误报率越低;
        • 布隆过滤器哈希函数的种子值
      • ngrambf_v1:仅适用于 String、FixedString 数据类型,支持设置四个参数:
        • ngram长度
        • 过滤器大小:以字节为单位,过滤器越大,误报率越低,但存储成本会相应增加;
        • 哈希函数数量:哈希函数数量越多,误报率越低;
        • 布隆过滤器哈希函数的种子值

    更多跳数索引的使用说明请参见跳数索引

    注意

    跳数索引在建表后无法通过可视化方式修改,请谨慎操作。

  5. 填写完成后可以单击右下角的创建提交建表任务,若无报错信息,则表示创建成功。

DDL 模板建表

操作步骤

  1. 单击以DDL模版创建,在 DDL 模版页面选择所需的 DDL 模板,单击使用该模版,系统将自动跳转至查询窗口,您可按需修改表字段。
    Image
  2. 修改完成后,选择全部节点,单击运行,即可创建表。
    Image

说明

更多 DDL 模板的说明请参见新建数据库/表:基于DDL模板

批量建表

操作步骤

  1. 单击批量建表,在批量建表页面选择数据库,在编辑框中输入相应建表语句。建表语句详细说明请参见 SQL 语法
    Image

    在编辑框中,您还可以执行以下操作:

    操作

    说明

    下载 SQL

    将编辑器中编辑的 SQL 语句,下载至本地保存。

    上传 SQL

    将需执行的 SQL 语句,以本地文件的形式,通过上传方式,上传至编辑器中批量执行。

    SQL 格式化

    将书写的 SQL 进行格式化操作,增加语句可读性。

    复制 SQL

    可对写好的 SQL 语句进行复制操作。

    清除所有 SQL

    将编辑器中书写好的所有 SQL 语句,进行清除。

  2. 单击优化 SQL,系统将根据内置规则调整 SQL 语句,使其更符合 ByteHouse 建表的最佳实践。

  3. 单击已优化,下一步,在预览表格页面预览表配置信息,确认无误后,单击创建
    系统将提示“批量建表任务已提交”,表示任务提交成功。
    Image

  4. 数据管理页面的列表中单击刷新按钮,在对应的数据库下查看已创建的表。

非可视化方式建表

如果您通过 CLI 客户端、JDBC 或其他非可视化方式建表,相关表结构与数据将会按照 5 分钟周期同步至 ByteHouse 企业版控制台。ByteHouse 支持同步的表引擎及对应同步规则如下:

  • 同步为逻辑表”:关联了 Distributed 表的 HaMergeTree 表或 HaUniqueMergeTree 表,将被同步为“逻辑表”。此类表与在 ByteHouse 企业版控制台上创建的表功能一致,且符合 ByteHouse 建表最佳实践,因此,可在 ByteHouse 企业版控制台上正常执行改表、删除分区、创建导入任务等操作。
  • 同步为自定义表”:未关联 Distributed 表的 HaMergeTree 表或 HaUniqueMergeTree 表,或社区的其他 MergeTree 家族表(如 MergeTree,DuplicatedMergeTree 等),由于不符合 ByteHouse 建表最佳实践,将被同步为“自定义表”。此类表仅在 ByteHouse 企业版控制台上展示,支持查询此类表,但不支持执行改表、删除分区、创建导入任务等操作。
  • 同步为外表”:MySQL、S3、Hive 等 Integration 引擎表,将被同步为“外表”。该类表仅会在 ByteHouse 企业版控制台上展示,支持查询此类表,但不支持执行改表、删除分区、创建导入任务等操作。需注意,Integration 引擎中,Kafka 引擎、RabbitMQ 引擎的表,因查询此类表会导致数据丢失,暂时不会被同步。

克隆表

克隆表是指使用与原始表相同的模式和数据创建新表。
操作步骤

  1. 数据管理页面,单击作为原始表的数据表,进入详情页。

  2. 单击右上角的 ... 按钮,单击克隆

  3. 单击可视化克隆或以 SQL 克隆

    克隆方式

    操作说明

    可视化克隆

    系统将跳转至克隆数据表页面,您可参考可视化建表中的配置说明,配置克隆表的信息。配置完成后,单击克隆,系统将自动创建克隆表。

    以 SQL 克隆

    系统将跳转至 SQL 编辑页面,您可按需调整建表命令。编辑完成后,单击运行,系统将自动创建克隆表。