CN113535729A - 一种基于RocksDB实现行列混合存储的方法 - Google Patents
一种基于RocksDB实现行列混合存储的方法 Download PDFInfo
- Publication number
- CN113535729A CN113535729A CN202110823970.1A CN202110823970A CN113535729A CN 113535729 A CN113535729 A CN 113535729A CN 202110823970 A CN202110823970 A CN 202110823970A CN 113535729 A CN113535729 A CN 113535729A
- Authority
- CN
- China
- Prior art keywords
- column
- data
- rocksdb
- key
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于RocksDB实现行列混合存储的方法,涉及数据库存储技术领域,包括:将数据表模型存储到RocksDB的默认列族,将每个数据库表的行数据编码为Key‑Value数据后写入独立的数据表列族内存表;在列族内存表的数据需要持久化到磁盘时,根据数据表模型解码Key‑Value数据,得到列值数据,得到的列值数据写入列式存储引擎文件,同时,为RocksDB API扩展新的向量查询接口,提供快速的列式数据查询能力。本发明可以实现RocksDB对在线事务处理OLTP和在线数据分析OLAP应用混合场景的数据高效处理,而且客户端仍然使用RocksDB API兼容接口,保证RocksDB应用的平滑升级。
Description
技术领域
本发明涉及数据库存储技术领域,具体的说是一种基于RocksDB实现行列混合存储的方法。
背景技术
RocksDB是一个可嵌入、持久型的Key-Value(键值)存储,采用LSM树存储引擎,写入的数据会先存储到一个内存表中,当内存表中的数据大小超过设定的阈值后会启动一个后台线程,将内存表数据写到SST文件中,进行持久化存储。
在OLTP应用场景中,数据库引擎会把数据库表的一行数据编码为Key-Value数据存储到RocksDB,其中Key是表主键列的值,其他列的值则编码为Value。而在OLAP应用场景下,往往只需要对数据表的某几列数据进行聚合计算处理,这种Key-Value编码的行存储方式就比较低效,它需要从磁盘读取整行数据并将全部列值解码后才能得到需要的列数据,这就增加了磁盘IO使用量,加重了CPU计算负担。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于RocksDB实现行列混合存储的方法。
本发明的一种基于RocksDB实现行列混合存储的方法,解决上述技术问题采用的技术方案如下:
一种基于RocksDB实现行列混合存储的方法,其实现内容包括:
将数据表模型存储到RocksDB的默认列族,将每个数据库表的行数据编码为Key-Value数据后写入独立的数据表列族内存表;
在列族内存表的数据需要持久化到磁盘时,根据数据表模型解码Key-Value数据,得到列值数据,得到的列值数据写入列式存储引擎文件,同时,为RocksDB API扩展新的向量查询接口,提供快速的列式数据查询能力。
具体的,RocksDB存储引擎扩展新的API-CreateTable,用于创建支持列族内存表的列族,以表名作为列族名,数据表模型的元数据编码为Key-Value数据写入到RocksDB的默认列族,其中:Key表示数据表名;Value表示数据表模型的元数据,包括列名、列的类型、主键索引。
更具体的,将每个数据库表的行数据编码为Key-Value数据时:
首先,将Key-Value数据写入数据表列族的活动内存表,当活动内存表使用量达到阈值后,自动切换为只读内存表,
随后,即可启动后台线程,将只读内存表的Key-Value数据持久化到磁盘。
更具体的,RocksDB是通过列存表构建器将内存表的Key-Value数据持久化的,默认使用SST表构建器类将Key-Value数据写入SST文件。
更具体的,列存表构建器将查询默认列族,得到当前列族表的数据表模型,然后根据数据表模型将Key-Value数据解码得到一组列值,最后以列为单位将列值数据写入列式存储引擎文件中。
更具体的,通过数据先写入内存再批量写入列存引擎的方式,一可以保证高速写入,二是批量写入列存引擎也避免了底层列存数据文件的碎片化。
更具体的,为RocksDB API扩展新的向量查询接口时,输入参数有:主键范围、本次查询需要的列名、过滤条件、最大返回行数,输出参数有:以列为基础组织的向量数据结果。
更具体的,为RocksDB API扩展新的向量查询接口时,扩展了新的列存表读取器,用于读取列存引擎的数据,同时,基于列族内存表的Key-Value数据,列存表读取器从默认列族读取数据表模型,根据数据表模型解析列族内存表的Key-Value数据,并转换为向量模型数据,随后与列存引擎读取的数据合并后返回给上层OLAP应用。
更具体的,被删除的数据以标记删除的Key-Value写入数据表列族内存表,在持久化时,列存表构建器解析到Key-Value删除标记时,也以标记删除的方式写入列存引擎,然后在后台线程对列存引擎的底层列式文件合并,并将这些标记删除的数据进行物理删除。
本发明的一种基于RocksDB实现行列混合存储的方法,与现有技术相比具有的有益效果是:
(1)本发明可以在列族内存表的数据需要持久化到磁盘时,根据数据表模型解码Key-Value数据,得到列值数据,并写入列式存储引擎文件,同时,为RocksDB API扩展新的向量查询接口,提供快速的列式数据查询能力,实现行列混合存储;
(2)本发明可以实现RocksDB对在线事务处理OLTP和在线数据分析OLAP应用混合场景的数据高效处理,而且客户端仍然使用RocksDB API兼容接口,保证RocksDB应用的平滑升级。
附图说明
附图1是本发明中将Key-Value数据写入数据表列族的流程示意图;
附图2是本发明中通过向量查询接口查询数据的流程示意图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
本实施例提出一种基于RocksDB实现行列混合存储的方法,其实现内容包括:
(一)将数据表模型存储到RocksDB的默认列族,将每个数据库表的行数据编码为Key-Value数据后写入独立的数据表列族内存表。Key-Value数据简称KV数据。
本实施例中,RocksDB存储引擎扩展新的API-CreateTable,用于创建支持列族内存表的列族,以表名作为列族名,数据表模型的元数据编码为Key-Value数据写入到RocksDB的默认列族,其中:Key表示数据表名;Value表示数据表模型的元数据,包括列名、列的类型、主键索引。
本实施例中,参考附图1,将每个数据库表的行数据编码为Key-Value数据时:
首先,将Key-Value数据写入数据表列族的活动内存表,当活动内存表使用量达到阈值后,自动切换为只读内存表,
随后,即可启动后台线程,将只读内存表的Key-Value数据持久化到磁盘。
(二)在列族内存表的数据需要持久化到磁盘时,根据数据表模型解码Key-Value数据,得到列值数据,得到的列值数据写入列式存储引擎文件,同时,为RocksDB API扩展新的向量查询接口,提供快速的列式数据查询能力。
本实施例中,参考附图1,RocksDB是通过列存表构建器将内存表的Key-Value数据持久化的,默认使用SST表构建器类将Key-Value数据写入SST文件。
列存表构建器将查询默认列族,得到当前列族表的数据表模型,然后根据数据表模型将Key-Value数据解码得到一组列值,最后以列为单位将列值数据写入列式存储引擎文件中。通过数据先写入内存再批量写入列存引擎的方式,一可以保证高速写入,二是批量写入列存引擎也避免了底层列存数据文件的碎片化。
需要知道的是,多个列族表共用一个预写日志,可以保证Batch数据内多个表数据行更新的原子一致性,以及Memtable数据的异常恢复。同时,该写入流程对RocksDB侵入性小,兼容已有API,可保证上层应用的平滑升级。
本实施例中,为RocksDB API扩展新的向量查询接口时,输入参数有:主键范围、本次查询需要的列名、过滤条件、最大返回行数,输出参数有:以列为基础组织的向量数据结果。
参考附图2,为RocksDB API扩展新的向量查询接口时,扩展了新的列存表读取器,用于读取列存引擎的数据,同时,基于列族内存表的Key-Value数据,列存表读取器从默认列族读取数据表模型,根据数据表模型解析列族内存表的Key-Value数据,并转换为向量模型数据,随后与列存引擎读取的数据合并后返回给上层OLAP应用。
本实施例中,被删除的数据以标记删除的Key-Value写入数据表列族内存表,在持久化时,列存表构建器解析到Key-Value删除标记时,也以标记删除的方式写入列存引擎,然后在后台线程对列存引擎的底层列式文件合并,并将这些标记删除的数据进行物理删除。
综上可知,采用本发明的一种基于RocksDB实现行列混合存储的方法,可以实现RocksDB对在线事务处理OLTP和在线数据分析OLAP应用混合场景的数据高效处理。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
Claims (9)
1.一种基于RocksDB实现行列混合存储的方法,其特征在于,其实现内容包括:
将数据表模型存储到RocksDB的默认列族,将每个数据库表的行数据编码为Key-Value数据后写入独立的数据表列族内存表;
在列族内存表的数据需要持久化到磁盘时,根据数据表模型解码Key-Value数据,得到列值数据,得到的列值数据写入列式存储引擎文件,同时,为RocksDB API扩展新的向量查询接口,提供快速的列式数据查询能力。
2.根据权利要求1所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,RocksDB存储引擎扩展新的API-CreateTable,用于创建支持列族内存表的列族,以表名作为列族名,数据表模型的元数据编码为Key-Value数据写入到RocksDB的默认列族,其中:Key表示数据表名;Value表示数据表模型的元数据,包括列名、列的类型、主键索引。
3.根据权利要求1所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,将每个数据库表的行数据编码为Key-Value数据时:
首先,将Key-Value数据写入数据表列族的活动内存表,当活动内存表使用量达到阈值后,自动切换为只读内存表,
随后,即可启动后台线程,将只读内存表的Key-Value数据持久化到磁盘。
4.根据权利要求3所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,RocksDB是通过列存表构建器将内存表的Key-Value数据持久化的,默认使用SST表构建器类将Key-Value数据写入SST文件。
5.根据权利要求4所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,列存表构建器将查询默认列族,得到当前列族表的数据表模型,然后根据数据表模型将Key-Value数据解码得到一组列值,最后以列为单位将列值数据写入列式存储引擎文件中。
6.根据权利要求5所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,通过数据先写入内存再批量写入列存引擎的方式,一可以保证高速写入,二是批量写入列存引擎也避免了底层列存数据文件的碎片化。
7.根据权利要求6所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,为RocksDB API扩展新的向量查询接口时,输入参数有:主键范围、本次查询需要的列名、过滤条件、最大返回行数,输出参数有:以列为基础组织的向量数据结果。
8.根据权利要求7所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,为RocksDB API扩展新的向量查询接口时,扩展了新的列存表读取器,用于读取列存引擎的数据,同时,基于列族内存表的Key-Value数据,列存表读取器从默认列族读取数据表模型,根据数据表模型解析列族内存表的Key-Value数据,并转换为向量模型数据,随后与列存引擎读取的数据合并后返回给上层OLAP应用。
9.根据权利要求8所述的一种基于RocksDB实现行列混合存储的方法,其特征在于,被删除的数据以标记删除的Key-Value写入数据表列族内存表,在持久化时,列存表构建器解析到Key-Value删除标记时,也以标记删除的方式写入列存引擎,然后在后台线程对列存引擎的底层列式文件合并,并将这些标记删除的数据进行物理删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823970.1A CN113535729A (zh) | 2021-07-21 | 2021-07-21 | 一种基于RocksDB实现行列混合存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823970.1A CN113535729A (zh) | 2021-07-21 | 2021-07-21 | 一种基于RocksDB实现行列混合存储的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535729A true CN113535729A (zh) | 2021-10-22 |
Family
ID=78100649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110823970.1A Pending CN113535729A (zh) | 2021-07-21 | 2021-07-21 | 一种基于RocksDB实现行列混合存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535729A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 一种基于RocksDB的预写日志方法及系统 |
CN116483886A (zh) * | 2023-04-10 | 2023-07-25 | 上海沄熹科技有限公司 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362572A (zh) * | 2019-06-25 | 2019-10-22 | 浙江邦盛科技有限公司 | 一种基于列式存储的时序数据库系统 |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN111400298A (zh) * | 2020-04-17 | 2020-07-10 | Oppo广东移动通信有限公司 | 数据处理方法及装置、计算机可读存储介质 |
CN112395294A (zh) * | 2020-11-27 | 2021-02-23 | 浪潮云信息技术股份公司 | 一种数据库数据管理方法及系统、数据库 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
-
2021
- 2021-07-21 CN CN202110823970.1A patent/CN113535729A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362572A (zh) * | 2019-06-25 | 2019-10-22 | 浙江邦盛科技有限公司 | 一种基于列式存储的时序数据库系统 |
CN111221922A (zh) * | 2019-12-31 | 2020-06-02 | 苏州浪潮智能科技有限公司 | 一种RocksDB数据库数据写入方法及RocksDB数据库 |
CN111400298A (zh) * | 2020-04-17 | 2020-07-10 | Oppo广东移动通信有限公司 | 数据处理方法及装置、计算机可读存储介质 |
CN112395294A (zh) * | 2020-11-27 | 2021-02-23 | 浪潮云信息技术股份公司 | 一种数据库数据管理方法及系统、数据库 |
CN112699092A (zh) * | 2021-01-13 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种RocksDB存储大值数据的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138200A (zh) * | 2021-12-01 | 2022-03-04 | 浪潮云信息技术股份公司 | 一种基于RocksDB的预写日志方法及系统 |
CN114138200B (zh) * | 2021-12-01 | 2023-10-13 | 上海沄熹科技有限公司 | 一种基于RocksDB的预写日志方法及系统 |
CN116483886A (zh) * | 2023-04-10 | 2023-07-25 | 上海沄熹科技有限公司 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
CN116483886B (zh) * | 2023-04-10 | 2024-04-02 | 上海沄熹科技有限公司 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2663358C2 (ru) | Устройство и способ кластерного хранения | |
CN113535729A (zh) | 一种基于RocksDB实现行列混合存储的方法 | |
US10289714B2 (en) | Compression of serialized B-tree data | |
CN109213432B (zh) | 利用日志结构合并树将数据写入的存储设备及其方法 | |
CN103020205A (zh) | 一种分布式文件系统上基于硬件加速卡的压缩解压缩方法 | |
CN104715039A (zh) | 基于硬盘和内存的列式存储和查询方法及设备 | |
JP2022016325A (ja) | データ圧縮方法および装置、ならびにコンピュータデバイス | |
CN111966654A (zh) | 一种基于Trie字典树的混合过滤器 | |
CN107423425B (zh) | 一种对k/v格式的数据快速存储和查询方法 | |
CN113821541A (zh) | 数据倾斜处理方法、设备、存储介质及程序产品 | |
CN117033424A (zh) | 慢sql语句的查询优化方法、装置和计算机设备 | |
WO2022037015A1 (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
US20240126818A1 (en) | Data filtering methods and apparatuses for data queries | |
CN113468209A (zh) | 一种电网监控系统高速内存数据库访问方法 | |
CN111752996A (zh) | 一种CockroachDB支持多存储引擎的实现方法 | |
CN116521641A (zh) | 基于数据湖的数据读写方法、数据读写装置以及存储介质 | |
CN110990340A (zh) | 一种大数据多层次存储架构 | |
CN115455040A (zh) | 提高数据库sql查询效率的方法、装置、设备、介质 | |
US20220083522A1 (en) | Data processing method, apparatus, electronic device, and computer storage medium | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
CN115437836A (zh) | 一种元数据处理方法及相关设备 | |
CN112052240A (zh) | 一种基于协处理器的HBase二级内存索引构建方法 | |
KR102013839B1 (ko) | 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조 | |
CN112015791B (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
CN112527949B (zh) | 数据存储与检索方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221229 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park Applicant before: Inspur cloud Information Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |