CN112364278A - 一种基于CockroachDB底层键值数据分类优化方法 - Google Patents
一种基于CockroachDB底层键值数据分类优化方法 Download PDFInfo
- Publication number
- CN112364278A CN112364278A CN202011321671.XA CN202011321671A CN112364278A CN 112364278 A CN112364278 A CN 112364278A CN 202011321671 A CN202011321671 A CN 202011321671A CN 112364278 A CN112364278 A CN 112364278A
- Authority
- CN
- China
- Prior art keywords
- data
- cockroachdb
- key value
- optimizing
- type
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于CockroachDB底层键值数据分类优化方法,属于分布式数据库技术领域。本发明的基于CockroachDB底层键值数据分类优化方法,在分布式数据库CockroachDB中RPC请求的头部中新增枚举类型DataType,将底层数据分类标识和表标识,在请求处理器中解析出数据类型和表标识并传入存储引擎中,存储引擎对不同类型的读写特性采用不同的数据优化策略。该发明的基于CockroachDB底层键值数据分类优化方法能够优化数据库的读写放大问题,从而提升数据库的读写性能,具有很好的推广应用价值。
Description
技术领域
本发明涉及分布式数据库技术领域,具体提供一种基于CockroachDB底层键值数据分类优化方法。
背景技术
CockroachDB是基于谷歌提出的《Spanner:Google’s Globally-DistributedDatabase》论文实现的NewSQL分布式事务数据库。它不仅具有对海量数据的存储管理能力,并且支持传统数据库的ACID和SQL标准查询语言,还具有高可用、高并发、可扩展等分布式特性。
分布式数据库总体架构上分为SQL层、事务层、分发层、副本层以及存储层,SQL层将客户端的SQL语句翻译解析为键值对(KV)操作,事务层保证多个键值对操作之间的原子性,分发层负责将键值的范围分发到指定的节点上,副本层保证节点之间的复制键值范围的一致性,存储层负责读写存储设备上的键值数据。
分布式数据库CockroachDB将节点健康数据、监控指标数据、事务记录数据、RAFT日志、RAFT状态机、Range数据、副本数据等系统数据与表数据混合存储在多个节点的多个相同特性的底层RocksDB存储中,无法按照不同读写特性的数据针对性的优化底层RocksDB存储。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能够优化数据库的读写放大问题,从而为提升数据库的读写性能提供基础的基于CockroachDB底层键值数据分类优化方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于CockroachDB底层键值数据分类优化方法,该方法在分布式数据库CockroachDB中RPC请求的头部中新增枚举类型DataType,将底层元数据增加分类标识和表数据增加表标识,在请求处理器中解析出数据类型和表标识并传入存储引擎中,存储引擎对不同类型的读写特性采用不同的数据优化策略。
作为优选,定义枚举类型DataType,将数据分为事务记录数据、范围数据、RAFT数据、时序数据、表数据和其他数据六种类别。
所述事务记录数据即为TXN,范围数据即为RANGE,时序数据即为TS,表数据即为TABLE,其他数据即为OTHER。
将数据分为事务记录数据、范围数据、RAFT数据、时序数据、表数据和其他数据六种类别,根据它们在数据库中不同的读写操作特性,分别设计和调整配置参数,优化底层RocksDB数据库读写上述不同特性数据的性能,从而达到优化分布式数据读写性能的目的。
作为优选,所述RAFT数据和时序数据包括追加写、读取、删除操作,数据库定义了垃圾回收机制清理过时或超出限制的RAFT数据和时序数据。
作为优选,所述范围数据、其他数据和事务记录数据,存储在数据库提供的LRU缓存中。
作为优选,所述表数据分为系统表数据和用户表数据,系统表数据中存储用户数据的元数据,即表的名称、标识、列的类型。
RAFT数据和时序数据为一类数据,范围数据、其他数据和事务记录数据为一类数据,表数据为一类数据,共三类不同的数据。
存储引擎层提供了简单的底层接口封装和缓存数据到缓冲区中,满足指定条件后进行一次性批次写入两种写入方式,因此需要3个缓冲区来缓存前述3类不同读写特性的数据。
1)定义多批次构建器(MultiBatchBuilder),关联批次构建器(RocksDBBatchBuilder),其中的函数根据上述的不同读写特性调用map中的不同批次构建器缓存键值数据;特别是ApplyRepr函数需要将编码后的数据进行解码出不同读写特性数据分组,并调用底层键值存储接口的函数将缓冲区中的数据应用到底层键值存储的写缓冲区。
2)在rocksDBBatch中将builder定义为多批次构建器,其中的repr与unsafeRepr函数中从底层键值存储的写缓存中读取到的数据需要调用底层键值存储写缓冲区中的数据需要上述设计的编码方法进行编码后进行传输或计算统计信息。
3)在存储引擎中增加不同数据类型键值对数量、字节数、读写量等统计指标。
作为优选,所述RAFT数据包括日志数据和状态机数据。
作为优选,所述其他数据包括节点状态数据和存储状态数据。
作为优选,在RPC请求的头部增加枚举类型DataType,标识出RPC请求涉及到的键值数据所述类型,在后续请求处理中将DataType类型标识、表标识和键值数据传入底层键值存储引擎中。
CockroachDB对客户端的请求处理流程如下:
1)SQL层接收到客户端的请求后将其解析为键值操作,然后将根据规则将它们封装为不同种类RPC请求,如:PutRequest、ScanRequest等;
2)RPC请求通过解析头部中Key所在的Range,然后RangeCache中查找到leaseholder副本所在的节点,分发器(DistSender)将该RPC请求分发到前述的节点中;
3)该节点接收到该RPC请求并解析出请求的类型,调用相应的请求处理器处理该请求;
4)请求处理器解析出头部中的DataType类型标识和键值数据,调用底层存储引擎的相应接口将其传入底层键值存储RocksDB中。
CockroachDB分布式数据库会将写入Leaseholder副本的批次数据通过Raft协议的提议发送到Follower副本上应用提交来保证一致性。由于在该批次中的数据类型同样是混合的,因此设计了批次编解码方法:
1)8个字节全部为0,表示该批次的起始;4个字节(count)表示repr_1的键值数量;4个字节表示repr_1的长度(size),紧随其后为repr_1的键值数据,其后的repr_2与repr_3与repr_1类似;
2)其中count与size都采用低地址序(LittleEndian)进行编解码;
3)当repr_1,repr_2或repr_3没有键值数据时,count与size值皆为0。
与现有技术相比,本发明的基于CockroachDB底层键值数据分类优化方法具有以下突出的有益效果:所述基于CockroachDB底层键值数据分类优化方法中,分布式数据库中的数据按照不同的类型进行标记后,在存储引擎中增加不同数据类型键值对数量、字节数、读写量等统计指标,可以为数据库系统监控、优化等提供参考价值。同时根据不同读写特性进行分组后,底层的存储可以调整为不同的RocksDB列族或RockDB实例,可以设置不同的参数甚至设计不同的刷写策略,从而优化该数据库的读写放大问题,提升数据库的读写性能,具有良好的推广应用价值。
附图说明
图1为本发明所述基于CockroachDB底层键值数据分类优化方法的RPC请求结构体示意图;
图2是本发明所述基于CockroachDB底层键值数据分类优化方法的多批次缓冲区类图;
图3是本发明所述基于CockroachDB底层键值数据分类优化方法的Raft ProposalData编码图示。
具体实施方式
下面将结合实施例,对本发明的基于CockroachDB底层键值数据分类优化方法作进一步详细说明。
实施例
本发明的基于CockroachDB底层键值数据分类优化方法,在分布式数据库CockroachDB中RPC请求的头部中新增枚举类型DataType,将底层数据分类标识和表标识,在请求处理器中解析出数据类型和表标识并传入存储引擎中,存储引擎对不同类型的读写特性采用不同的数据优化策略。
如图1所示,定义枚举类型DataType,将数据分为事务记录数据、范围数据、RAFT数据、时序数据、表数据和其他数据六种类别。
其中,将数据分为事务记录数据、范围数据、RAFT数据、时序数据、表数据和其他数据六种类别,根据它们在数据库中不同的读写操作特性,分别设计和调整配置参数,优化底层RocksDB数据库读写上述不同特性数据的性能,从而达到优化分布式数据读写性能的目的。
RAFT数据和时序数据包括追加写、读取、删除操作,数据库定义了垃圾回收机制清理过时或超出限制的RAFT数据和时序数据。范围数据、其他数据和事务记录数据,存储在数据库提供的LRU缓存中。表数据分为系统表数据和用户表数据,系统表数据中存储用户数据的元数据,即表的名称、标识、列的类型。
RAFT数据和时序数据为一类数据,范围数据、其他数据和事务记录数据为一类数据,表数据为一类数据,共三类不同的数据。RAFT数据包括日志数据和状态机数据。其他数据包括节点状态数据和存储状态数据。
存储引擎层提供了简单的底层接口封装和缓存数据到缓冲区中,满足指定条件后进行一次性批次写入两种写入方式,因此需要3个缓冲区来缓存前述3类不同读写特性的数据。实现方式如图2所示:
1)定义多批次构建器(MultiBatchBuilder),关联批次构建器(RocksDBBatchBuilder),其中的函数根据上述的不同读写特性调用map中的不同批次构建器缓存键值数据;特别是ApplyRepr函数需要将编码后的数据进行解码出不同读写特性数据分组,并调用底层键值存储接口的函数将缓冲区中的数据应用到底层键值存储的写缓冲区。
2)在rocksDBBatch中将builder定义为多批次构建器,其中的repr与unsafeRepr函数中从底层键值存储的写缓存中读取到的数据需要调用底层键值存储写缓冲区中的数据需要上述设计的编码方法进行编码后进行传输或计算统计信息。
3)在存储引擎中增加不同数据类型键值对数量、字节数、读写量等统计指标。
在RPC请求的头部增加枚举类型DataType,标识出RPC请求涉及到的键值数据所述类型,在后续请求处理中将DataType类型标识、表标识和键值数据传入底层键值存储引擎中。
CockroachDB对客户端的请求处理流程如下:
1)SQL层接收到客户端的请求后将其解析为键值操作,然后将根据规则将它们封装为不同种类RPC请求,如:PutRequest、ScanRequest等;
2)RPC请求通过解析头部中Key所在的Range,然后RangeCache中查找到leaseholder副本所在的节点,分发器(DistSender)将该RPC请求分发到前述的节点中;
3)该节点接收到该RPC请求并解析出请求的类型,调用相应的请求处理器处理该请求;
4)请求处理器解析出头部中的DataType类型标识和键值数据,调用底层存储引擎的相应接口将其传入底层键值存储RocksDB中。
CockroachDB分布式数据库会将写入Leaseholder副本的批次数据通过Raft协议的提议发送到Follower副本上应用提交来保证一致性。由于在该批次中的数据类型同样是混合的,因此设计了批次编解码方法,如图3所示:
1)8个字节全部为0,表示该批次的起始;4个字节(count)表示repr_1的键值数量;4个字节表示repr_1的长度(size),紧随其后为repr_1的键值数据,其后的repr_2与repr_3与repr_1类似;
2)其中count与size都采用低地址序(LittleEndian)进行编解码;
3)当repr_1,repr_2或repr_3没有键值数据时,count与size值皆为0。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种基于CockroachDB底层键值数据分类优化方法,其特征在于:该方法在分布式数据库CockroachDB中RPC请求的头部中新增枚举类型DataType,将底层元数据增加分类标识和表数据增加表标识,在请求处理器中解析出数据类型和表标识并传入存储引擎中,存储引擎对不同类型的读写特性采用不同的数据优化策略。
2.根据权利要求1所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:定义枚举类型DataType,将数据分为事务记录数据、范围数据、RAFT数据、时序数据、表数据和其他数据六种类别。
3.根据权利要求2所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:所述RAFT数据和时序数据包括追加写、读取、删除操作,数据库定义了垃圾回收机制清理过时或超出限制的RAFT数据和时序数据。
4.根据权利要求3所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:所述范围数据、其他数据和事务记录数据,存储在数据库提供的LRU缓存中。
5.根据权利要求4所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:所述表数据分为系统表数据和用户表数据,系统表数据中存储用户数据的元数据,即表的名称、标识、列的类型。
6.根据权利要求5所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:所述RAFT数据包括日志数据和状态机数据。
7.根据权利要求6所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:所述其他数据包括节点状态数据和存储状态数据。
8.根据权利要求7所述的基于CockroachDB底层键值数据分类优化方法,其特征在于:在RPC请求的头部增加枚举类型DataType,标识出RPC请求涉及到的键值数据所述类型,在后续请求处理中将DataType类型标识、表标识和键值数据传入底层键值存储引擎中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011321671.XA CN112364278A (zh) | 2020-11-23 | 2020-11-23 | 一种基于CockroachDB底层键值数据分类优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011321671.XA CN112364278A (zh) | 2020-11-23 | 2020-11-23 | 一种基于CockroachDB底层键值数据分类优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112364278A true CN112364278A (zh) | 2021-02-12 |
Family
ID=74533740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011321671.XA Pending CN112364278A (zh) | 2020-11-23 | 2020-11-23 | 一种基于CockroachDB底层键值数据分类优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112364278A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905615A (zh) * | 2021-03-02 | 2021-06-04 | 浪潮云信息技术股份公司 | 一种基于顺序校验的分布式一致性协议提交方法及系统 |
CN113094449A (zh) * | 2021-04-09 | 2021-07-09 | 天津大学 | 基于分布式键值库的大规模知识图谱存储方案 |
CN116483886A (zh) * | 2023-04-10 | 2023-07-25 | 上海沄熹科技有限公司 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714163A (zh) * | 2013-12-30 | 2014-04-09 | 中国科学院信息工程研究所 | 一种NoSQL数据库的模式管理方法及系统 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
CN110362572A (zh) * | 2019-06-25 | 2019-10-22 | 浙江邦盛科技有限公司 | 一种基于列式存储的时序数据库系统 |
CN111399777A (zh) * | 2020-03-16 | 2020-07-10 | 北京平凯星辰科技发展有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
CN111522880A (zh) * | 2020-04-24 | 2020-08-11 | 桂林电子科技大学 | 一种基于mysql数据库集群的提升数据读写性能的方法 |
CN111552687A (zh) * | 2020-03-10 | 2020-08-18 | 远景智能国际私人投资有限公司 | 时序数据的存储方法、查询方法、装置、设备及存储介质 |
CN111949601A (zh) * | 2019-05-16 | 2020-11-17 | 中移(苏州)软件技术有限公司 | 数据存储方法、装置及计算机存储介质 |
-
2020
- 2020-11-23 CN CN202011321671.XA patent/CN112364278A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714163A (zh) * | 2013-12-30 | 2014-04-09 | 中国科学院信息工程研究所 | 一种NoSQL数据库的模式管理方法及系统 |
CN104657500A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 一种基于key-value键值对的分布式存储方法 |
CN111949601A (zh) * | 2019-05-16 | 2020-11-17 | 中移(苏州)软件技术有限公司 | 数据存储方法、装置及计算机存储介质 |
CN110362572A (zh) * | 2019-06-25 | 2019-10-22 | 浙江邦盛科技有限公司 | 一种基于列式存储的时序数据库系统 |
CN111552687A (zh) * | 2020-03-10 | 2020-08-18 | 远景智能国际私人投资有限公司 | 时序数据的存储方法、查询方法、装置、设备及存储介质 |
CN111399777A (zh) * | 2020-03-16 | 2020-07-10 | 北京平凯星辰科技发展有限公司 | 一种基于数据值分类的差异化键值数据存储方法 |
CN111522880A (zh) * | 2020-04-24 | 2020-08-11 | 桂林电子科技大学 | 一种基于mysql数据库集群的提升数据读写性能的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112905615A (zh) * | 2021-03-02 | 2021-06-04 | 浪潮云信息技术股份公司 | 一种基于顺序校验的分布式一致性协议提交方法及系统 |
CN113094449A (zh) * | 2021-04-09 | 2021-07-09 | 天津大学 | 基于分布式键值库的大规模知识图谱存储方案 |
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 |
---|---|---|
CN112364278A (zh) | 一种基于CockroachDB底层键值数据分类优化方法 | |
CN108874971B (zh) | 一种应用于海量标签化实体数据存储的工具和方法 | |
CN104794123B (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
US20180285167A1 (en) | Database management system providing local balancing within individual cluster node | |
CN1264107C (zh) | 集成具有不同块大小的表空间 | |
EP2443564B1 (en) | Data compression for reducing storage requirements in a database system | |
US7805416B1 (en) | File system query and method of use | |
US7644107B2 (en) | System and method for batched indexing of network documents | |
CN101499094B (zh) | 一种数据压缩存储并检索的方法及系统 | |
CN111339103B (zh) | 一种基于全量分片和增量日志解析的数据交换方法及系统 | |
CN109241072A (zh) | 基于Canal的缓存更新方法及系统 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN111026727A (zh) | 基于日志文件的表维度检索数据同步方法、系统及装置 | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
CN109947796B (zh) | 一种分布式数据库系统查询中间结果集的缓存方法 | |
CN100449545C (zh) | 访问扇区数据的方法和系统 | |
WO2023098316A1 (zh) | 一种图数据库的检索方法和装置 | |
US8214343B2 (en) | Purposing persistent data through hardware metadata tagging | |
CN114201505A (zh) | 数据查询方法及装置、数据库系统 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
CN113836162A (zh) | 一种业务解耦并实现多级缓存的自动化更新的方法及装置 | |
CN112328700A (zh) | 一种分布式数据库 | |
CN115114296A (zh) | 一种基于TemplateB+Tree的索引结构布局方法 | |
US20130041887A1 (en) | Adding entries to an index based on use of the index | |
Carter et al. | Nanosecond indexing of graph data with hash maps and VLists |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210212 |
|
WD01 | Invention patent application deemed withdrawn after publication |