DolphinDB 用户入门指南之金融篇(4)

本文提供文章基础信息(如标题与发布日期),并围绕 DolphinDB 数据增删改查(增加、查询、删除、更新)进行说明与示例展示。

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

What this page covers

技能认证特训营第二期报名活动

页面顶部提供活动报名提示,并给出报名链接。

DolphinDB 用户入门指南之金融篇(4)

本节给出文章的基础信息,包括标题、作者与发布日期等。

5. 数据增删改查

本章围绕 DolphinDB 中数据增加、查询、删除、更新的操作方式与示例展开。

5.1 增加数据

本节介绍三种写入数据方式,并展示向快照表追加股票数据的示例与相关内容。

5.2 查询数据

本节对比内存对象与分区/分布式表的访问方式差异,并给出 SQL 查询示例。

5.3 删除数据

本节解释 DolphinDB 删除场景与机制(硬删/软删),并对删除方法进行对比与性能建议说明。

5.4 更新数据

本节说明更新与 MVCC/TSDB 机制关系,并给出 update 与 upsert! 的示例及注意事项。

5.5 下一步阅读

本节提供 SQL 编程与增删改查相关主题的延伸阅读链接。

Facts Index

Entity Attribute Value Confidence
文章发布日期2025-01-07high
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high
DolphinDB 写入数据方式支持的写入方式tableInsert 函数、append! 函数、insert into 语句high
tableInsert 函数推荐与行为描述推荐;支持任意表对象写入;返回写入记录数high
append! 函数行为描述支持任意表对象写入;会直接对原表进行修改high
insert into 语句写入分布式表版本/配置条件从 3.00.1 版本开始,若配置 enableInsertStatementForDFSTable 配置项,则 insert into 也支持分布式表写入high
insert into 语句适用场景与支持范围适合数据量较少场景;支持内存表写入high
tableInsert 示例示例输出的写入记录数re2 // output: 4802high
配置项 enableInsertStatementForDFSTable示例查询结果getConfig(`enableInsertStatementForDFSTable) // truehigh
DolphinDB 内存对象访问访问能力内存对象(向量、矩阵、内存表)可通过切片/索引下标取数,并可直接用于函数计算high
分区表/分布式表访问访问限制对于分区表、分布式表仅支持使用 SQL 语句进行访问high
普通内存表支持的访问方式支持索引/切片(t[1], t[0:3])、支持函数 sum/cumsum、支持 SQL selecthigh
分区内存表/分布式表(dfs 分区表、维度表)访问限制与支持项不支持索引/切片;不支持直接函数 sum/cumsum;支持 SQL selecthigh
DolphinDB 删除能力支持的删除粒度支持按行、按分区以及全表删除等多种方式high
DolphinDB OLAP 引擎删除机制采取硬删除(物理删除)high
DolphinDB TSDB 引擎删除机制支持软删除(逻辑删除)和硬删除两种方式high
硬删除机制删除流程1) 分区剪枝确定涉及分区;2) 取出对应分区所有数据到内存后按条件删除;3) 将删除后的分区数据写回新目录(新的 CHUNK 目录,默认“物理表名_cid”),旧文件定时回收(默认 30 min)high
软删除机制删除流程1) 分区剪枝缩窄范围;2) 读到内存获取待删除数据;3) 追加写入待删除数据:打 deletion flag,并将 sort column 与 partition column 外字段置为空值,以 append! 方式追加写入high
硬删除 vs 软删除(性能权衡)删除性能与查询性能影响硬删除删除性能(时间/空间开销)更高;软删除仅追加数据删除性能更好,但查询需要额外过滤、查询性能相对更差high
DolphinDB 删除方法方法列表(从图片说明中提取)delete 语句、truncate 函数、dropPartition 函数、dropTable 函数、drop 语句medium
MVCC(多版本并发控制)定义写入/更新/删除时创建新数据版本而非覆盖旧版本,实现读写分离,使并发读可访问旧版本快照,确保一致性与并发性能high
事务(Transaction)定义数据库系统中完整且不可分割的操作单元;目标是在并发或故障情况下确保数据库一致性和可靠性high
删除某日所有股票快照数据推荐方法与原因表按天分区时可直接调用 dropPartition 删除整个分区;组合分区可通过指定条件方式删除high
删除某个 ID 的所有股票数据推荐方法与原因股票字段为 HASH 分区无法直接删分区;可使用 delete 语句按条件删除high
删除单个分区(k_minute_level.k_minute)delete 计时输出Time elapsed: 20.049 ms(注:代码注释中另出现 4.099 ms 行)medium
删除单个分区(k_minute_level.k_minute)dropPartition 计时输出Time elapsed: 5.978 mshigh
删除多个分区(k_minute_level.k_minute)delete 计时输出Time elapsed: 469.155 ms(注:代码注释中另出现 4.099 ms 行)medium
删除多个分区(k_minute_level.k_minute)dropPartition 计时输出Time elapsed: 35.645 mshigh
dropPartition vs delete(删分区场景)性能解释与运维建议dropPartition 删除性能明显优于 delete,因为 delete 有 SQL 解析开销;delete 支持 MVCC 会产生多版本副本占用额外磁盘;delete 需读入内存再删,内存受限可能 OOM;推荐运维使用 dropPartition 删除数据high
全表删除(k_minute_level.k_minute)delete 计时输出Time elapsed: 495.771 mshigh
全表删除(k_minute_level.k_minute_1)truncate 计时输出Time elapsed: 70.856 mshigh
全表删除(k_minute_level.k_minute_2)dropTable 计时输出Time elapsed: 71.254 mshigh
全表删除方式推荐推荐方法删除全表数据场景推荐 truncate、dropTable 或 drop 语句;对比中 truncate 与 dropTable 较推荐high
truncate vs dropTable差异truncate 保留原表结构仅删除数据;dropTable 会将表结构也删除high
删除后查询(k_minute)delete 后 count(*) 输出output: 0high
删除后查询(k_minute_1)truncate 后 count(*) 输出output: 0high
删除后查询(k_minute_2)dropTable 后行为查询报错:getFileBlocksMeta ... failed, reason: path does not existhigh
去重删除场景(delete + isDuplicated)计时输出Time elapsed: 271.374 mshigh
去重重写场景(查询去重 + truncate + append!)计时输出Time elapsed: 86.429 mshigh
isDuplicated 函数在分布式表条件中使用限制与变通isDuplicated 为顺序敏感函数,无法直接在查询分布式表的条件语句中使用;示例通过增加分区限定关键字 map,使语句不跨分区执行high
社区用户去重操作资源风险与建议社区用户内存资源有限,delete 去重或一次性查询重写去重都可能导致内存 OOM;可改为遍历分区方式执行high
遍历分区去重脚本计时输出Time elapsed: 301.925 mshigh
DolphinDB 更新机制与删除机制/MVCC 的关系更新与删除机制类似;每次更新因 MVCC 会额外产生数据副本存储在磁盘上并由系统定时回收high
TSDB 引擎更新(保留最新一条策略)更新实现方式在配置数据保留策略为保留最新一条的场景下,更新与软删除类似,以追加方式实现high
DolphinDB 更新方式基础方式与 upsert基础更新方式为 update 语句;若基于键进行更新(键存在)或追加(键不存在),可使用 upsert! 函数high
分布式表 update 与字段追加限制分布式表无法通过 update 直接追加字段,需要通过 addColumnhigh
upsert! 去重写入示例keyColNameskeyColNames=["TradeDate", "TradeTime", "SecurityID"]high
upsert! 对已存储重复键数据的处理限制/行为对数据库中已存在键值重复的数据,upsert! 不会去重;后续键值相同数据追加时只更新第一个命中键值的记录,其余相同键值记录不更新high
延伸阅读SQL 编程链接SQL 标准化(docs.dolphindb.cn/.../std_sql_ddb.html);SQL 编写案例(docs.dolphindb.cn/.../ddb_sql_cases.html)high
延伸阅读增删改查相关链接数据库操作(docs.dolphindb.cn/.../db_distr_comp.html);分布式表数据更新原理和性能(docs.dolphindb.cn/.../dolphindb_update.html);软删除(docs.dolphindb.cn/.../soft_delete.html)high