DolphinDB 内存分区表的加载和操作

本页是一篇介绍 DolphinDB 内存表(含分区内存表)加载与操作的文章导语与说明,并提到分区适用范围与并行计算相关优势。

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

What this page covers

技能认证特训营第二期报名推广

页面顶部提供活动推广内容,并给出限时报名链接。

DolphinDB 内存分区表的加载和操作(文章信息与导语)

本节给出文章标题、作者与日期,并说明内存数据表的分区类型适用范围及并行计算相关优势。

创建内存数据表

本节介绍创建非分区内存表与分区内存表的方法,并提示创建与访问方面的注意事项。

加载数据到内存表

本节通过模拟数据与多种导入函数,展示加载到未分区与分区内存表的方式,并给出适用场景与部分限制说明。

内存表的数据处理

本节以示例 trades 表为对象,概述内存表的常见数据处理操作,包括插入、更新、删除与表结构管理等。

Facts Index

Entity Attribute Value Confidence
文章发布日期2021-08-05high
文章作者署名Junxihigh
DolphinDB 内存数据表分区形态可以是非分区的,也可以是分区的high
DolphinDB 内存数据表分区方式适用范围除组合分区以外的所有分区方式都适用于内存数据表high
分区内存表运算性能优势原因能充分发挥多核CPU并行计算的优势medium
table 函数用途可创建非分区内存表high
table(X,[X1],[X2],...)输入数据类型X, X1, X2 可以是向量、矩阵或元组high
table(X,[X1],[X2],...)长度要求每个向量、矩阵和元组中每个元素的长度必须相同high
table(capacity:size, colNames, colTypes)用途可通过指定容量/初始大小、列名、列类型创建内存表high
table(capacity:size, colNames, colTypes)capacity 超出行为当实际记录行数超出 capacity 时会自动扩展high
table(capacity:size, colNames, colTypes)创建空表方式可将 size 设置为 0 创建空表high
table(capacity:size, colNames, colTypes)size>0 行为size>0 时创建表会使用默认值填充high
createPartitionedTable 函数用途可创建分区内存表high
分区内存表创建前置条件分区数据库要求需要创建内存的分区数据库,且分区数据库路径为空字符串high
内存分区表访问方式限制不能直接访问,需要使用SQL语句访问high
模拟数据集(trades)生成脚本行数参数n=30000000high
模拟数据集(trades)生成脚本workDir 示例C:/DolphinDB/Datahigh
loadText 函数用途将文本文件数据导入到未分区的内存表high
ploadText 函数用途将文本文件导入为顺序分区的内存表(导入到内存分区表的简单方法)high
ploadText 导入方式限制/缺点需要导入的文本文件必须小于可用内存;无法使用 sortBy! 进行分区内有意义的排序(等)medium
loadTextEx 函数用途将文本文件导入为指定分区方式的表high
loadTextEx 方法适用情况经常需要在各个分区内部进行排序;经常需要根据分区字段进行 group by 与 context by 的计算high
loadTextEx 方法参数要求database 函数的 directory 参数以及 loadTextEx 函数的 tableName 参数需使用空字符串("")high
内存分区表上的 sortBy!排序范围是在每个分区内部进行排序,并不是对全表进行排序high
timer(10) SQL 说明含义该语句被连续执行10次的总耗时high
分组聚合性能结论最优条件当分组列和分区列相同时,分组计算性能最优medium
loadTable 方法用途可导入磁盘分区表的全部或部分分区到内存表high
loadTable 方法适用情况文本文件比服务器可用内存更大且每次只需部分数据;需要重复使用数据(加载数据库表比导入文本文件更快)high
loadTable 可选参数 memoryMode要求需要设为 1,否则只会加载表的元数据high
loadTableBySQL 方法用途通过SQL选择磁盘分区表指定行/列载入内存分区表(需与 loadTable 结合使用)high
loadTableBySQL 方法灵活性描述这是最灵活的产生内存分区表的方法low
内存表插入数据方式方法列表SQL insert 语句;append! 函数;tableInsert 函数high
append! 往表插入数据数据形式要求新数据必须以表的形式表示high
tableInsert 函数返回值会返回插入的行数high
分区表上的 tableInsert数据形式要求新数据必须以表的形式表示high
未分区表上的 tableInsert数据形式要求新数据可以用元组的形式表示high
内存表增加列方式方法列表SQL update 语句;update! 函数;赋值语句high
内存表更新列方式方法列表SQL update 语句;update! 函数;赋值语句high
内存表删除行方式方法列表SQL delete 语句;erase 语句(示例为 trades.erase!)high
drop! 函数用途删除列(示例:trades.drop!("qty1"))high
rename! 函数用途重命名列(示例:trades.rename!("qty2", "qty2New"))high
schema 函数用途查看表的结构high
删除内存表方式方法列表undef 函数;把变量赋值为 NULLhigh
undef 与赋值为 NULL 的区别命名空间影响undef 会将命名空间删除;把变量赋值为 NULL 仍然保留命名空间high
replaceColumn! 函数用途修改列的数据类型high
修改列的数据类型支持范围目前只有未分区的内存表支持;分区内存表不支持high
reorderColumns! 函数用途修改列的顺序high
修改列的顺序相关限制描述支持范围(按原文表述)目前只有未分区的内存表才支持修改列的数据类型,分区内存表不支持该功能(原文在列顺序段落中出现此表述)medium
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high