DolphinDB与Aliyun HybridDB for PostgreSQL在金融数据集上的比较

文章提供标题信息,并标注作者署名与发布日期。

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

What this page covers

技能认证特训营第二期报名促销

页面顶部提供活动通知与报名引导信息。

DolphinDB与Aliyun HybridDB for PostgreSQL在金融数据集上的比较(标题、作者与日期)

该部分给出文章标题,并提供作者署名与发布日期。

概述与主要结论

该部分定义两款产品,并概述在时间序列数据集上的对比测试范围、主要结论与适用范围限制。

测试环境

该部分描述两平台部署配置、资源限制、优化器选择,以及数据存放与载入方式。

数据集说明

该部分说明金融时间序列数据的时间范围、记录规模与文件大小,并描述按日文件组织方式。

数据加载对比(分区方案、载入耗时与压缩/空间)

该部分对比两平台的数据分区/分布策略、载入耗时推断,以及压缩格式与磁盘空间占用差异。

查询性能对比(单查询、缓存与分区影响)

该部分对比多类查询的单次执行表现与缓存后耗时,并讨论分区策略对性能的影响与限制。

并发性能对比(简单查询与复杂查询)

该部分描述并发测试方法与并发下的现象,并给出原因解释与复杂查询并发结论。

DolphinDB的性能优势分析(架构与分区能力)

该部分从架构形态与分区能力差异解释性能优势来源。

Facts Index

