CN117725096B - 关系型数据库的数据存储和查询方法、装置、设备及介质 - Google Patents
关系型数据库的数据存储和查询方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117725096B CN117725096B CN202410171438.XA CN202410171438A CN117725096B CN 117725096 B CN117725096 B CN 117725096B CN 202410171438 A CN202410171438 A CN 202410171438A CN 117725096 B CN117725096 B CN 117725096B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- columns
- relational database
- sequencing
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000013500 data storage Methods 0.000 title claims abstract description 26
- 230000002776 aggregation Effects 0.000 claims abstract description 52
- 238000004220 aggregation Methods 0.000 claims abstract description 52
- 238000012163 sequencing technique Methods 0.000 claims abstract description 40
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000008014 freezing Effects 0.000 claims description 4
- 238000007710 freezing Methods 0.000 claims description 4
- 230000002596 correlated effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000875 corresponding effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000013079 quasicrystal Substances 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种关系型数据库的数据存储和查询方法、装置、设备及介质,涉及关系型数据库技术领域。存储方法包括:接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的所述待存储数据分别存储为多个文件;分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。本发明优化了时序型数据的存储,针对高速、乱序到达的数据实现了高吞吐入库和低延时的复杂查询。
Description
技术领域
本发明涉及关系型数据库技术领域,具体涉及一种关系型数据库的数据存储和查询方法、装置、设备及介质。
背景技术
在大数据时代,处理高速、乱序到达的时序型数据是数据库系统的重要挑战之一。关系型数据库(例如PostgreSQL)由于强大的功能、扩展性、优异的性能和可靠性、良好的生态成为实现特定领域数据库的基础。
例如当前市场上存在的多种分布式数据库存储引擎,如开源分布式关系型数据库TiDB、CockroachDB等,它们致力于提供水平扩展和高并发访问,但在高速、乱序到达的时序型数据场景下仍有优化空间。
时序数据库。针对时序型数据的数据库(如InfluxDB、OpenTSDB)着重于时间序列数据的存储和查询,但通常缺乏对复杂查询的良好支持,而且在处理高速、乱序数据方面仍有性能瓶颈。
PostgreSQL及其扩展。PostgreSQL是一种广泛使用的关系型数据库系统,其插件和扩展机制为用户提供了灵活性。它只提供了heap(堆内存)这一种存储方式,其空间分配和回收策略会导致数据碎片化,IO效率低。现有扩展如时序数据库TimescaleDB致力于提高时序数据的查询性能,但在乱序到达的高速数据处理、减少无用数据过滤等方面尚有改进空间。
因此,传统的关系型数据库系统在解决高速乱序数据场景下的时序数据问题时往往面临写入吞吐瓶颈、复杂查询延时较高等问题。
发明内容
有鉴于此,本申请实施例提供一种关系型数据库的数据存储和查询方法、装置、设备及介质,以优化存储时序型数据,针对高速、乱序到达的数据实现高吞吐入库和低延时的复杂查询。
本申请实施例提供以下技术方案:一种关系型数据库的数据存储方法,包括:
接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的所述待存储数据分别存储为多个文件;
分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
根据本申请一种实施例,分别获得所述文件中数据列相互之间的关联度,包括:
在所述文件的数据列表中进行查询,判断是否有用户自定义设置的关联度值;若有,则根据用户的自定义设置,分别获得所述文件中数据列相互之间的关联度;若无,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度。
根据本申请一种实施例,根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:
根据历史访问数据,分别计算每个数据列在设定的历史时间段内的历史访问次数;将所述历史访问次数与设定的次数阈值进行对比,得到所述历史访问次数满足设定的次数阈值的多个数据列,对该多个数据列进行关联度赋值,使该多个数据列之间的所述关联度满足所述设定的关联度阈值。
根据本申请一种实施例,所述方法还包括:
将顺次写入的多个所述文件存储至一个文件集中,当所述文件集中的所述文件数量达到设定的文件阈值时,则冻结该文件集的写入操作,并将该文件集中的多个所述文件进行合并处理,同时由另一个文件集接受写入处理,或由另外的多个文件集同时接受写入处理。
根据本申请一种实施例,所述设定的排序规则包括堆排序算法。
本申请还提供一种关系型数据库的数据查询方法,包括:
接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
根据所述索引在所述文件列表中查询,输出查询数据。
本申请还提供一种关系型数据库的数据存储装置,包括:
文件存储模块,用于接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件;
聚集存储模块,用于分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
本申请还提供一种关系型数据库的数据查询装置,包括:
查询请求接收模块,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块,用于根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
第二查询模块,用于根据所述索引在所述文件列表中查询,输出查询数据。
本申请还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法的计算机程序。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本发明实施例面向时序数据,通过实现高吞吐入库和低延时复杂查询,针对高速、乱序到达的数据,提供了一种优化的解决方案。将数据以文件为粒度进行存储,将其存储为一个文件,而不是一组数据库的块,若待访问的数据集中在一个文件里,可以实现IO的顺序访问,避免在多个块之间进行随机IO,同时节省了块寻址的存储和访问代价,大幅提高了数据访问效率。并且数据采用了全序存储的方式,对于较大范围的数据可以顺序性地读取,从而提高了IO效率,以及提高了时间窗口的查询效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例的关系型数据库的数据存储方法流程示意图;
图2是本发明实施例的关系型数据库的数据存储方法中的连续存储示意图;
图3是本发明实施例的关系型数据库的数据存储方法中的文件集交替存储示意图;
图4是本发明实施例的关系型数据库的数据查询方法流程示意图;
图5是本发明实施例的关系型数据库的数据存储装置结构框图;
图6是本发明实施例的关系型数据库的数据查询装置结构框图;
图7是本发明计算机设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中,提供了一种关系型数据库的数据存储方法,如图1所示,该方法包括:
S101.接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的所述待存储数据分别存储为多个文件;
S102.分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
由图1和图2所示的流程可知,在本发明实施例针对高速、乱序到达的数据提供一种优化的解决方案。将同一时间段内写入的记录存储为一个文件,以文件为粒度存储。对于同一批记录,将其存储为一个文件,而不是一组数据库的块。其优势在于,如果访问的数据集中在一个文件里,可以实现IO的顺序访问,避免在多个块之间进行随机IO;其中,随机IO是指读写的内容分散在磁盘的不同位置,需要来回查找因此效率低;顺序IO是指读写的内容集中存储在磁盘的一块,从前到后依次读取,避免了来回查找的过程,因此效率高。另外,采用文件的形式进行存储,而不是一组数据库的块,也节省了块寻址的存储和访问代价。其中,一个文件被称为sequencefile(顺串)文件。
在此基础上,本发明实施例采用了全序聚集存储的方法,本实施例中所述的聚集存储是指将若干个具有亲和性(所述亲和性即上述的关联度)的数据列作为一个聚集列,将该聚集列中的数据列在同一个文件内按照设定的排序规则进行顺序存储,且该聚集列的数据是物理地址上连续存储的。所述聚集列,即认为经常同时被访问的数据列是具有亲和性的,即相互之间是具有关联度的,因此作为一个聚集列进行存储。如图2所示,图2中的箭头指向的是物理的存储顺序,其中,数据列C1的全部数据后面接着的是数据列Cm、Cn两个具有亲和性的数据列,其后是其它数据Ck。全序聚集存储的优势在于,是同一列的数据访问可以用尽可能少的IO来实现,从而提高了IO效率。
在一个实施例中,分别获得所述文件中数据列相互之间的关联度,包括:在所述文件的数据列表中进行查询,判断是否有用户自定义设置的关联度值;若有,则根据用户的自定义设置,分别获得所述文件中数据列相互之间的关联度;若无,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度。
具体实施时,用户在写入数据及建立数据列表的过程中,可以自定义哪些数据列具有亲和性,即对指定的具有亲和性的数据列赋予一个关联度值,其中,用户可以指定多组聚集列,并且可为每组聚集列赋予一个均大于所述设定的关联度阈值的关联度值,每组聚集列的关联度值与亲和性的程度呈正相关,亲和性程度越高则关联度的值越大,系统在查询到用户自定义的关联度值时,将多组聚集列按照关联度值的大小顺序排序,将每组聚集列中的按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
具体实施时,若无用户自定义的关联度值,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:根据历史访问数据,分别计算每个数据列在设定的历史时间段内的历史访问次数;将所述历史访问次数与设定的次数阈值进行对比,得到所述历史访问次数满足设定的次数阈值的多个数据列,对该多个数据列进行关联度赋值,使该多个数据列之间的所述关联度满足所述设定的关联度阈值。本发明实施例所述的设定的关联度计算方法是根据历史访问数据进行查询,获得在设定的历史时间段内被访问的次数较高,频繁出现的数据列,筛选出历史访问次数大于设定次数阈值的数据列,将这些数据列作为一个聚集列并进行关联度赋值,可为该聚集列赋予一个大于所述设定的关联度阈值的关联度值,该聚集列的关联度值与整个聚集列中数据列的历史访问次数的总数呈正相关,历史访问次数的总数越高则关联度的值越大,系统在进行关联度赋值后,可将多个不同的所述设定的历史时间段内的多组聚集列按照关联度值的大小顺序排序,将每组聚集列中的按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
在一个实施例中,所述方法还包括:将顺次写入的多个所述文件存储至一个文件集中,当所述文件集中的所述文件数量达到设定的文件阈值时,则冻结该文件集的写入操作,并将该文件集中的多个所述文件进行合并处理,同时由另一个文件集接受写入处理,或由另外的多个文件集同时接受写入处理。
本发明实施例采用文件集交替存储的方法,文件集(sequence set)是一组顺串文件的集合,文件集是文件合并的范围。当顺串文件达到设定的数量后,就会冻结该文件集,开始进行合并操作。然后由另一个文件集接受写入处理,或者多个文件集同时接受写入处理,以提高写的并发度。
在具体实施时,本发明实施例的文件集交替存储是基于PostgreSQL数据库实现,在数据存储过程之前,扩展原有的fork(子进程)至某一个数,例如M*N个fork,M是指文件集的个数,N是指单个文件集里的文件个数。fork是PostgreSQL数据库存储文件的名字,数量较少,以文件为单位的存储需要大幅扩展fork的数量,具体数量可以根据需求制定。而非基于PostgreSQL的存储方案则无须关注这一限制。
用户在进行数据写入时,如图3所示,用户开始写入时,写入的数据以记录的形式,存储在内存的缓存中,在提交之前可以写成多个缓存记录集。当事务提交时,这多个缓存中的数据被合并成一个顺串文件,内存中的记录形式也通过排序的方式转成了文件内的全序聚集存储,数据列之间的顺序结合上述设定的排序规则做了重新的排序。当单个文件集里的顺串文件数量超过限制(即达到了设定的文件阈值)后,该文件集被标记为冻结,交由合并器进行合并重排。另一文件集被选为当前可写入的集合。文件合并时,合并器选取文件集中的顺串文件进行合并。由于文件数量较多,合并算法选取基于斐波那契数列的多路合并算法。每个数据文件记录操作该文件的事务ID,复用现有的数据可见性机制来保证所有操作均符合事务性要求。
本实施例中,所述设定的排序规则优先选用堆排序算法。堆排序算法是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。所述的斐波那契数列的多路合并算法,斐波那契数列(Fibonacci sequence)指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*,N*表示不含0的自然数集)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。
如图4所示,本申请还提供一种关系型数据库的数据查询方法,包括:
S201.接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
S202.根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
S203.根据所述索引在所述文件列表中查询,输出查询数据。
具体实施时,数据库的存储引擎提供一套类似PostgreSQL access method(访问方法)的接口提供对上层的查询。查询请求经过解析后,最后要通过存储引擎对单个表的部分列进行扫描。由于数据已经经过排序,而每个文件记录了它的最大和最小的排序键,通过键筛选出待访问的文件列表。每个文件的内部可以动态切成若干个更小的访问单元,并对这些单元设置min/max索引,从而定位到目标逻辑数据块。当访问到某一块的数据时,根据被筛选的列读取对应的数据范围。如果是多列,且命中亲和性,可以一次性读取。由于数据采用了全序聚集存储的方式,对于较大范围的数据可以顺序性地读取,从而提高了IO效率。
基于同一发明构思,本发明实施例中还提供了一种关系型数据库的数据存储装置,如下面的实施例所述。由于关系型数据库的数据存储装置解决问题的原理与关系型数据库的数据存储方法相似,因此关系型数据库的数据存储装置的实施可以参见关系型数据库的数据存储方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本发明实施例的关系型数据库的数据存储装置300的一种结构框图,如图5所示,包括:
文件存储模块301,用于接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件;
聚集存储模块302,用于分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
具体实施时,所述聚集存储模块302在分别获得所述文件中数据列相互之间的关联度,包括:在所述文件的数据列表中进行查询,判断是否有用户自定义设置的关联度值;若有,则根据用户的自定义设置,分别获得所述文件中数据列相互之间的关联度;若无,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度。
具体实施时,所述聚集存储模块302根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:根据历史访问数据,分别计算每个数据列在设定的历史时间段内的历史访问次数;将所述历史访问次数与设定的次数阈值进行对比,得到所述历史访问次数满足设定的次数阈值的多个数据列,对该多个数据列进行关联度赋值,使该多个数据列之间的所述关联度满足所述设定的关联度阈值。
具体实施时,所述聚集存储模块302还用于:将顺次写入的多个所述文件存储至一个文件集中,当所述文件集中的所述文件数量达到设定的文件阈值时,则冻结该文件集的写入操作,并将该文件集中的多个所述文件进行合并处理,同时由另一个文件集接受写入处理,或由另外的多个文件集同时接受写入处理。
图6是本发明实施例的关系型数据库的数据查询装置400的一种结构框图,如图6所示,包括:
查询请求接收模块401,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块402,用于根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
第二查询模块403,用于根据所述索引在所述文件列表中查询,输出查询数据。
本发明实施例实现了如下技术效果:
本发明实施例面向时序数据,通过实现高吞吐入库和低延时复杂查询,针对高速、乱序到达的数据,提供了一种优化的解决方案。将数据以文件为粒度进行存储,将其存储为一个文件,而不是一组数据库的块,若待访问的数据集中在一个文件里,可以实现IO的顺序访问,避免在多个块之间进行随机IO,同时节省了块寻址的存储和访问代价,大幅提高了数据访问效率。并且数据采用了全序存储的方式,对于较大范围的数据可以顺序性地读取,从而提高了IO效率,以及提高了时间窗口的查询效率,实测结果表明数据写入基本可以达到磁盘带宽的上限,查询基本无随机IO。本发明实施例实现了高效的数据多路归并,保证了乱序到达的数据有序存储,从而大幅提高了时间窗口的查询效率。
在一种实施例中,提供了一种计算机设备,如图7所示,包括存储器501、处理器502及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种关系型数据库的数据存储方法,其特征在于,包括:
接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的所述待存储数据分别存储为多个文件;
分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
分别获得所述文件中数据列相互之间的关联度,包括:
在所述文件的数据列表中进行查询,判断是否有用户自定义设置的关联度值;若有,则根据用户的自定义设置,分别获得所述文件中数据列相互之间的关联度;若无,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度;
根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:
根据历史访问数据,分别计算每个数据列在设定的历史时间段内的历史访问次数;将所述历史访问次数与设定的次数阈值进行对比,得到所述历史访问次数满足设定的次数阈值的多个数据列,对该多个数据列进行关联度赋值,使该多个数据列之间的所述关联度满足所述设定的关联度阈值;
其中,将所述关联度满足所述设定的关联度阈值的多个数据列作为一个聚集列,所述聚集列的关联度与该聚集列中各数据列的历史访问次数的总数呈正相关;将多个不同的所述设定的历史时间段内的多组聚集列按照关联度的大小顺序排序,将每组聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
所述设定的排序规则包括堆排序算法。
2.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,所述方法还包括:
将顺次写入的多个所述文件存储至一个文件集中,当所述文件集中的所述文件数量达到设定的文件阈值时,则冻结该文件集的写入操作,并将该文件集中的多个所述文件进行合并处理,同时由另一个文件集接受写入处理,或由另外的多个文件集同时接受写入处理。
3.一种关系型数据库的数据查询方法,所述关系型数据库采用如权利要求1所述的关系型数据库的数据存储方法,其特征在于,包括:
接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
根据所述索引在所述文件列表中查询,输出查询数据。
4.一种关系型数据库的数据存储装置,应用如权利要求1所述的关系型数据库的数据存储方法,其特征在于,包括:
文件存储模块,用于接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件;
聚集存储模块,用于分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
5.一种关系型数据库的数据查询装置,应用如权利要求3所述的关系型数据库的数据查询方法,其特征在于,包括:
查询请求接收模块,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
第一查询模块,用于根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
第二查询模块,用于根据所述索引在所述文件列表中查询,输出查询数据。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1或2所述的关系型数据库的数据存储方法和/或权利要求3所述的关系型数据库的数据查询方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1或2所述的关系型数据库的数据存储方法和/或权利要求3所述的关系型数据库的数据查询方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410171438.XA CN117725096B (zh) | 2024-02-07 | 2024-02-07 | 关系型数据库的数据存储和查询方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410171438.XA CN117725096B (zh) | 2024-02-07 | 2024-02-07 | 关系型数据库的数据存储和查询方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117725096A CN117725096A (zh) | 2024-03-19 |
CN117725096B true CN117725096B (zh) | 2024-05-03 |
Family
ID=90205637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410171438.XA Active CN117725096B (zh) | 2024-02-07 | 2024-02-07 | 关系型数据库的数据存储和查询方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117725096B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014191593A (ja) * | 2013-03-27 | 2014-10-06 | Nec Corp | カラムストア型データベース管理システム |
CN108563711A (zh) * | 2018-03-28 | 2018-09-21 | 山东昭元信息科技有限公司 | 一种基于时间节点的时序数据存储方法 |
CN109033271A (zh) * | 2018-07-10 | 2018-12-18 | 上海达梦数据库有限公司 | 基于列存储的数据插入方法、装置、服务器及存储介质 |
CN113051225A (zh) * | 2021-04-10 | 2021-06-29 | 西安烽火软件科技有限公司 | 基于块数据的orc优化数据存储格式及数据读写方法 |
CN116821133A (zh) * | 2023-06-30 | 2023-09-29 | 联想(北京)有限公司 | 一种数据处理方法和装置 |
-
2024
- 2024-02-07 CN CN202410171438.XA patent/CN117725096B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014191593A (ja) * | 2013-03-27 | 2014-10-06 | Nec Corp | カラムストア型データベース管理システム |
CN108563711A (zh) * | 2018-03-28 | 2018-09-21 | 山东昭元信息科技有限公司 | 一种基于时间节点的时序数据存储方法 |
CN109033271A (zh) * | 2018-07-10 | 2018-12-18 | 上海达梦数据库有限公司 | 基于列存储的数据插入方法、装置、服务器及存储介质 |
CN113051225A (zh) * | 2021-04-10 | 2021-06-29 | 西安烽火软件科技有限公司 | 基于块数据的orc优化数据存储格式及数据读写方法 |
CN116821133A (zh) * | 2023-06-30 | 2023-09-29 | 联想(北京)有限公司 | 一种数据处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117725096A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100458779C (zh) | 扩展索引的方法 | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
CN105912687B (zh) | 海量分布式数据库存储单元 | |
CN109325032B (zh) | 一种索引数据存储及检索方法、装置及存储介质 | |
JP3318834B2 (ja) | データファイルシステム及びデータ検索方法 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN113961514B (zh) | 数据查询方法及装置 | |
US20150058352A1 (en) | Thin database indexing | |
US10963440B2 (en) | Fast incremental column store data loading | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、系统及存储介质 | |
US20160188643A1 (en) | Method and apparatus for scalable sorting of a data set | |
WO2023143095A1 (en) | Method and system for data query | |
CN113656397A (zh) | 一种针对时序数据的索引构建及查询的方法、装置 | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN105550180A (zh) | 数据处理的方法、装置及系统 | |
Bercea et al. | Dynamic dictionaries for multisets and counting filters with constant time operations | |
CN117725096B (zh) | 关系型数据库的数据存储和查询方法、装置、设备及介质 | |
US7792825B2 (en) | Fast select for fetch first N rows with order by | |
CN114398373A (zh) | 应用于数据库存储的文件数据存储读取方法及装置 | |
CN114416741A (zh) | 基于多级索引的kv数据写入读取方法、装置及存储介质 | |
CN114691612A (zh) | 数据写入方法及装置、数据读取方法及装置 | |
Kraus et al. | Fishing in the stream: similarity search over endless data | |
CN117725095B (zh) | 面向数据集的数据存储和查询方法、装置、设备及介质 | |
KR100892406B1 (ko) | 정보 검색 방법 및 그 시스템 | |
CN111723266A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |