• Apache Kudu的Schema设计(column数据类型)


    1. 表Schema介绍

    Kudu的表是一种结构化数据模型,包含3个方面:分区设计、primary key设计、column设计

    2. Column设计

    2.1 支持的列数据类型

    支持的列数据类型如下:

    • boolean
    • 8-bit有符号integer
    • 16-bit有符号integer
    • 32-bit有符号integer
    • 64-bit有符号integer
    • date(32-bit days since the Unix epoch)
    • unixtime_micros(64-bit microseconds since the Unix epoch)
    • single-precision(单精度,32位,IEEE-754浮点数)
    • double-precision(双精度,64位,IEEE-754浮点数)
    • decimal
    • varchar
    • UTF-8 encoded string(不压缩的大小能到64KB)
    • binary(不压缩的大小能到64KB)

    列储存时,默认是不压缩的

    3. Primary key设计

    可以声明一个或多个列作为primary key。primary key的数据类型不能是boolean、float、double。

    insert相同的primary key数据到表,会出现重复键错误

    行删除和更新必须指定主键,不支持范围删除和更新

    3.1 Primary Key Index

    索引是clustered index(聚集索引)。 tablet中的所有行按primary key排序。在primary key进行相等或范围条件过滤,扫描时自动跳过不能满足条件的行

    4. Partitioning分区

    表的数据可以进行分区,一个分区对应一个tablet。多个tablet分布在多个tablet server上。行只能属于一个tablet

    如果写入较多,推荐设计分区将写入分散到多个分区。如果读取较多,推荐设计分区将读取定位到少量的分区

    表创建时没有默认分区,需要指定分区策略。支持range分区和hash分区

    4.1 range分区

    range分区的分区键必须是primary key中的

    需要指定一个或多个split点、上界、下界。如果不指定分区上下界,则默认无界限

    Range Partition Management范围分区管理
    添加分区:不能和已经存在的分区重叠
    删除分区:tablet的数据也会被删除

    4.2 hash分区

    hash分区的分区键必须是primary key中的

    5. Schema Alterations(schema变更)

    支持以下操作:

    • 重命名表
    • 重命名主键列
    • 重命名、添加和删除非主键列

    可以在单个事务操作中进行多个schema变更

    6. Kudu的限制

    • 列数:默认情况下,不建议创建超过300个列的表。过多的列会影响性能且不安全。可以通过给master传递参数--unlock_unsafe_flags --max_num_columns=500进行修改
    • cell大小:编码或压缩之前不能超过64KB,编码压缩后不能超过16KB
    • row大小:单行数据不要大于几百KB
    • 表名和列名:必须使用UTF8编码,不能大于256字节
    • 主键:不可更新主键列的值。不可更改主键列成其它列
    • hash分区:表一旦创建,就不可更改hash分区的规则
    • 分区:分区不能进行拆分和合并
    • 列类型:不允许更改列的类型
  • 相关阅读:
    uniapp中websocket的使用单个长连接
    CIKM 2022 | HGANDTI: 药物-靶点相互作用预测的异构图注意网络
    《快速掌握QML》第五章 组件
    MongoDB CRUD操作:快照查询
    【网络世界】网络基础概念
    全自动模拟布局设计的挑战和机遇
    npm ERR! path /Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3
    五、递归的快速入门
    环境配置、如何安装OpenHarmony HAR
    Linux开发者的CI/CD(3)jenkins pipeline语法学习
  • 原文地址:https://blog.csdn.net/yy8623977/article/details/124176602