DolphinDB分区数据库教程(一)

教程文章标题与作者、日期信息。

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

What this page covers

技能认证特训营第二期正式开启(限时报名) cta

页面顶部的活动报名与优惠信息入口。

DolphinDB分区数据库教程(一) hero

教程文章标题与作者、日期信息。

为什么对数据进行分区? definition

解释数据库分区的目的与带来的性能、资源利用与可用性收益。

分区方式与_database函数创建数据库 how_it_works

列出DolphinDB支持的分区类型,并说明_database函数语法与参数含义及限制。

范围分区(2.1)示例 how_it_works

说明范围分区由分区向量决定,并给出创建范围分区数据库与分区表的示例及物理目录结构说明。

哈希分区(2.2)示例 how_it_works

说明哈希分区的机制、局限与示例,并给出物理目录结构说明。

值分区(2.3)示例 how_it_works

说明值分区“一个值一个分区”的概念,并给出按月值分区的示例及目录结构说明。

列表分区(2.4)示例 how_it_works

说明列表分区用列表代表分区的方式,并给出股票代码列表分区示例及目录结构说明。

组合分区(2.5)示例 how_it_works

说明组合分区可定义多分区列并独立采用不同分区方式,给出示例并展示两级目录结构说明。

后续教程预告:教程(二) misc

说明后续文章将介绍分区原则与特殊分区方案。

Facts index

Entity Attribute Value Confidence
DolphinDB分区数据库教程(一)发布日期2021-08-05high
DolphinDB分区数据库教程(一)作者署名Junxihigh
数据库分区影响可以极大降低系统响应延迟并提高数据吞吐量medium
数据库分区好处使大型表更易于管理;对数据子集的维护操作更高效;通过只读取查询所需的相关数据减少扫描数据量medium
单一分区存放全部数据瓶颈查询、计算及其它操作会被限制在磁盘访问IO瓶颈上high
数据库分区资源利用良好分区方案搭配并行/分布式计算可充分利用所有节点完成通常需在单节点完成的任务medium
数据库分区可用性分区副本通常存放在不同物理节点;某分区不可用时可调用其它副本保证作业运转medium
DolphinDB支持的分区方式范围分区(RANGE)、哈希分区(HASH)、值分区(VALUE)、列表分区(LIST)、复合分区(COMPO)high
范围分区(RANGE)描述每个区间创建一个分区;最常用且推荐;可把数值在一个区间内的记录放到一个分区high
哈希分区(HASH)描述利用哈希函数对分区列操作,方便建立指定数量的分区high
值分区(VALUE)描述每个值创建一个分区(示例:股票交易日期、股票交易月)high
列表分区(LIST)描述根据用户枚举的列表进行分区,比值分区更灵活high
复合/组合分区(COMPO)适用场景适用于数据量特别大且查询经常涉及两个或以上的分区列medium
复合/组合分区(COMPO)描述每个分区列可采用区间、值或列表分区;示例:按交易日期值分区,同时按股票代码范围分区high
DolphinDB _database_函数用途用于创建数据库high
DolphinDB _database_函数语法_database(directory, [partitionType], [partitionScheme], [locations])_high
database参数 directory含义数据库保存的目录high
DolphinDB数据库类型类型列表内存数据库、磁盘上的数据库、分布式文件系统上的数据库high
创建内存数据库directory参数要求directory为空high
创建本地数据库directory参数要求directory应该是本地文件系统目录high
创建分布式文件系统数据库directory参数要求directory应该以“dfs://”开头high
本教程示例环境说明以创建Windows本地数据库为例high
database参数 partitionType分区方式数量有5种方式:RANGE、HASH、VALUE、LIST、COMPOhigh
database参数 partitionScheme说明各种分区方式对应的分区方案见配图high
database参数 locations限制如果是分布式文件系统的数据库或者复合分区(COMPO)类型的数据库,不能使用locations参数high
范围分区分区向量含义分区向量表示区间,包含起始值,不包含结尾值high
范围分区示例数据库db分区区间两个分区:[0,5) 和 [5,10)high
范围分区示例数据库创建调用db=database("dfs://rangedb", RANGE, 0 5 10)high
范围分区示例分区表创建与分区列pt = db.createPartitionedTable(t, `pt, `ID)(使用ID作为分区列)high
范围分区示例数据生成规模n=1000000high
哈希分区机制对分区列使用哈希函数以产生分区high
哈希分区优点产生指定数量分区的简便方法medium
哈希分区局限不能保证分区大小一致,尤其当分区列值分布存在偏态时high
哈希分区查询效率查找分区列上连续区域数据时效率比区域分区或值分区低medium
哈希分区示例数据库创建调用db=database("dfs://hashdb", HASH, [INT, 2])high
哈希分区示例数据库db分区数量两个分区high
值分区定义用一个值代表一个分区high
值分区示例分区数量定义了204个分区high
值分区示例分区范围含义每个分区表示2000年1月到2016年12月之间的一个月high
值分区示例数据库创建调用db=database("dfs://valuedb", VALUE, 2000.01M..2016.12M)high
列表分区(LIST)定义用一个包含多个元素的列表代表一个分区high
列表分区示例分区数量与组成两个分区:第一个分区包含3个股票代码,第二个分区包含2个股票代码high
列表分区示例数据库创建调用db=database("dfs://listdb", LIST, [`IBM`ORCL`MSFT, `GOOG`FB])high
组合分区(COMPO)分区列数量可以定义2或3个分区列high
组合分区(COMPO)可选分区方式每列可以独立采用范围(RANGE)、值(VALUE)或列表(LIST)分区high
组合分区(COMPO)列关系多个列在逻辑上并列,不存在从属关系或优先级关系high
组合分区示例子库定义dbDate = database(, VALUE, 2017.08.07..2017.08.11);dbID=database(, RANGE, 0 50 100)high
组合分区示例组合数据库创建调用db = database("dfs://compoDB", COMPO, [dbDate, dbID])high
组合分区示例分区表创建与分区列pt = db.createPartitionedTable(t, `pt, `date`ID)high
组合分区示例值分区数量上面的例子创建了5个值分区high
组合分区示例(特定日期分区20170807)范围分区数量有2个范围分区high
DolphinDB分区数据库教程(二)内容预告将介绍DolphinDB分区原则以及特殊的分区方案high
技能认证特训营第二期报名链接https://www.qingsuyun.com/h5/e/217471/5/high