DolphinDB 库表创建向导:时序数据规划实践
本页为一篇介绍 DolphinDB 库表创建向导与时序数据规划实践的文章,并包含作者与发布日期等基础信息。
Source: https://dolphindb.cn/blogs/147
What this page covers
- 时序数据规划的背景与常见用户问题
- 库表创建向导的总体方案(物联网与金融)
- 物联网场景向导的概述与面向用户
- 物联网简易版向导流程、引擎与配置规则
- 物联网进阶版向导的高阶配置项
- 金融场景向导的流程与关键规划因素
- 金融场景建表信息的约束与规则
技能认证特训营第二期报名活动
页面顶部包含培训营开营提示与限时报名链接入口。
- 提供“技能认证特训营第二期”的报名链接。
DolphinDB 库表创建向导:时序数据规划实践
文章页展示标题与作者、日期等基础信息。
- 文章标题为“DolphinDB 库表创建向导:时序数据规划实践”。
- 页面包含发布日期信息。
时序数据规划背景与用户痛点
介绍时序数据应用与时序数据库的重要性,并说明用户在数据规划中常见的两类问题。
- 时序数据适用于多类应用场景,例如物联网数据采集与金融交易分析。
- 时序数据库可利用索引与压缩技术存储时序数据,以支持读写效率。
- 用户规划时常需要设计数据结构、存储方案与分区策略以优化查询。
- 常见问题之一是确定数据需求(如类型、结构、关系、粒度与范围)。
- 常见问题之二是选择存储方案并进行性能优化(如索引与分区策略)。
库表创建向导总体方案(物联网与金融场景)
DolphinDB 针对物联网与金融两类场景提供库表创建向导,可收集信息并生成建库建表脚本。
- 向导面向物联网场景与金融场景。
- 向导可根据用户选择收集建库建表信息。
- 向导可生成库表创建脚本。
物联网场景向导概述
说明物联网数据类型(时序/非时序)、一库一表设计偏好,以及简易版与进阶版向导面向的不同用户群体。
- 物联网数据类型可分为时序数据与非时序数据。
- 时序数据指严格时间增长的数据,例如测点采集数据。
- 非时序数据指不随时间严格增长的数据,例如设备监控表中的阈值更新时间。
- 在物联网数据设计中,一库一表可能更符合业务需求(因结构与主键列名差异)。
- 物联网库表创建向导提供简易版与进阶版。
- 简易版面向对数据库不甚了解的用户(如领域业务专家)。
- 进阶版面向对 DolphinDB 领域知识相对了解的用户(如运维人员)。
物联网向导(简易版)流程与规则
简易版通过表单引导填写并生成脚本,隐藏部分配置,并包含引擎选择、列配置方式与常用筛选列规则。
- 简易版会隐藏部分存储与索引配置,并给出默认值以降低复杂度。
- 简易版步骤包含库名、表名、是否时序、数据量、测点数与列配置等信息输入。
- 时序数据选择日增数据量;非时序数据选择总数据量。
- 当为时序数据时需要输入测点数。
- 时序数据或总数据量大于 200 万的非时序数据使用 TSDB 引擎。
- 总数据量小于 200 万的非时序数据使用 OLAP 引擎。
- 列配置需要包含一列用于存储测点信息。
- 在 TSDB 或大数据量场景下,列配置需要时间列与枚举列。
- 在 OLAP 且较小数据量的非时序场景下,列配置需要枚举列。
- 列配置支持手动输入、本地文件导入与服务器文件导入。
- 常用筛选列指查询中经常作为筛选条件的列,位置越靠前越重要。
- OLAP(总数据量小于 200 万的非时序数据)无需选择常用筛选列。
- TSDB 场景下常用筛选列第一列需为时间列,第二列需为设备编号列。
- 脚本生成后可预览,并可直接执行或复制后修改。
物联网向导(进阶版)流程与高阶配置
进阶版在基础信息之外开放高阶配置项,包括存储引擎、并发写入、分区列、数据时间列、常用筛选列与重复数据处理策略。
- 进阶版提供更多高级配置,并将信息填写分为基本信息与高阶信息两步。
- 当为时序数据或非时序总数据量大于 200 万时开放高阶信息。
- 物联网场景的非时序数据也可能包含时间信息,但间隔不定。
- 高阶配置项包含存储引擎选择(OLAP 或 TSDB)。
- 高阶配置项包含是否允许并发写入同一分区。
- 允许并发写入时,锁冲突分区会被尝试写入,且不同 server 版本写入方式可能不同。
- release 200 及之前:数据节点申请分布式锁,失败分区 sleep 后重试直至完成。
- release 300 及之后:controller 统一队列调度,写入可能拆分为多个事务。
- 不允许并发写入时,若多分区写入发生锁冲突,该事务写入全部失败。
- 高阶配置项包含分区列选择,并会依据前置信息推荐分区列个数与类型。
- 物联网时序数据分区层数可根据日增数据量判断。
- 时序数据 1 层分区:只能选择时间列作为分区列。
- 时序数据 2 层分区:第一列为时间列,第二列为设备编号列。
- 非时序数据分区:选择设备编号列作为分区列。
- 高阶配置项包含数据时间列选择(非必选)。
- TSDB 且非时序数据时可展示数据时间列,并可用于查询优化的 sortColumns。
- 高阶配置项包含常用筛选列与唯一值数量,并可作为 sortColumns 用于查询优化。
- 仅 TSDB 引擎可选择常用筛选列(OLAP 分区内不支持索引)。
- 常用筛选列数量不能少于推荐个数,且仅支持可枚举类型(STRING、SYMBOL、CHAR)。
- 高阶配置项包含重复数据处理策略选择。
- 重复数据处理策略包含 ALL、LAST、FIRST。
- 脚本生成后可直接执行,也可返回修改或复制脚本修改。
金融场景向导概述与流程
阐述金融交易数据分析场景中日增量与标的重要性,并给出向导的三个步骤与分支路径。
- 金融领域中,股票交易数据分析被描述为至关重要。
- 金融场景建库建表规划强调日增量与标的重要性。
- 金融场景向导支持新建库表或基于现有库创建数据表。
- 金融场景向导包含“建库信息、建表信息、脚本生成”三个步骤。
- DolphinDB 在金融场景被描述为支持市场数据的实时存储与快速分析(低置信度表述)。
金融场景:建库信息
列出金融场景在现有库或新建库路径下的建库信息填写步骤与存储引擎选项。
- 建库信息步骤包含“选择是否使用现有库”。
- 选择现有库路径下需要“选择现有库”。
- 新建库路径下需要“输入新建库名”。
- 新建库路径下包含“选择日增量”。
- 新建库路径下包含“选择存储引擎:OLAP 或 TSDB”。
金融场景:建表信息与规则
列出金融场景建表信息填写步骤,包括列配置、时间列/标的列/分区列/常用筛选列的约束条件及示例界面引用。
- 建表信息包含“输入新建表名”。
- 金融场景列配置支持手动输入、本地文件导入与服务器文件导入。
- 金融场景表结构必须包含一列时间列。
- 时间列类型包括 DATE、DATETIME、TIMESTAMP、NANOTIMESTAMP。
- 新建库且总数据量大于 200 万时,需要选择严格按时序增长排序的时间类型列用于分区。
- 新建库且数据量条件满足时,需要选择标的列用于分区(仅支持 SYMBOL 与 STRING)。
- 已有库且该库存在分区时,需要选择与已有库分区信息一致的分区列数量与类型。
- 金融场景常用筛选列数量不多于 2 列。
- 金融场景常用筛选列需要为可枚举类型(如 CHAR、STRING、SYMBOL)。
- 生成脚本后提供预览,并可直接执行、返回修改或复制修改。
总结
重申向导面向金融与物联网两类常见场景,通过表单收集信息生成脚本以降低数据规划与建表门槛。
- 向导覆盖金融与物联网两类常见的时序数据库应用场景。
- 向导通过表单收集必要信息以生成建库建表脚本。
- 向导旨在降低对数据库专业知识的依赖,以支持数据规划与库表创建。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 文章 | 发布日期 | 2025-02-12 | high |
| DolphinDB | 提供的功能/工具 | 针对物联网场景和金融场景提供库表创建向导,可根据用户选择收集建库建表信息并生成库表创建脚本 | high |
| 时序数据 | 适用场景 | 适用于现代社会的各类应用场景(如物联网数据采集、金融交易分析) | medium |
| 时序数据库 | 存储方式/技术 | 利用索引和压缩技术存储时序数据,以高效完成读取与写入 | medium |
| 时序数据库用户数据规划 | 常见痛点 | 需要设计数据结构、存储方案、分区策略以实现查询优化 | medium |
| 时序数据库规划问题 | 问题1 | 如何确定数据需求(理解业务需求、确定数据类型/结构/关系、定义粒度与范围;领域知识难以准确应用到数据规划) | high |
| 时序数据库规划问题 | 问题2 | 如何选择适当的数据存储方案并优化性能(选择技术、设计索引与分区策略、考虑数据量/访问模式/性能需求;业务用户理解难度大) | high |
| 物联网场景 | 业务描述 | 物联网设备传感器实时采集环境、设备和过程数据,用于预测性维护与优化分析 | medium |
| 物联网场景数据设计 | 推荐库表模式 | 由于各项目数据结构与主键列名不同,一库一表设计更符合物联网业务需求 | medium |
| 物联网数据类型 | 分类 | 分为时序数据与非时序数据两类 | high |
| 时序数据(物联网语境) | 定义/特征 | 严格时间增长的数据(例如测点采集的数据) | high |
| 非时序数据(物联网语境) | 定义/特征 | 不随时间严格增长的数据(例如设备监控表存储设备ID、点位ID、阈值上下限与阈值更新时间;阈值更新时间间隔不定) | high |
| 物联网库表创建向导 | 版本/类型 | 提供简易版与进阶版 | high |
| 物联网向导简易版 | 主要面向用户 | 对数据库不甚了解的用户(如领域业务专家) | high |
| 物联网向导进阶版 | 主要面向用户 | 对 DolphinDB 数据库领域知识相对了解的用户(如运维人员) | high |
| 物联网向导简易版 | 设计特点 | 隐藏部分存储/索引配置(如存储引擎、分区列),根据用户填写信息提供默认值以降低复杂度 | high |
| 物联网向导简易版 | 输出 | 按界面表单提示填写信息即可生成库表创建脚本 | high |
| 物联网向导简易版 | 步骤包含 | 输入库名、输入表名、选择是否为时序数据、选择日增或总数据量、输入测点数(时序)、列配置、选择常用筛选列 | high |
| 物联网向导简易版数据量选择 | 规则 | 时序数据需选择日增数据量;非时序数据需选择总数据量 | high |
| 物联网向导简易版测点数 | 适用条件 | 为时序数据时需要输入测点数 | high |
| 物联网向导简易版存储引擎选择 | 规则 | 时序数据或总数据量大于200万的非时序数据使用TSDB引擎;总数据量小于200万的非时序数据使用OLAP引擎 | high |
| 物联网场景列配置 | 必要列 | 需要一列用于存储测点信息 | high |
| 物联网向导简易版列配置 | 规则(按引擎/数据量) | 时序数据或总数据量大于200万的非时序数据:需要一列时间列与枚举列;其余情况下:需要一列枚举列 | high |
| 列配置(物联网向导) | 支持方式 | 支持手动输入、本地文件导入、服务器文件导入 | high |
| 列配置-手动输入 | 能力 | 可手动添加列信息,包括列名、数据类型与备注信息 | high |
| 列配置-本地文件导入 | 能力 | 可导入本地数据源文件并解析得到列与列类型 | high |
| 列配置-服务器文件导入 | 能力 | 输入服务器上表格文件绝对路径以解析得到列与列类型 | high |
| 常用筛选列(物联网向导) | 定义/作用 | 查询中经常作为筛选条件的列;位置越靠前表示越重要;唯一值数量用于判断是否需要对数据降维 | high |
| 物联网向导简易版常用筛选列 | 规则(OLAP) | 总数据量小于200万的非时序数据使用OLAP引擎时,无需选择常用筛选列 | high |
| 物联网向导简易版常用筛选列 | 规则(TSDB) | 时序数据或总数据量大于200万的非时序数据使用TSDB引擎时:常用筛选列第一列需为时间列,第二列需为设备编号列 | high |
| 脚本预览(物联网向导) | 用户操作 | 生成脚本后可预览;可直接执行生成的脚本,也可复制脚本进行修改 | high |
| 物联网向导进阶版 | 提供的高级配置 | 提供更多高级配置(如存储引擎、分区列、重复数据处理策略等);信息填写分为基本信息与高阶信息两步 | high |
| 物联网向导进阶版高阶信息开放条件 | 条件 | 当存储数据为时序数据或总数据量大于200万的非时序数据时开放高阶信息 | high |
| 非时序数据(物联网进阶版说明) | 补充说明 | 物联网场景中非时序数据不一定没有时间信息(例如设备监控表含阈值更新时间但间隔不定) | high |
| 物联网向导进阶版高阶信息 | 配置项1 | 选择存储引擎:OLAP 或 TSDB | high |
| 物联网向导进阶版高阶信息 | 配置项2 | 选择是否允许并发写入同一分区 | high |
| 允许并发写入同一分区 | 定义/行为概述 | 当一个事务写入多个分区且某分区被锁定冲突时,系统会完成其他分区写入,并对冲突分区尝试写入;具体写入方式在不同 server 版本有所差异 | high |
| 允许并发写入同一分区(release 200及之前) | 实现方式 | 数据节点计算涉及分区并向controller申请所有分区分布式锁;成功锁定的分区写入并在事务后释放锁;锁申请失败的分区sleep后重试直至完成;可能导致先提交请求饥饿、完成时间无保障 | high |
| 允许并发写入同一分区(release 300及之后) | 实现方式 | 数据节点将写入请求发送到controller;controller统一队列调度,分区可写则通知数据节点写入;一次写入可能被分为多个事务;若回滚可能导致写入只写入部分数据 | high |
| 不允许并发写入同一分区 | 行为 | 一个事务写入多个分区时若某分区被锁定发生写入冲突,则该事务写入全部失败 | high |
| 物联网向导进阶版高阶信息 | 配置项3 | 选择分区列;根据日增量、总数据量、测点等前置信息推荐分区列个数与数据类型 | high |
| 物联网时序数据分区层数 | 规则 | 根据日增数据量判断分区层数 | high |
| 物联网时序数据分区(1层) | 规则 | 需要选择1个分区列,且仅能选择时间列 | high |
| 物联网时序数据分区(2层) | 规则 | 需要选择2个分区列:第一列为时间列,第二列为设备编号列 | high |
| 物联网非时序数据分区 | 规则 | 需要选择1个分区列:设备编号列 | high |
| 物联网向导进阶版高阶信息 | 配置项4 | 选择数据时间列(非必选) | high |
| 数据时间列(物联网进阶版) | 展示条件与用途 | 当存储引擎为TSDB且为非时序数据时展示;当数据含时间信息时可将时间信息列作为数据时间列,该列也将作为sortColumns用于查询优化 | high |
| 物联网向导进阶版高阶信息 | 配置项5 | 选择常用筛选列及其唯一值数量;常用筛选列也将作为sortColumns用于查询优化 | high |
| 物联网进阶版常用筛选列 | 引擎限制 | 仅存储引擎为TSDB时才能选择常用筛选列;OLAP分区内不支持索引 | high |
| 物联网进阶版常用筛选列 | 数量与类型限制 | 系统会推荐常用筛选列个数;选择数量不能少于推荐个数;仅能选择可枚举类型(STRING、SYMBOL、CHAR) | high |
| 物联网向导进阶版高阶信息 | 配置项6 | 选择重复数据处理策略(同分区中sortColumns值相同的数据) | high |
| 重复数据处理策略 | 策略列表 | ALL(保留所有数据)、LAST(仅保留最新数据)、FIRST(仅保留第一条数据) | high |
| 物联网向导进阶版脚本生成 | 生成后操作 | 生成库表创建脚本后可直接执行;可返回上一步修改信息或复制脚本修改 | high |
| 金融领域 | 关键分析场景 | 股票交易数据分析至关重要 | medium |
| DolphinDB(金融场景) | 能力描述 | 能实时存储合处理股票、债券等市场数据,支持快速分析和决策 | low |
| 金融场景建库建表规划 | 重要因素 | 日增量和标的对数据库建库建表至关重要 | high |
| 日增量(金融场景) | 用途 | 帮助预测未来存储需求、设计表结构与索引策略、优化查询性能 | medium |
| 标的类型(金融场景) | 用途 | 不同金融产品数据特征不同,设计数据库时需根据标的类型规划相应表结构和字段 | medium |
| 金融场景库表创建向导 | 支持路径 | 可选择新建库表或基于现有库创建数据表 | high |
| 金融场景库表创建向导 | 主要步骤 | 建库信息、建表信息、脚本生成三个步骤 | high |
| 金融场景-建库信息 | 步骤1 | 选择是否使用现有库 | high |
| 金融场景-建库信息 | 步骤2(现有库场景) | 选择现有库 | high |
| 金融场景-建库信息 | 步骤3(新建库场景) | 输入新建库名 | high |
| 金融场景-建库信息 | 步骤4(新建库场景) | 选择日增量 | high |
| 金融场景-建库信息 | 步骤5(新建库场景) | 选择存储引擎:OLAP 或 TSDB | high |
| 金融场景建表信息 | 步骤1 | 输入新建表名 | high |
| 金融场景建表信息-列配置 | 与物联网相同的支持方式 | 支持手动输入、本地文件导入、服务器文件导入 | high |
| 金融场景表结构 | 必须包含的列 | 必须含有一列时间列,类型包括 DATE、DATETIME、TIMESTAMP、NANOTIMESTAMP | high |
| 金融场景建表信息 | 步骤3(时间列选择)条件与要求 | 新建库场景且总数据量大于200万时选择;需选择严格按时序增长排序的时间类型列(DATE、DATETIME、TIMESTAMP);将按此列对数据分区 | high |
| 金融场景建表信息 | 步骤4(标的列选择)条件与限制 | 新建库场景且总数据量大于200万或日增量大于100万时选择;仅支持SYMBOL和STRING列;用于对数据分区(如股票ID、期货品种列) | high |
| 金融场景建表信息 | 步骤5(分区列选择)条件与约束 | 已有库场景且该库存在分区时选择;分区列数量与数据类型需与已有库分区信息一致 | high |
| 金融场景常用筛选列 | 数量限制 | 数量不多于2列 | high |
| 金融场景常用筛选列 | 类型限制 | 需为可枚举类型(如CHAR、STRING、SYMBOL等) | high |
| 金融场景脚本生成 | 生成后操作 | 点击【生成脚本】按钮生成库表创建脚本;脚本预览界面与物联网场景一致;可直接执行、返回上一步修改或复制修改 | high |
| 库表创建向导(总体) | 覆盖场景 | 覆盖金融与物联网两类时序数据库应用最广泛的场景 | medium |
| 库表创建向导(总体) | 价值主张 | 通过表单收集必要建库建表信息,使用户不需要了解过多数据库专业知识即可完成数据规划和库表创建 | medium |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |