--- name: dolphindb description: DolphinDB 时序数据库完整技术文档与最佳实践。包含1490个技术文档 + 3份官方白皮书。涵盖数据库设计、流计算、量化回测、函数查询等全场景。 version: 2.0.0 source: https://docs.dolphindb.cn + Official Whitepapers author: Optimized by Skill Creator tags: - database - time-series - streaming - quantitative-trading - backtesting - dolphindb --- # DolphinDB 完整技术文档与实战指南 **版本**: 2.0.0 (优化版) **文档数量**: 1490 个技术文档 + 3 份官方白皮书 **DolphinDB版本**: 3.00.4 **更新时间**: 2026-01-22 **文档来源**: https://docs.dolphindb.cn --- ## 📚 核心资源概览 ### 🎯 官方白皮书(深度最佳实践) 提供生产级架构设计和完整工作流程指南: 1. **[数据库白皮书](references/whitepapers/database.md)** (1073行) - DolphinDB 核心架构与分布式设计 - TSDB vs OLAP 存储引擎详解 - 分区策略、高可用、备份恢复 - SQL优化与库内计算 - **适用场景**: 系统架构设计、性能优化、生产部署 2. **[流数据白皮书](references/whitepapers/streaming.md)** (2279行) - 流计算框架与发布订阅机制 - 7大流计算引擎详解 - 流批一体架构与历史回放 - 金融与物联网场景应用 - **适用场景**: 实时计算、CEP、流式ETL 3. **[中高频回测白皮书](references/whitepapers/backtest.md)** (2205行) - 完整回测系统架构 - 数据回放与模拟撮合引擎 - DolphinScript/Python/C++ 策略开发 - 量化策略实战案例 - **适用场景**: 量化回测、算法交易、策略研发 ### 📖 在线技术文档(1490篇) 按功能领域分类的完整API参考和操作指南: | 分类 | 文档数量 | 说明 | |------|---------|------| | 函数参考/其他函数 | 1171 | 系统函数、网络函数等 | | 其他 | 97 | 其他技术文档 | | 函数参考/统计函数 | 61 | 相关性、协方差、标准差等统计指标 | | 函数参考/数学函数 | 42 | 基础数学运算、三角函数、对数等 | | 函数参考/SQL函数 | 41 | 查询、关联、聚合等SQL操作 | | 函数参考/时间序列函数 | 26 | 日期时间处理、时序窗口计算 | | 流数据处理 | 22 | 流表、订阅、流计算引擎 | | 数据库核心 | 13 | 存储引擎、分区、事务、高可用 | | 部署与配置 | 9 | 集群部署、参数配置 | | 函数参考/字符串函数 | 5 | 字符串操作、正则表达式 | | API与连接器 | 1 | Python、Java、C++ API | | 运维管理 | 1 | 监控、备份、权限管理 | | 教程与示例 | 1 | 快速入门、场景案例 | **完整文档索引**: 详见 [CATALOG.md](CATALOG.md) --- ## 🚀 常见问题快速导航 ### 新手入门 - **如何快速上手DolphinDB?** → [关于 DolphinDB](references/doc_1201.md) - **如何部署集群?** → [分布式架构](references/doc_6249.md) - **如何选择存储引擎?** → 查阅 [数据库白皮书](references/whitepapers/database.md) 第3-4章 ### 数据库设计 - **如何选择分区策略?** → [数据分区](references/doc_9485.md) + [数据库白皮书](references/whitepapers/database.md) - **TSDB vs OLAP 如何选择?** → [TSDB存储引擎](references/doc_6240.md) 和 [OLAP存储引擎](references/doc_7837.md) - **如何优化查询性能?** → [数据库白皮书](references/whitepapers/database.md) 第5章 ### 流计算开发 - **如何实现实时计算?** → [流数据白皮书](references/whitepapers/streaming.md) - **流计算引擎有哪些?** → [流数据白皮书](references/whitepapers/streaming.md) 第3章 - **如何实现流批一体?** → [流数据白皮书](references/whitepapers/streaming.md) 第4章 ### 量化回测 - **如何搭建回测系统?** → [回测白皮书](references/whitepapers/backtest.md) - **如何实现模拟撮合?** → [回测白皮书](references/whitepapers/backtest.md) 第3章 - **如何进行中高频回测?** → [回测白皮书](references/whitepapers/backtest.md) 第4-7章 ### 高级功能 - **如何实现高可用?** → [高可用](references/doc_3934.md) - **如何进行数据备份?** → [数据库白皮书](references/whitepapers/database.md) 第6章 - **如何管理权限?** → [数据库白皮书](references/whitepapers/database.md) 第6.4节 --- ## 📝 常用代码示例 ### 1. 创建TSDB存储引擎的分区表 ```dolphindb // 组合分区: VALUE(日期) + HASH(股票代码) db_date = database("", VALUE, 2024.01.01..2024.12.31) db_sym = database("", HASH, [SYMBOL, 10]) db = database("dfs://stock_data", COMPO, [db_date, db_sym]) // TSDB引擎,支持排序列和去重 schemaTable = table( 1:0, `trade_time`symbol`price`volume, [TIMESTAMP, SYMBOL, DOUBLE, LONG] ) pt = db.createPartitionedTable( table=schemaTable, tableName="stock_tick", partitionColumns=`trade_date`symbol, sortColumns=`symbol`trade_time, // 排序键 keepDuplicates=LAST, // 去重策略 engine="TSDB" ) ``` ### 2. 创建OLAP存储引擎的分区表 ```dolphindb // OLAP引擎适合追加式写入和批量分析 db = database("dfs://stock_analysis", VALUE, 2024.01M..2024.12M) schemaTable = table( 1:0, `trade_date`symbol`open`high`low`close`volume, [DATE, SYMBOL, DOUBLE, DOUBLE, DOUBLE, DOUBLE, LONG] ) pt = db.createPartitionedTable( table=schemaTable, tableName="daily_kline", partitionColumns=`trade_date, engine="OLAP" ) ``` ### 3. 流计算 - 实时K线合成 ```dolphindb // 1. 创建流表 share streamTable(1:0, `time`sym`price`vol, [TIMESTAMP, SYMBOL, DOUBLE, INT]) as tickStream share streamTable(1:0, `time`sym`open`high`low`close`volume, [TIMESTAMP, SYMBOL, DOUBLE, DOUBLE, DOUBLE, DOUBLE, LONG]) as klineStream // 2. 创建时序聚合引擎 tsEngine = createTimeSeriesEngine( name="kline_1min", windowSize=60000, // 1分钟窗口 step=60000, metrics=<[first(price), max(price), min(price), last(price), sum(vol)]>, dummyTable=tickStream, outputTable=klineStream, timeColumn=`time, keyColumn=`sym ) // 3. 订阅流表 subscribeTable(tableName="tickStream", actionName="kline", handler=append!{tsEngine}) // 4. 插入数据测试 insert into tickStream values(2024.01.01T09:30:00.000, `600000, 10.5, 1000) ``` ### 4. 中高频回测完整流程 ```dolphindb // 1. 清理环境 try{ unsubscribeTable(tableName="replayStream", actionName="backtest") }catch(ex){} try{ dropStreamEngine("backtestEngine") }catch(ex){} // 2. 创建回放流表 share streamTable(1:0, `time`sym`price`vol, [TIMESTAMP, SYMBOL, DOUBLE, INT]) as replayStream // 3. 创建回测引擎(需要加载回测插件) loadPlugin("/path/to/backtest_plugin.so") backtestEngine = createBacktestEngine( name="my_strategy", initialCapital=10000000, commission=0.0003 ) // 4. 订阅回放数据 subscribeTable(tableName="replayStream", actionName="backtest", handler=backtestEngine) // 5. 数据回放 histData = loadTable("dfs://stock_data", "stock_tick") ds = replayDS(sqlObj=