CN116483886A - 结合kv存储引擎和时序存储引擎查询olap的方法 - Google Patents
结合kv存储引擎和时序存储引擎查询olap的方法 Download PDFInfo
- Publication number
- CN116483886A CN116483886A CN202310373047.1A CN202310373047A CN116483886A CN 116483886 A CN116483886 A CN 116483886A CN 202310373047 A CN202310373047 A CN 202310373047A CN 116483886 A CN116483886 A CN 116483886A
- Authority
- CN
- China
- Prior art keywords
- time sequence
- data
- connection
- storage node
- time
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000005192 partition Methods 0.000 claims abstract description 49
- 238000001914 filtration Methods 0.000 claims abstract description 22
- 238000012163 sequencing technique Methods 0.000 claims abstract description 4
- 238000001514 detection method Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 description 3
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
- G06F16/24552—Database cache management
-
- 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
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开结合KV存储引擎和时序存储引擎查询OLAP的方法,涉及分布式数据库技术领域;根据数据表类型,调用相应存储引擎存储数据:若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点;通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,将缓存数据追加到分区文件;采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
Description
技术领域
本发明公开方法,涉及分布式数据库技术领域,具体地说是结合KV存储引擎和时序存储引擎查询OLAP的方法。
背景技术
在企业数据量日益庞大后,线上交易(OLTP,Online Transactional Processing)和后台分析(OLAP,Online Analytical Processing)通常被分割为两个独立系统,线上交易的业务数据通过ETL工具抽取出来,导入后台分析平台。这个架构中ETL存在复杂性以及维护成本高,并且ETL是一个周期性操作,比如一天或者一个小时导入一次数据,因此无法保证后台分析的数据具有实时性。
发明内容
本发明针对现有技术的问题,提供结合KV存储引擎和时序存储引擎查询OLAP的方法,直接将在线交易业务的插入/更新数据写入时序存储引擎,同时支持普通表和时序表上的实时快速分析查询,节省维护成本且后台分析数据能够保证实时性。
本发明提出的具体方案是:
本发明提供结合KV存储引擎和时序存储引擎查询OLAP的方法,根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点;
通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,将缓存数据追加到分区文件;
采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的方法中所述将缓存数据追加到分区文件,包括:
统计缓存数据各列的最大最小值,
将行存转换为列存,压缩当前缓存数据,
将每个时序表对应物理磁盘上的分区文件,所述分区文件包括.data文件和.meta文件,将压缩后缓存数据作为数据块Block追加到.data文件的末尾,将各列统计数据和文件的偏移和长度更新到.meta文件。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的方法所述根据过滤条件读取数据表,包括:根据单表扫描的过滤条件结合.meta文件中数据块的统计信息,确定需要读取的数据块,从时序存储节点的.data文件中读取数据,跟缓存数据合并。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的方法所述普通表与时序表连接方式查询,包括:判断普通表是否为小表,若普通表是小表,将普通表广播到各个时序存储节点构建哈希表,扫描时序表分区作为探测表进行哈希连接,汇总各时序存储节点的连接结果集,否则利用时序表上的谓词过滤数据,将时序表数据集返回SQL层构建哈希表,扫描普通表作为探测表。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的方法所述时序表连接方式查询,包括:根据时序表连接方式时序表之间在同一时序存储节点存储,在各个时序存储节点上构建局部哈希表,哈希连接后汇总各时序存储节点的连接结果。
本发明还提供结合KV存储引擎和时序存储引擎查询OLAP的装置,包括分区转发模块、缓存模块、落盘模块和混合查询模块,
分区转发模块根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,其中所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点,
缓存模块通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,落盘模块将缓存数据追加到分区文件,
混合查询模块采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的装置中所述落盘模块将缓存数据追加到分区文件,包括:
统计缓存数据各列的最大最小值,
将行存转换为列存,压缩当前缓存数据,
将每个时序表对应物理磁盘上的分区文件,所述分区文件包括.data文件和.meta文件,将压缩后缓存数据作为数据块Block追加到.data文件的末尾,将各列统计数据和文件的偏移和长度更新到.meta文件。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的装置中所述混合查询模块根据过滤条件读取数据表,包括:根据单表扫描的过滤条件结合.meta文件中数据块的统计信息,确定需要读取的数据块,从时序存储节点的.data文件中读取数据,跟缓存数据合并。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的装置中所述混合查询模块利用普通表与时序表连接方式查询,包括:判断普通表是否为小表,若普通表是小表,将普通表广播到各个时序存储节点构建哈希表,扫描时序表分区作为探测表进行哈希连接,汇总各时序存储节点的连接结果集,否则利用时序表上的谓词过滤数据,将时序表数据集返回SQL层构建哈希表,扫描普通表作为探测表。
进一步,所述的结合KV存储引擎和时序存储引擎查询OLAP的装置中所述混合查询模块利用时序表连接方式查询,包括:根据时序表连接方式时序表之间在同一时序存储节点存储,在各个时序存储节点上构建局部哈希表,哈希连接后汇总各时序存储节点的连接结果。
本发明的有益之处是:
本发明提供结合KV存储引擎和时序存储引擎查询OLAP的方法,与现有技术相比具有以下优点:
(1)时序数据直接放入时序存储引擎,无需通过Raft协议复制维护两套数据;
(2)OLTP提交数据直接用于OLAP分析查询,保障了数据分析管理的实时性;
(3)时序存储引擎可以利用MMAP机制将数据文件映射到内存,省略了内核态缓存到用户态的拷贝过程,加速查询分析过程;
(4)规定了多种表连接方式,特别是跟随分区的设定,在插入数据时就保证了两张表分区的一致性,哈希连接查询时不再需要Shuffle过程。
附图说明
图1是本发明装置模块功能展示示意图。
图2是本发明方法转发数据表示意图。
图3是根据数据表主键建立字典树示意图。
图4是时序表和时序表采用跟随分区后连接示意图。
具体实施方式
数据库可以通过内部参数定义大表和小表的界限,如果表的buffer大小小于内部参数的设定值,则可以认为它是小表,反之为大表。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明提供结合KV存储引擎和时序存储引擎查询OLAP的方法,根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点;
通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,将缓存数据追加到分区文件;
采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
本发明方法提高OLAP查询分析速度,可以直接把在线交易业务的插入/更新数据写入时序存储引擎,同时支持普通表和时序表上的实时快速分析查询。
具体应用中,基于本发明的技术方案,在本发明方法的一些实施例中,具体过程可参考如下:
(1)利用本发明方法在SQL层收到I/U/D语句后,根据数据表类型,调用相应存储引擎存储数据,若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点。为了加速存储引擎中的表连接,本发明方法定义一种新的分区方式称之为跟随分区,跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点,例如以TPC-H基准测试的客户表(Customer)和订单表(Orders)连接为例,客户表的主键c_custkey是订单表的外键o_custkey,c_nationkey将客户表数据按国家分区。订单表并没有国家编码的信息,但是如果订单插入时能够按照订单客户的国家分区,即保证相同o_custkey和c_custkey的客户记录和订单记录存储在同一分区时序存储节点,将对哈希连接查询性能带来很大的提升,能够省略shuffle过程。连接参考设置如下:
CREATE TABLE CUSTOMER(C_CUSTKEY INTEGER NOT NULL,
C_NAME VARCHAR(25)NOT NULL,
C_ADDRESS VARCHAR(40)NOT NULL,
C_NATIONKEY INTEGER NOT NULL,
C_PHONE CHAR(15)NOT NULL,
C_ACCTBAL DECIMAL(15,2) NOT NULL,
C_MKTSEGMENT CHAR(10)NOT NULL,
C_COMMENT VARCHAR(117)NOT NULL,PRIMARY KEY(C_CUSTKEY))
PARTITIOND BY C_NATIONKEY;
CREATE TABLE ORDERS(O_ORDERKEY INTEGER NOT NULL,
O_CUSTKEY INTEGER NOT NULL,
O_ORDERSTATUS CHAR(1)NOT NULL,
O_TOTALPRICE DECIMAL(15,2)NOT NULL,
O_ORDERDATE DATE NOT NULL,
O_ORDERPRIORITY CHAR(15)NOT NULL,
O_CLERK CHAR(15)NOT NULL,
O_SHIPPRIORITY INTEGER NOT NULL,
O_COMMENT VARCHAR(79)NOT NULL,
PRIMARY KEY(O_ORDERKEY),
FOREIGN KEY(O_CUSTKEY)REFERENCES CUSTOMER(C_CUSTKEY))
PARTITIONED FOLLOWING CUSTOMER;
客户表在插入过程中,可以根据C_CUSTKEY建立一棵字典树(Tries),参考图3,叶子节点是该C_CUSTKEY的时序存储分区节点。订单表在插入过程中,首先查询O_CUSTKEY在字典树中的分区节点值,然后转发至该时序存储引擎节点。
(2)通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,其中数据缓存后可进一步写请求日志写入持久化介质,当断电造成缓存数据丢失或者磁盘问题造成存储文件丢失,WAL可以帮助恢复数据,而缓存数据大小超出默认设置或者刷新间隔时间超过默认设置,可将缓存数据刷新到磁盘。
(3)将缓存数据追加到分区文件,进一步,包括:
统计缓存数据各列的最大最小值,
将行存转换为列存,压缩当前缓存数据,
将每个时序表对应物理磁盘上的分区文件,所述分区文件包括.data文件和.meta文件,将压缩后缓存数据作为数据块Block追加到.data文件的末尾,将各列统计数据和文件的偏移和长度更新到.meta文件。
(4)采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
其中扫描读取数据表时时序存储引擎文件以MMAP的方式读取,节省了数据从内核态到用户态的拷贝过程,有利于区间或者全表的顺序扫描读取;
根据过滤条件读取数据表,包括:根据单表扫描的过滤条件结合.meta文件中数据块的统计信息,确定需要读取的数据块,从时序存储节点的.data文件中读取数据,跟缓存数据合并;
所述普通表与时序表连接方式查询,包括:判断普通表是否为小表,若普通表是小表,将普通表广播到各个时序存储节点构建哈希表,扫描时序表分区作为探测表进行哈希连接,汇总各时序存储节点的连接结果集,否则利用时序表上的谓词过滤数据,将时序表数据集返回SQL层构建哈希表,扫描普通表作为探测表。
所述时序表连接方式查询,包括:根据时序表连接方式时序表之间在同一时序存储节点存储,在各个时序存储节点上构建局部哈希表,哈希连接后汇总各时序存储节点的连接结果。
在本发明的另一些实施例中,本发明还提供结合KV存储引擎和时序存储引擎查询OLAP的装置,包括分区转发模块、缓存模块、落盘模块和混合查询模块,
分区转发模块根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,其中所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点,
缓存模块通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,落盘模块将缓存数据追加到分区文件,
混合查询模块采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
上述装置内的各模块间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同样地,本发明装置可以将时序数据直接放入时序存储引擎,无需通过Raft协议复制维护两套数据;
将OLTP提交数据直接用于OLAP分析查询,保障了数据分析管理的实时性;
通过时序存储引擎可以利用MMAP机制将数据文件映射到内存,省略了内核态缓存到用户态的拷贝过程,加速查询分析过程;
规定了多种表连接方式,特别是跟随分区的设定,在插入数据时就保证了两张表分区的一致性,哈希连接查询时不再需要Shuffle过程。
需要说明的是,上述各流程和各装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.结合KV存储引擎和时序存储引擎查询OLAP的方法,其特征是根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点;
通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,将缓存数据追加到分区文件;
采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
2.根据权利要求1所述的结合KV存储引擎和时序存储引擎查询OLAP的方法,其特征是所述将缓存数据追加到分区文件,包括:
统计缓存数据各列的最大最小值,
将行存转换为列存,压缩当前缓存数据,
将每个时序表对应物理磁盘上的分区文件,所述分区文件包括.data文件和.meta文件,将压缩后缓存数据作为数据块Block追加到.data文件的末尾,将各列统计数据和文件的偏移和长度更新到.meta文件。
3.根据权利要求2所述的结合KV存储引擎和时序存储引擎查询OLAP的方法,其特征是所述根据过滤条件读取数据表,包括:根据单表扫描的过滤条件结合.meta文件中数据块的统计信息,确定需要读取的数据块,从时序存储节点的.data文件中读取数据,跟缓存数据合并。
4.根据权利要求1所述的结合KV存储引擎和时序存储引擎查询OLAP的方法,其特征是所述普通表与时序表连接方式查询,包括:判断普通表是否为小表,若普通表是小表,将普通表广播到各个时序存储节点构建哈希表,扫描时序表分区作为探测表进行哈希连接,汇总各时序存储节点的连接结果集,否则利用时序表上的谓词过滤数据,将时序表数据集返回SQL层构建哈希表,扫描普通表作为探测表。
5.根据权利要求1所述的结合KV存储引擎和时序存储引擎查询OLAP的方法,其特征是所述时序表连接方式查询,包括:根据时序表连接方式时序表之间在同一时序存储节点存储,在各个时序存储节点上构建局部哈希表,哈希连接后汇总各时序存储节点的连接结果。
6.结合KV存储引擎和时序存储引擎查询OLAP的装置,其特征是包括分区转发模块、缓存模块、落盘模块和混合查询模块,
分区转发模块根据数据表类型,调用相应存储引擎存储数据:若数据表类型是普通表,则调用KV存储引擎根据Raft协议将普通表存入RocksDB的节点,
若数据表类型是时序表,则调用时序存储引擎,按照跟随分区方式将时序表转发给时序存储节点,其中所述跟随分区方式指时序表连接方式,所述时序表连接方式为一个时序表的主键为另一个时序表的外键,根据所述时序表连接方式时序表之间能够存储在同一时序存储节点,
缓存模块通过时序存储节点上的时序表维护内存跳表结构,将插入的数据按照时间戳的方式排序,进行数据缓存,落盘模块将缓存数据追加到分区文件,
混合查询模块采用混合查询方式进行OLAP数据表查询,包括:扫描读取数据表,根据过滤条件读取数据表,以及利用表连接查询数据表,
所述表连接查询数据表包括普通表与时序表连接方式查询和时序表连接方式查询。
7.根据权利要求6所述的结合KV存储引擎和时序存储引擎查询OLAP的装置,其特征是所述落盘模块将缓存数据追加到分区文件,包括:
统计缓存数据各列的最大最小值,
将行存转换为列存,压缩当前缓存数据,
将每个时序表对应物理磁盘上的分区文件,所述分区文件包括.data文件和.meta文件,将压缩后缓存数据作为数据块Block追加到.data文件的末尾,将各列统计数据和文件的偏移和长度更新到.meta文件。
8.根据权利要求7所述的结合KV存储引擎和时序存储引擎查询OLAP的装置,其特征是所述混合查询模块根据过滤条件读取数据表,包括:根据单表扫描的过滤条件结合.meta文件中数据块的统计信息,确定需要读取的数据块,从时序存储节点的.data文件中读取数据,跟缓存数据合并。
9.根据权利要求6所述的结合KV存储引擎和时序存储引擎查询OLAP的装置,其特征是所述混合查询模块利用普通表与时序表连接方式查询,包括:判断普通表是否为小表,若普通表是小表,将普通表广播到各个时序存储节点构建哈希表,扫描时序表分区作为探测表进行哈希连接,汇总各时序存储节点的连接结果集,否则利用时序表上的谓词过滤数据,将时序表数据集返回SQL层构建哈希表,扫描普通表作为探测表。
10.根据权利要求6所述的结合KV存储引擎和时序存储引擎查询OLAP的装置,其特征是所述混合查询模块利用时序表连接方式查询,包括:根据时序表连接方式时序表之间在同一时序存储节点存储,在各个时序存储节点上构建局部哈希表,哈希连接后汇总各时序存储节点的连接结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310373047.1A CN116483886B (zh) | 2023-04-10 | 2023-04-10 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310373047.1A CN116483886B (zh) | 2023-04-10 | 2023-04-10 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116483886A true CN116483886A (zh) | 2023-07-25 |
CN116483886B CN116483886B (zh) | 2024-04-02 |
Family
ID=87226165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310373047.1A Active CN116483886B (zh) | 2023-04-10 | 2023-04-10 | 结合kv存储引擎和时序存储引擎查询olap的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116483886B (zh) |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130060612A1 (en) * | 2011-09-07 | 2013-03-07 | James Hurd | Parliamentary Collaboration and Democratic Database System, Method, and Computer Program Product |
CN105022791A (zh) * | 2015-06-19 | 2015-11-04 | 华南理工大学 | 一种新型的kv分布式数据存储方法 |
US20150370897A1 (en) * | 2014-06-18 | 2015-12-24 | Alibaba Group Holding Limited | Data query method and apparatus |
US20190034427A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
CN110347726A (zh) * | 2019-07-17 | 2019-10-18 | 帷幄匠心科技(杭州)有限公司 | 一种高效时序数据集成存储查询系统及方法 |
CN111045869A (zh) * | 2019-12-16 | 2020-04-21 | 上海钧正网络科技有限公司 | 一种数据备份方法、装置及可读存储介质 |
CN112364278A (zh) * | 2020-11-23 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种基于CockroachDB底层键值数据分类优化方法 |
CN113177089A (zh) * | 2021-04-16 | 2021-07-27 | 贾选选 | 一种分布式数据存储引擎调度方法 |
CN113535729A (zh) * | 2021-07-21 | 2021-10-22 | 浪潮云信息技术股份公司 | 一种基于RocksDB实现行列混合存储的方法 |
CN113535726A (zh) * | 2021-07-15 | 2021-10-22 | 中国工商银行股份有限公司 | 数据库扩容方法及装置 |
US20220075780A1 (en) * | 2019-05-15 | 2022-03-10 | Huawei Technologies Co.,Ltd. | Multi-language fusion query method and multi-model database system |
CN114416783A (zh) * | 2022-02-10 | 2022-04-29 | 中盈优创资讯科技有限公司 | 一种OLAP查询引擎动态cost评估方法及装置 |
CN114428763A (zh) * | 2020-10-29 | 2022-05-03 | 华为云计算技术有限公司 | 一种数据处理方法、设备及介质 |
CN115203230A (zh) * | 2022-06-30 | 2022-10-18 | 浪潮软件集团有限公司 | 在kv型数据库中添加时序查询的方法及系统 |
CN115408149A (zh) * | 2022-08-01 | 2022-11-29 | 浪潮软件集团有限公司 | 一种时序存储引擎内存设计及分配方法及装置 |
US20220382760A1 (en) * | 2021-06-01 | 2022-12-01 | Alibaba Singapore Holding Private Limited | High-performance key-value store |
CN115543195A (zh) * | 2022-09-22 | 2022-12-30 | 浪潮软件集团有限公司 | 一种适用于时序存储的block落盘方法及系统 |
-
2023
- 2023-04-10 CN CN202310373047.1A patent/CN116483886B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130060612A1 (en) * | 2011-09-07 | 2013-03-07 | James Hurd | Parliamentary Collaboration and Democratic Database System, Method, and Computer Program Product |
US20150370897A1 (en) * | 2014-06-18 | 2015-12-24 | Alibaba Group Holding Limited | Data query method and apparatus |
CN105022791A (zh) * | 2015-06-19 | 2015-11-04 | 华南理工大学 | 一种新型的kv分布式数据存储方法 |
US20190034427A1 (en) * | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
US20220075780A1 (en) * | 2019-05-15 | 2022-03-10 | Huawei Technologies Co.,Ltd. | Multi-language fusion query method and multi-model database system |
CN110347726A (zh) * | 2019-07-17 | 2019-10-18 | 帷幄匠心科技(杭州)有限公司 | 一种高效时序数据集成存储查询系统及方法 |
CN111045869A (zh) * | 2019-12-16 | 2020-04-21 | 上海钧正网络科技有限公司 | 一种数据备份方法、装置及可读存储介质 |
CN114428763A (zh) * | 2020-10-29 | 2022-05-03 | 华为云计算技术有限公司 | 一种数据处理方法、设备及介质 |
CN112364278A (zh) * | 2020-11-23 | 2021-02-12 | 浪潮云信息技术股份公司 | 一种基于CockroachDB底层键值数据分类优化方法 |
CN113177089A (zh) * | 2021-04-16 | 2021-07-27 | 贾选选 | 一种分布式数据存储引擎调度方法 |
US20220382760A1 (en) * | 2021-06-01 | 2022-12-01 | Alibaba Singapore Holding Private Limited | High-performance key-value store |
CN113535726A (zh) * | 2021-07-15 | 2021-10-22 | 中国工商银行股份有限公司 | 数据库扩容方法及装置 |
CN113535729A (zh) * | 2021-07-21 | 2021-10-22 | 浪潮云信息技术股份公司 | 一种基于RocksDB实现行列混合存储的方法 |
CN114416783A (zh) * | 2022-02-10 | 2022-04-29 | 中盈优创资讯科技有限公司 | 一种OLAP查询引擎动态cost评估方法及装置 |
CN115203230A (zh) * | 2022-06-30 | 2022-10-18 | 浪潮软件集团有限公司 | 在kv型数据库中添加时序查询的方法及系统 |
CN115408149A (zh) * | 2022-08-01 | 2022-11-29 | 浪潮软件集团有限公司 | 一种时序存储引擎内存设计及分配方法及装置 |
CN115543195A (zh) * | 2022-09-22 | 2022-12-30 | 浪潮软件集团有限公司 | 一种适用于时序存储的block落盘方法及系统 |
Non-Patent Citations (1)
Title |
---|
江天;乔嘉林;黄向东;王建民;: "开源软件中的大数据管理技术", 科技导报, no. 03 * |
Also Published As
Publication number | Publication date |
---|---|
CN116483886B (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7552130B2 (en) | Optimal data storage and access for clustered data in a relational database | |
CA2668136C (en) | Managing storage of individually accessible data units | |
US7650326B2 (en) | Fast aggregation of compressed data using full table scans | |
US8392382B2 (en) | On-line transaction processing (OLTP) compression and re-compression of database data | |
US6519613B1 (en) | Non-blocking drain method and apparatus for use in processing requests on a resource | |
US7243110B2 (en) | Searchable archive | |
US20090287986A1 (en) | Managing storage of individually accessible data units | |
US20140046928A1 (en) | Query plans with parameter markers in place of object identifiers | |
US9245003B2 (en) | Method and system for memory efficient, update optimized, transactional full-text index view maintenance | |
US20110289112A1 (en) | Database system, database management method, database structure, and storage medium | |
CN110096509A (zh) | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 | |
CN116257523A (zh) | 一种基于非易失存储器的列式存储索引方法及装置 | |
US7136861B1 (en) | Method and system for multiple function database indexing | |
US8161038B2 (en) | Maintain optimal query performance by presenting differences between access plans | |
CN116483886B (zh) | 结合kv存储引擎和时序存储引擎查询olap的方法 | |
US9129001B2 (en) | Character data compression for reducing storage requirements in a database system | |
CN111061725A (zh) | 一种可进行大量数据处理的存储结构 | |
CN109800233A (zh) | 一种大数据融合搜索方法 | |
EP3550451A1 (en) | Data storage and maintenance method and device, and computer storage medium | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
US8250108B1 (en) | Method for transferring data into database systems | |
CN118427279B (zh) | 一种分布式大规模并行处理数据库的混合数据处理系统 | |
CA2322603C (en) | Optimizing updatable scrollable cursors in database systems | |
CN117725095B (zh) | 面向数据集的数据存储和查询方法、装置、设备及介质 | |
US20060282420A1 (en) | Apparatus and method for reducing size of intermediate results by analyzing having clause information during SQL processing |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |