DolphinDB分区数据库教程(二)

文章提供标题、作者与发布日期信息,并概述本文将讲解 DolphinDB 分区原则与特殊分区方案。

Source: https://dolphindb.cn/blogs/45

What this page covers

技能认证特训营第二期正式开启(限时报名)

页面顶部提供活动报名提示与链接入口。

DolphinDB分区数据库教程(二)

文章展示标题、作者与发布日期,并给出本文主题简介。

1. 分区原则

介绍分区的总体目标,并给出分区字段选择与分区粒度大小的建议及原因。

2. 如何把数据均匀分区

说明数据分布不均的影响,并给出使用 cutPoints 函数与示例代码辅助均匀分区。

3. 时序类型分区

讲解时间字段分区的范围预留、按天分区示例,以及分区字段类型与表字段时间类型的兼容规则。

4. 不同表相同分区的数据存放于同一节点

介绍共存储位置分区机制以提升 join 效率,并给出示例与 OLAP/写入特性说明。

5. 多副本机制

说明分区多副本的默认值与参数配置、目的、写入一致性机制,以及开发/生产环境的可靠性等级设置。

6. 事务机制

说明基于磁盘表的事务支持、隔离机制,以及为优化性能设置的事务限制与并发写入规则。

7. 多Writer并行写入

说明利用分区机制进行并行数据加载的思路,并给出 quotes 并行导入示例与避免同分区并发写入的注意事项。

官网与相关教程入口

提供官网链接、试用版下载提示与相关文章/教程入口。

Facts Index

Entity Attribute Value Confidence
DolphinDB分区数据库教程(二)发布日期2021-08-05high
DolphinDB分区数据库教程(二)作者署名Junxihigh
本文内容范围涵盖主题详细讲解 DolphinDB 的分区原则与特殊分区方案,以加深对 DolphinDB 分区数据库的理解medium
分区总体原则目标让数据管理更高效,提高查询和计算性能,达到低延时和高吞吐量medium
DolphinDB 分区字段允许的数据类型整型、日期类型、SYMBOL 类型high
DolphinDB 分区字段不可以作为分区字段的数据类型STRING、FLOAT、DOUBLEhigh
TIME/SECOND/DATETIME 类型分区使用建议注意事项实际使用中要谨慎使用,避免采用值分区,以免分区粒度过细导致创建/查询大量小分区耗时medium
分区字段选择业务相关性建议分区字段应当在业务中相当重要;证券交易领域常用交易日期或股票代码分区medium
DolphinDB 单个分区最大记录条数20亿条high
分区粒度过大风险/影响可能导致并行时内存不足或频繁在磁盘与内存间切换影响性能medium
分区大小经验公式建议上限每个分区解压后在内存中的大小不超过 S/8W(S=数据节点可用内存,W=worker 数量)high
分区大小示例建议上限(示例)工作内存上限 32GB、8 工作线程时,建议单个分区解压后大小不超过 512MBhigh
DolphinDB 子任务划分粒度子任务以分区为单位high
分区粒度过大与并行计算影响会导致无法有效利用多节点多分区优势,把可并行任务转化为顺序计算medium
DolphinDB 适用场景删除/更新支持支持添加数据,不支持对个别行进行删除或更新;修改数据需以分区为单位覆盖全部数据high
DolphinDB 副本复制单位复制粒度在节点之间复制副本数据以分区为单位high
分区粒度建议(未压缩前)原始数据大小范围建议控制在 100M~1G(可结合实际调整)medium
分区粒度过大时的调整方法可选措施(1) 采用组合分区(COMPO);(2) 增加分区个数;(3) 将范围分区改为值分区high
分区粒度过小成本/影响会生成大量子任务,增加数据节点与控制节点及其之间的通讯与调度成本;造成低效小文件磁盘访问;分区元数据驻留控制节点内存,分区数过多可能导致控制节点内存不足medium
分区粒度建议(下限)每分区未压缩前数据量建议不要小于 100Mmedium
高频交易数据分区示例问题与解决思路按交易日期+股票代码值做组合分区会产生许多极小分区;可将股票代码维度改按范围分区,将不活跃股票组合到一个分区以提升性能medium
数据分布不均的影响系统与作业表现会造成系统负荷不均衡;作业延时可能增大(子任务对应分区,最后一个子任务完成才返回结果)medium
cutPoints(X, N, [freq])用途根据数据分布生成分组边界,使数据均匀分布在 N 个组中high
cutPoints(X, N, [freq])参数说明X 是数据;N 是产生的分组数;freq 为与 X 等长数组,元素为 X 中对应元素出现频率high
cutPoints(X, N, [freq])返回值返回具有 (N+1) 个元素的数组high
股票报价数据分区示例建议若按股票代码首字母做范围分区易导致不均衡;建议用 cutPoints 基于样本数据划分分区medium
列表分区适用性除范围分区外,列表分区也是解决数据分布不均的有效方法medium
时序分区建议以时间字段分区时需预留足够空间容纳将来数据medium
DolphinDB 时间分区创建示例按天分区范围创建数据库按天分区:2000.01.01 到 2030.01.01(示例代码:database("dfs://testDate", VALUE, 2000.01.01 .. 2030.01.01))high
时间分区创建行为分区创建时机只有当实际数据写入数据库时,数据库才会真正创建需要的分区high
时间分区字段类型与表字段类型兼容规则数据库定义的分区字段类型与表实际时间类型可以不一致,只要分区字段类型精度 <= 实际数据类型精度;系统自动转换high
按月分区示例的可用表字段类型允许的时间类型当数据库按月(month)分区时,表字段可为 month、date、datetime、timestamp、nanotimestamphigh
分布式 join 的代价原因多个分区表 join 可能耗时,因为涉及分区可能在不同节点,需要跨节点复制数据medium
共存储位置分区机制机制描述确保同一分布式数据库里所有表在相同分区的数据存储在相同节点,以提高连接效率high
DolphinDB 当前版本 join 支持限制对采用不同分区机制的多个分区表不提供连接功能high
quotes 与 trades 示例分区机制quotes 和 trades 两个分区表采用同一个分区机制(示例创建均使用 `date` 与 `sym` 作为分区键)high
DolphinDB设计定位为 OLAP 场景优化设计,主要解决海量结构化数据的快速存储和计算,并通过内存数据库和流数据实现高性能数据处理medium
DolphinDB不适合的场景不适合数据频繁更改的 OLTP 业务系统high
DolphinDB 写入方式类比与方式数据写入与 Hadoop HDFS 类似:快速在每个分区/文件末尾批量插入;插入数据压缩存储到磁盘medium
数据压缩比例一般范围20%~25%medium
基于磁盘的数据表更新/删除限制数据追加到基于磁盘的数据表后,不能快速更新或删除某些符合条件记录;必须以分区为单位修改high
DolphinDB 分区多副本支持情况允许为每一个分区保留多个副本high
dfsReplicationFactor默认值2(默认副本个数)high
dfsReplicationFactor配置位置/方式可修改控制节点参数 dfsReplicationFactor 设置副本数量high
多副本目的容错数据节点失效或磁盘数据损坏时提供容错继续服务medium
多副本目的负载均衡大量并发访问时提供负载均衡,提高系统吞吐量,降低访问延时medium
DolphinDB 数据写入一致性机制通过两阶段事务提交机制,确保写入时同一副本在多节点之间数据强一致性high
dfsReplicaReliabilityLevel作用决定是否允许多个副本驻留在同一台物理服务器的多个数据节点上high
dfsReplicaReliabilityLevel(开发阶段)建议/设置development 阶段允许在一个机器上配置多个节点且允许多个副本驻留同一物理服务器(dfsReplicaReliabilityLevel=0)high
dfsReplicaReliabilityLevel(生产阶段)建议/设置production 阶段需要设置为 1,否则起不到容错备份作用high
dfsReplicaReliabilityLevelLevel 0 含义允许多个副本驻留在同一台物理服务器上high
dfsReplicaReliabilityLevelLevel 1 含义不允许多个副本驻留在同一台物理服务器上(原文表述:不运行)medium
dfsReplicaReliabilityLevel默认值0high
DolphinDB 基于磁盘表事务支持范围对基于磁盘(分布式文件系统)的数据库表读写支持事务,确保原子性、一致性、隔离性、持久化high
DolphinDB 事务隔离隔离级别/机制采用多版本机制实现快照级别隔离;读操作与写操作互不阻塞以优化数据仓库读性能high
DolphinDB 事务限制读写混合一个事务只能包含写或者读,不能同时进行写和读high
DolphinDB 写事务并发限制分区锁规则写事务可跨多个分区,但同一分区不能被多个 writer 并发写入;若分区被事务 A 锁定,事务 B 再锁会抛异常并回滚失败high
DolphinDB 分区机制与分区数量规模能力单个数据表可以支持几百万的分区数量medium
并行数据加载适用场景场景海量数据从其他系统导入 DolphinDB,或实时/准实时写入数据仓库medium
quotes 并行加载示例数据组织方式数据存储在 csv 文件中,每个文件保存一天的 quotes 数据;stockDB 按日期与股票代码复合分区high
多 writer 并行加载要求需确保 writer 不会同时写同一个分区,否则事务失败high
并行加载示例的避免冲突方式依据每文件存一天数据且分区字段包含日期,从而避免加载作业产生重叠事务high
官网链接https://link.zhihu.com/?target=https%3A//www.dolphindb.cn/high
DolphinDB 试用版可获取性页面提示可下载 DolphinDB 试用版low
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high