Entity Attribute Value Confidence
文章发布日期2021-08-05high
文章作者署名Junxihigh
DolphinDB产品定位/描述高性能混合列式数据库和数据分析系统,尤其擅长处理时间序列数据medium
Aliyun HybridDB for PostgreSQL(HybridDB)产品定位/描述阿里巴巴提供的、基于开源 Greenplum 定制的 MPP 架构企业级通用数据仓库产品medium
对比测试范围测试内容在时间序列数据集上进行性能对比测试,涵盖 CSV 文件加载、单个查询执行、并发查询执行high
对比测试总体结论总体表现所有测试中 DolphinDB 均表现更出色medium
数据加载测试(DolphinDB vs HybridDB)速度倍数DolphinDB 的速度是 HybridDB 的 3 倍high
查询测试(DolphinDB vs HybridDB)速度领先幅度DolphinDB 领先 HybridDB 约 1~2 个数量级high
并发查询测试(DolphinDB vs HybridDB)性能优势DolphinDB 仍保持 1 个数量级以上优势,且并发用户增加时优势更明显medium
结论适用范围适用限制本测试仅限于时间序列数据,结论不适用于更为通用的数据领域high
DolphinDB 测试部署节点规格部署在 5 个 ecs.r5.large 节点上high
DolphinDB 测试节点操作系统Ubuntu 16.04high
DolphinDB 测试节点处理器Intel Xeon Platinum 8163 (2 Cores)high
DolphinDB 测试节点内存16 GBhigh
DolphinDB 测试节点硬盘150 GB SSDhigh
HybridDB 测试部署配置/节点数采用 2C SSD 配置,拥有 4 个计算节点high
HybridDB 测试计算节点处理器2 Coreshigh
HybridDB 测试计算节点内存16 GBhigh
HybridDB 测试计算节点硬盘160 GB SSDhigh
DolphinDB 集群角色与资源限制节点与执行资源1 个主节点、4 个计算节点;配置 8 个 worker 和 2 个 local executor;每个计算节点限制使用 12 GB 内存high
HybridDB 测试设置优化器选择开启 Pivotal Query Optimizer 时表现更差;报告中默认只使用 Legacy Query Optimizerhigh
HybridDB 测试设置每计算节点段数据库数量每个计算节点 2 个段数据库high
数据源与载入方式CSV 数据存放位置与获取方式压缩为 gzip 的 CSV 数据存放在阿里云 OSS;DolphinDB 通过内网获取后解压并加载;HybridDB 通过 oss 协议定义外部表从内网传输、解压并加载high
测试数据集时间范围2007 年 8 月的股票报价数据high
测试数据集记录数约 65.6 亿条记录high
测试数据集 CSV 文件未压缩大小273 GBhigh
测试数据集 CSV 文件gzip 压缩后大小23 GBhigh
测试数据集文件组织按日存储方式每天的数据保存在一个 CSV 文件中high
数据加载分区方案(DolphinDB)分区键与分区数量使用 date 和 symbol 组合分区;date 产生 23 个值分区;symbol 产生 128 个范围分区;分区总数 23*128=2944;每个分区写入两个副本high
数据加载分区/排序设置(HybridDB)分布/分区与 sort key 使用根据 symbol 散列分布数据,根据 date 按日期范围分区;测试中未使用 sort key(因其在压缩/不压缩情况下带来不到 10% 的性能变化)high
HybridDB 数据载入时间推断计算方式与结果可认为数据传输与解压时间与 DolphinDB 基本一致,因此载入时间可认为是 90-9-12=69 分钟medium
数据载入速度对比(DolphinDB vs HybridDB)速度倍数DolphinDB 数据载入速度约为 HybridDB 的 3 倍high
DolphinDB压缩格式采用 LZ4 格式的压缩high
HybridDB(基于开源 Greenplum)不支持的压缩格式不支持 QuickLZ 格式high
HybridDB压缩方式采用 ZLIB 的 3 级压缩high
压缩后磁盘空间占用对比HybridDB 压缩后占用28G(少于 DolphinDB 的 51G)high
压缩后磁盘空间占用对比DolphinDB 压缩后占用51Ghigh
DolphinDB 空间占用解释双副本影响表中 DolphinDB 空间占用达到 102G 是因为有两个副本high
查询性能测试查询数量与类型覆盖分别测试 8 种查询,涉及过滤、排序、分组和聚合;覆盖局部扫描到全表扫描high
HybridDB 对第 7 条查询的支持问题表现系统压力大时会出现内部错误(Unexpected Internal Error),因此 HybridDB 测试中除去第 7 条查询high
单个复杂查询性能(DolphinDB vs HybridDB)加速倍数范围DolphinDB 比 HybridDB 快 3~240 倍high
单个复杂查询测试方法重复次数与取值每条查询连续进行 2 次,表中列出第 1 次结果high
DolphinDB 缓存后第 2 次测试用时(查询 1~3)用时分别为 26ms、16ms、16mshigh
DolphinDB 显著领先的查询编号查询编号第 1、3、6 条查询high
DolphinDB 显著领先查询的共同点where 条件特征where 分句中均指定了明确的 symbolhigh
HybridDB 分区能力范围分区对字符串的支持不支持字符串类型的范围分区high
HybridDB 在涉及不同 symbol 查询时的性能原因解释原因分区不够灵活导致部分节点实际扫描的数据远多于目标数据而性能劣化medium
并发简单查询测试数据选择股票选择规则从 2007 年 8 月股票数据中选择记录最多的 100 只股票;这 100 只股票记录占总记录的 20%high
并发简单查询测试方法并发连接数建立 n(1~32)个数据库连接,每个连接代表一个并发用户high
并发简单查询测试方法单连接生成查询方式每个连接从 100 只股票中随机选取 10 只,并在 2007 年 8 月随机选择一个交易日生成简单查询high
并发简单查询示例SQL 示例select * from quotes where date = 2007.08.21 and symbol="AMZN"high
并发简单查询测试方法请求发送方式通过 n(1~32)个连接,将生成的 10 个查询的批处理请求同时发送给数据库high
并发简单查询测试方法重复次数与统计口径每个并发用户数量的测试执行三次,取平均用时作为结果high
HybridDB 集群计算节点资源CPU 核心数每个计算节点提供 2 个 CPU 核心high
HybridDB(由 PostgreSQL 实例构成)单查询 CPU 利用限制每条查询只会用到 1 个 CPU 核心high
HybridDB 并发耗时变化现象随并发增加的趋势并发用户数每增加 2 个时,消耗时间显著增加medium
HybridDB 资源浪费原因(并发奇数用户)原因只有奇数个并发用户时另一个核心会处于空闲状态,导致资源浪费medium
HybridDB MPP 架构并发查询执行特性节点利用情况数据分散到各节点后,最终只有拥有相关数据的节点会执行查询,其他节点会闲置medium
并发简单查询与分区瓶颈关系(HybridDB)瓶颈来源简单 select 查询涉及 symbol,HybridDB 会有较大性能瓶颈(关联第 5 节结论)medium
并发复杂查询测试设置查询数量测试前述 7 个复杂查询(8 个复杂查询除去在 HybridDB 上无法使用的第 7 条)high
并发复杂查询单用户耗时验证与单独测试关系单用户执行 7 个查询的耗时与 7 个查询单独测试耗时累加相接近,符合预期medium
并发复杂查询结论优势趋势随着并发用户增加,DolphinDB 对 HybridDB 的优势不断扩大,与并发简单查询结果吻合medium
并发数量继续增加的预期趋势判断可预见随着并发数量持续增加,DolphinDB 对 HybridDB 的优势会不断扩大low
DolphinDB 性能优势来源(概述)来源包括内存管理优化、字符串处理优化、算法优化等,但最主要来源于基于分布式文件系统的架构设计medium
HybridDB(基于 Greenplum 的集群)集群组成由一个主节点(master node)和多个承载 PostgreSQL 实例的计算节点(segment host node)组成high
HybridDB架构类型传统大规模并行处理(MPP)架构;数据存储和计算查询采用树状结构medium
DolphinDB架构形态采用更为扁平的网状结构,每个节点不分主次medium
树状结构的潜在问题(对比解释)影响容易出现数据分布不均衡;用户不饱和或查询数据只在部分节点时会出现资源闲置和系统瓶颈medium
HybridDB支持的分区类型支持范围分区、值分区和组合分区high
HybridDB范围分区类型限制范围分区只支持数值或时间类型high
DolphinDB支持的分区方案支持值分区、范围分区、散列分区和列表分区等多种方案;每个表可按多个字段进行组合分区;范围分区支持字符串等非数值类型high
DolphinDB单表支持的分区数量级支持百万级以上的分区数medium
DolphinDB 分区粒度对性能的影响(解释性结论)效果分区粒度更细,不易出现数据或查询集中到少数节点;多列范围查询或点查询需要扫描的数据块更少,响应更短,并发性更出色medium