# DolphinDB 白皮书 数据库篇

## 内容
前言. iv
第 1 章. 概述. .5
1.1 典型场景和客户 5
1.2 主要功能和特点 .6
1.3 支持平台和部署 .8
第 2 章. 分布式架构. .9
2.1 集群网络架构. 9
2.2 数据分区机制 10
2.3 分布式事务. 11
2.4 计算与存储分离 13
第 3 章. TSDB 存储引擎. 14
3.1 排序列. 14
3.2 存储结构. 15
3.3 数据压缩. .16
3.4 数据写入 .16
3.5 数据查询 .17
3.6 数据更新及删除 18
3.7 TSDB 适用场景. .19
第 4 章. OLAP 存储引擎 .20
4.1 存储结构. 20
4.2 数据压缩. .21
4.3 数据写入 .21
4.4 数据查询 .21
4.5 数据更新及删除 .21
4.6 OLAP 适用场景. 22
第 5 章. SQL 和库内计算 23
5.1 SQL 23
5.2 多范式编程 24
5.3 分布式计算 25
5.4 实时流处理. 26
第 6 章. 安全与容灾 .28
6.1 高可用 28
6.2 备份恢复 .30
6.3 异步复制. .31
6.4 权限管理. .32
6.5 审计操作. .32
第 7 章. 运维. 34
7.1 运维函数库. 34
内容 | iii
7.2 作业管理. 34
7.4 性能监控. 35
第 8 章. 生态 37
8.1 API. 37
8.3 集成开发环境. 38
8.4 可视化 39
8.5 作业调度工具 39
8.6 信创支持. .40
## 前言
在信息技术的新时代,物联网、大数据、人工智能等新兴领域正以空前的速度推动社会进步,数据成为至关重要的生产要素。DolphinDB,作为一个开创性的分布式时序数据库,专为高效管理时间序列数据而设计。DolphinDB,不仅可以处理 PB 级的结构化数据,更将时间线的查询响应时间缩短至毫秒级,读写速度比传统数据库快百倍。在重塑数据处理速度极限的同时,DolphinDB 重新定义了企业对数据的掌控能力。
DolphinDB 提供的多范式编程语言和丰富的内置函数库,极大地简化了复杂数据分析的过程,使得企业能够以前所未有的速度和精确度进行决策分析,从而在激烈的市场竞争中占据先机。其创新的流处理引擎不仅支持高吞吐量和低延迟的实时数据分析,更通过流批一体的设计显著降低了企业的开发与运维成本。此外,DolphinDB 的分布式架构支持 ACID 事务机制,确保了数据的一致性;其高可用架构和数据恢复技术确保了业务的持续运行。
DolphinDB 不仅为企业提供了一套全方位的海量数据处理解决方案,更以其高吞吐、低延迟、安全可靠的特性赋予企业在市场中快速响应的能力,从而保持并扩大其竞争优势。在数据驱动的未来,DolphinDB 正引领着一场关于数据处理和分析的全新革命。
本白皮书将全面详细地介绍 DolphinDB 数据库,旨在帮助用户全面了解其技术优势和商业价值。主要涵盖以下几个方面:
- 功能特点与平台支持
- 分布式架构与事务支持
- 多模存储引擎及适用场景
- SQL 与库内计算
- 安全与容灾
- 运维与生态
## 第 1 章. 概述
DolphinDB 是由浙江智臾科技有限公司(以下简称智臾科技)自主研发的,基于高性能时序数据库的现代化时序数据处理技术栈,底层代码全部由 C++ 实现。
DolphinDB 以时序数据为主要入口,兼顾多模态数据的存取,支持分布式事务、高可用架构、存算分离灵活扩容等特性,提供强大的批计算引擎、开发便利的低延时流计算引擎,内置功能强大的多范式编程语言和基础函数库,允许用户或第三方通过插件扩展领域特色功能,为金融与物联网等行业用户在时序大数据领域提供一站式的、产研一体的商业化解决方案。
DolphinDB 以其产品能力不断获得国际权威第三方分析机构的关注和认可。2022年,DolphinDB 入选 Gartner 发布的《中国数据库管理系统供应商甄选》报告;2023年,DolphinDB 入选 Gartner 发布的《Hype Cycle for Data, Analytics and Al in China, 2023》、《中国数据库市场指南》报告。此外,根据国际数据库排名机构 DB-Engines 2024年3月的排名,DolphinDB 在全球时序数据库中排名第六、在国内排名第一。
DolphinDB 以其产品能力不断获得国际权威第三方分析机构的关注和认可。2022年,DolphinDB 入选 Gartner 发布的《中国数据库管理系统供应商甄选》报告;2023年,DolphinDB 入选 Gartner 发布的《Hype Cydle for Data, Analytics and Al in China, 2023》、《中国数据库市场指南》报告。此外,根据国际数据库排名机构 DB-Engines 在2023年10月的排名,DolphinDB 在全球时序数据库中排名第六、在国内排名第一。
### 1.1 典型场景和客户
DolphinDB 可应用于涉及时序数据处理的诸多行业和场景,包括银行、券商、公募基金、私募基金、交易所等金融机构的投研、交易和风控场景,以及电力、能源、化工、工业制造、供水、快速消费品等行业的数据存储、分析、设备监控和预警等场景。下图列举了 DolphinDB 的部分代表客户。
1 - 概述
## 图 1. 合作伙伴

