CN112364278A - 一种基于CockroachDB底层键值数据分类优化方法 - Google Patents

一种基于CockroachDB底层键值数据分类优化方法 Download PDF

Info

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
Application number
CN202011321671.XA
Other languages
English (en)
Inventor
苑晓龙
孙兴艳
孙思清
高传集
周恒�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202011321671.XA priority Critical patent/CN112364278A/zh
Publication of CN112364278A publication Critical patent/CN112364278A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing 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底层键值数据分类优化方法。
背景技术
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类型标识、表标识和键值数据传入底层键值存储引擎中。
CN202011321671.XA 2020-11-23 2020-11-23 一种基于CockroachDB底层键值数据分类优化方法 Pending CN112364278A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 中移(苏州)软件技术有限公司 数据存储方法、装置及计算机存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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) 集成具有不同块大小的表空间
US8924373B2 (en) Query plans with parameter markers in place of object identifiers
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) 一种数据压缩存储并检索的方法及系统
CN104850572A (zh) HBase非主键索引构建与查询方法及其系统
US8661022B2 (en) Database management method and system
CN111026727A (zh) 基于日志文件的表维度检索数据同步方法、系统及装置
CN102314506B (zh) 基于动态索引的分布式缓冲区管理方法
CN109947796B (zh) 一种分布式数据库系统查询中间结果集的缓存方法
CN108228322B (zh) 一种分布式链路跟踪、分析方法及服务器、全局调度器
WO2023098316A1 (zh) 一种图数据库的检索方法和装置
US20090240678A1 (en) Purposing persistent data through hardware metadata tagging
CN113836162A (zh) 一种业务解耦并实现多级缓存的自动化更新的方法及装置
CN112328700A (zh) 一种分布式数据库
CN113312376A (zh) 一种用于Nginx日志实时处理分析的方法及终端
CN115114296A (zh) 一种基于TemplateB+Tree的索引结构布局方法
US20130041887A1 (en) Adding entries to an index based on use of the index
CN112912870A (zh) 租户标识符的转换
EP4352914A1 (en) Object data stored out of line vector engine

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