dolphindb 分区表

📅 发布时间:2026/7/25 5:22:42
dolphindb 分区表 DolphinDB 分区表是将数据按指定列分区列分割存储于不同分区内存或磁盘/分布式的大表结构核心目的是通过‌分区裁剪‌提升查询效率、支持海量数据管理及并行计算 。‌‌核心概念与分类‌定义‌逻辑上是一张表物理上按分区列的值分布到多个子表分区中查询时若条件包含分区列引擎仅扫描相关分区。‌存储形态‌分为‌内存分区表‌适合单节点大规模中间计算和‌分布式分区表‌存储在 DFS支持集群水平扩展与 PB 级数据。‌主要分区类型‌‌RANGE范围分区‌按数值或时间区间划分最常用支持动态扩区适合时间序列 。‌VALUE值分区‌每个唯一值一个分区适合枚举值少且固定的场景如日期、特定 ID字符串含特殊字符可能报错 。‌HASH哈希分区‌按哈希值均匀分布适合数据量大且需均衡负载但单列查询无法裁剪分区 。‌COMPO复合分区‌多列组合多种策略如时间 RANGE 设备 HASH兼顾裁剪与均衡 。‌LIST列表分区‌基于显式值列表划分灵活性介于 VALUE 和 RANGE 之间 。‌‌创建流程与关键参数‌建库‌使用database()指定路径、分区类型及分区方案向量如日期范围或枚举值。‌建表模板‌定义表结构table()明确字段类型。‌实例化分区表‌调用db.createPartitionedTable(template, tableName, partitionColumns, ...)。‌关键参数‌partitionColumns分区列决定数据分布。sortColumnsTSDB 引擎特有分区内排序列最后一列通常为时间用于加速点查和范围查需避免索引键对应数据过少导致性能下降 。compressMethods压缩算法如 delta, lz4。sortKeyMappingFunction哈希降维函数用于减少 TSDB 索引键数量 。‌‌代码示例分布式 RANGE 分区// 1. 创建按日期范围分区的分布式数据库 db database(dfs://demo_db, RANGE, 2024.01.01..2024.12.31); // 2. 定义表结构模板 schema table(1:0, timestampsymbolprice, [TIMESTAMP, SYMBOL, DOUBLE]); // 3. 创建分区表按 timestamp 分区无排序列示例 pt db.createPartitionedTable(schema, trades, timestamp); // 4. 插入数据 data table(2024.01.01T00:00:00..2024.01.02T00:00:00 as timestamp, rand(ABC, 100) as symbol, rand(10.0, 100) as price); pt.append!(data); // 5. 加载查询自动裁剪 2024.01.01 分区 t loadTable(dfs://demo_db, trades); select * from t where timestamp 2024.01.01; ‌‌:ml-citation{ref3,5 appearanceaggregated datacitationList}