### 1.2 主要功能和特点
DolphinDB 分布式时序数据库产品主要特点如下:
## 分布式架构
- 自研的分布式存储机制,数据存储在不同的数据节点上,由控制节点统一管理所有分区的元数据信息, 包括分区和副本信息、分区版本号等,保证各节点上分区数据和副本的一致性,提高集群的容错性和可扩展性。
·提供在线和离线扩展方式、支持横向(添加更多节点)和纵向(增加单个节点的资源)扩展系统、支持数据迁移和再平衡。
- 提供控制节点、数据节点和客户端的高可用方案。
- 提供全面灵活的备份和恢复机制。
- 提供高容错性的异步复制方案。
## 多模存储引擎
・支持内存表和 OLAP、TSDB 分布式存储引擎。分别满足不同场景需求:OLAP 引擎采用列式存储,以实现对海量数据的高效查询,特别适用于读取某列进行聚合分析;TSDB 引擎采用 PAX 行列混存,为海量数据提供高效的点查分析性能。
- 支持事务的 ACID。提供快照级别的隔离机制。
- 支持多种无损数据压缩算法,包括 LZ4、delta-of-delta、zstd、字典压缩等,压缩率可达4:1~10:1。
- 支持分级存储,有效区分热数据和冷数据存储,减少存储成本、提高数据可用性。
## 批计算处理
・使用内嵌的分布式文件系统自动管理分区数据及其副本,为分布式计算提供负载均衡和容错能力。
・内置1500多个函数,亦支持自定义函数,适用于多种应用场景。
- 分布式计算框架集成了多种计算模型,包括 pipeline、map-reduce 和迭代计算。
- SQL 语言与函数、表达式结合,支持向量化计算,可以在数据库中进行复杂的数据分析及运算。
- 充分利用多机多核 CPU 资源,高效并行处理海量数据。
## 流数据处理
·支持通过流数据表进行流数据订阅与发布。
-实现亚毫秒级的信息延迟。
·内置时间序列聚合、横截面处理、响应式状态处理、异常检测、多表关联等流式增量计算引擎,提供滑动窗口、累计窗口、统计函数等算子。可通过串联调用计算引擎构建计算流水线,或借助流数据引擎解析器 (streamEngineParser) 自动构建计算流水线。
- 支持历史数据回放,可以从任意偏移量重放历史数据。
- 支持批流一体。
## 多范式编程语言
- 支持命令式编程、函数式编程、向量编程、SQL 编程和 RPC(远程函数调用)编程,表达能力强。
- 支持 SQL-92 标准,并在此基础上扩展了多种功能,例如 asof 连接、分布式表连接、透视表等。此外,DolphinDB SQL 还兼容 Oracle 和 MySQL 等 SQL 方言。
- Python Parser 支持 Python 的部分原生对象、语法以及 pandas 库的部分功能。这将方便用户在 DolphinDB 客户端中使用 Python 语法来访问和操作 DolphinDB 的数据。
1 - 概述
## 良好生态
・丰富的 API,包括 Python,C++,Java,C#,Go,R,JSON 和 JavaScript 等,为开发人员提供了灵活的接口。
- 多样的插件,包括数据导入导出、金融市场、物联网、消息队列、机器学习等,方便扩展数据库的功能。
·模块化设计,包括技术分析指标库、因子指标库、运维函数库、历史数据导入、行情数据接入模块等, 方便功能代码调用及维护。
### 1.3 支持平台和部署
DolphinDB 支持 Linux 和 Windows 操作系统。我们强烈推荐使用 Linux 系统作为生产环境的部署方案。DolphinDB 支持的操作系统及推荐版本见表1-1。DolphinDB 支持单节点部署和集群部署,支持本地部署和云端部署。数据库进程既可以运行在物理服务器,也可以运行在 Docker 容器或虚拟机环境中。
表 1. DolphinDB 支持的操作系统
| 插件分类 | 插件 |
| 数据导入、交互与转换 | aws, feather, hbase, hdf5, hdfs, kdb, matlab, mongodb, mseed, mysql, odbc, parquet |
| 流数据 | 行情数据:amdQuote, insight, nsq |
| 流计算应用:MatchingEngine |
| 消息队列 | HttpClient, kafka , mqtt, zmq |
|
物联网数据处理与传 opc, opcua, signal 输 | |
| 机器学习 | libsvm, xgboost |
| 其它工具 | py, zlib, gp, formatArrow, orc |
8 - 生态
## 表 4. 插件列表 (续)
### 8.3 集成开发环境
DolphinDB 提供了集成开发环境(Integrated Development Environment,IDE),包括 VS Code、Web、GUI 等,帮助开发人员更高效地进行数据库应用程序的开发、调试和管理。
## VS Code 插件
VS Code 是由微软开发的一款轻量、高性能且具有极强扩展性的代码编辑器,深受开发者欢迎。为了方便用户进行开发,DolphinDB 开发了 VS Code 插件,使用户能够在 VS Code 中编写和运行 DolphinDB 脚本,执行创建、连接、查看 DolphinDB 数据库等一系列操作。该插件具有以下特点:
- 代码高亮。
- 关键字、常量、内置函数的代码补全、内置函数文档和参数提示。
- 终端展示代码执行结果以及 print 输出。
- 在底栏中展示任务执行状态,点击后可取消作业。
- 在底部面板中展示表格、向量、矩阵等数据结构;在浏览器弹窗中显示表格。
- 在侧边面板中管理多个数据库连接,展示会话变量。
- 脚本调试功能,包括实时追踪、变量值显示和函数调用栈信息。
## Web
Web 集群管理提供了一个通过浏览器对 DolphinDB 集群进行操作的便捷界面。它支持以下功能:
·集群总览:Web 提供了可以查看集群,通过该页面开启或关闭数据节点和计算节点,可以查看并修改各个节点的配置参数,也可以查看各个节点的任务负载、内存和 CPU 使用量等信息。
・交互编程:在该页面可以编写脚本,并在浏览器中查看数据库、变量、数据、日志内容。通过界面上的数据库浏览器,用户可以以低代码的方式创建数据库和数据表、添加列和注释,以及查看已创建数据库及其所属表的信息。
- 查询向导与脚本查询:Web 界面提供了向导查询和脚本查询两种方式。向导查询通过简单的表单填写, 帮助用户设置查询条件,并动态生成 SQL 语句,使用户无需深入了解复杂的 SQL 语法即可轻松查询数据。查询成功后,用户可以直接预览并导出 CSV 格式的结果数据。对于熟悉 SQL 的用户,脚本查询功能允许他们直接在界面上编写和执行 SQL 脚本,灵活自由地查询数据,并同样支持结果的预览和导出。
- 数据面板(Dashboard):Dashboard 是一个功能全面的数据可视化工具,通过直观的图表展现,帮助用户更深入地理解和利用数据。它支持多种图表类型,用户可以根据需求自定义布局、颜色和数据源,实现个性化的数据展示。同时,数据面板还支持实时数据更新,确保用户始终掌握最新的信息。
·作业管理与流计算监控:Web 端的作业管理界面提供了查看、停止和删除作业的功能,方便用户对作业进行统一管理。而流计算监控功能则实时监控各类流计算任务的状态,包括发布订阅状态、引擎状态和流数据表状态等,帮助用户随时掌握流计算任务的运行情况。
GUI
GUI 是 DolphinDB 前期开发的一款基于 Java 的图形化界面工具。它可以在所有支持 Java 的操作系统上运行,包括但不限于 Windows、Linux 以及 Mac 系统。它为用户提供了直观且便捷的操作体验,通过 GUI 可以方便地管理 DolphinDB 脚本、模块,查看运行结果、与数据库进行交互等。GUI 具有快速、功能全面、用户友好的特点,适用于管理和开发 DolphinDB 脚本、模块和数据库交互,以及查看运行结果等。GUI 提供了友好的编程界面,包括文本查找替换、保留字高亮显示、系统函数提示、行号显示、选择部分代码执行、执行结果浏览、日志信息、临时变量浏览和数据库浏览等功能。通过 Project 浏览器,用户可以轻松查看和管理所有项目;通过 Database 浏览器,用户可以查看所有 DFS 数据库及其分区表的模式。
### 8.4 可视化
DolphinDB 自身已集成 Dashboard 提供计算结果、流数据实时可视化的方案。
此外,与众多第三方前端可视化组件集成,提供数据展示、实时监控、BI 报表分析等强大功能。
图 11. DolphinDB 前端可视化支持

