DolphinDB内存表详解
内存表是DolphinDB数据库的重要组成部分。内存表不仅可以直接用于存储数据,实现高速数据读写,而且可以缓存计算引擎的中间结果,加速计算过程。本教程主要介绍DolphinDB内存表的分类、使用场景以及各种内存表在数据操作以及表结构(schema)操作上的异同。
1. 内存表类别
根据不同的使用场景以及功能特点,DolphinDB内存表可以分为以下四种:
- 常规内存表
- 键值内存表
- 流数据表
- MVCC内存表
1.1 常规内存表
常规内存表是DolphinDB中基础的表结构,支持增删改查等操作。SQL查询返回的结果通常存储在常规内存表中,等待进一步处理。
- 创建
使用table函数可创建常规内存表。table函数有两种用法:种用法是根据指定的schema(字段类型和字段名称)以及表容量(capacity)和初始行数(size)来生成;第二种用法是通过已有数据(矩阵,表,数组和元组)来生成一个表。
使用种方法的好处是可以预先为表分配内存。当表中的记录数超过容量时,系统会自动扩充表的容量。扩充时系统首先会分配更大的内存空间(增加20%到不等),然后复制旧表到新的表,后释放原来的内存。对于规模较大的表,扩容的成本会比较高。因此,如果我们可以事先预计表的行数,建议创建内存表时预先分配一个合理的容量。如果表的初始行数为0,系统会生成空表。如果初始行数不为0,系统会生成一个指定行数的表,表中各列的值都为默认值。例如:
//创建一个空的常规内存表
t=table(100:0,`sym`id`val,[SYMBOL,INT,INT])
//创建一个10行的常规内存表
t=table(100:10,`sym`id`val,[SYMBOL,INT,INT])
select * from t
sym id val
--- -- ---
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
相关文章