### 8.5 作业调度工具
DolphinDB 内置了脚本语言和丰富的函数库,可用于实现数据存储、计算、分析、仿真和监控等任务。当任务较为简单,不存在依赖关系时,可以使用 DolphinDB 内置的 scheduleJob 功能编排作业。当涉及到任务之间复杂依赖关系时,推荐使用 Airflow 和 DolphinScheduler 等专业的作业调度工具。DolphinDB 已经与 Airflow 和 DolphinScheduler 进行了深度集成,构建了一个强大的数据处理和调度系统。
Airflow 是一个可编程、调度和监控工作流的平台,它允许用户定义一组有依赖关系的任务,并按照依赖关系依次执行。通过 DolphinDBOperator,Airflow 可以连接 DolphinDB 数据库,实现数据写入、查询、计算等操作。这使得用户可以在 Airflow 中按照逻辑指定 DolphinDB 任务,实现任务的编排和调度。
8 - 生态
DolphinScheduler 作为一个分布式、易于扩展的任务调度系统,也支持对 DolphinDB 任务的调度。通过将 DolphinDB 集成到 DolphinScheduler 中,用户可以利用 DolphinScheduler 的调度能力,按照任务之间的依赖关系和条件关系进行编排和调度。这样,任务代码和任务之间逻辑关系的分离使得每个部分都能专注于发挥自己的作用,提高了系统的可维护性和灵活性。
DolphinDB 与作业调度平台的结合,可以帮助用户可以更高效地管理数据ETL作业和任务,提升数据处理效率,并推动业务的快速发展和创新。
### 8.6 信创支持
DolphinDB 于2021年入选信创工委会会员单位,对信创生态有较为完善的支持,且运行在信创服务器及系统上较非新创环境无显著性能差异。
图 12. DolphinDB 信创兼容概览

## 信创 CPU 兼容明细
表 5. DolphinDB 信创 CPU 兼容明细表