System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及关系型数据库,具体涉及一种关系型数据库的数据存储和查询方法、装置、设备及介质。
技术介绍
1、在大数据时代,处理高速、乱序到达的时序型数据是数据库系统的重要挑战之一。关系型数据库(例如postgresql)由于强大的功能、扩展性、优异的性能和可靠性、良好的生态成为实现特定领域数据库的基础。
2、例如当前市场上存在的多种分布式数据库存储引擎,如开源分布式关系型数据库tidb、cockroachdb等,它们致力于提供水平扩展和高并发访问,但在高速、乱序到达的时序型数据场景下仍有优化空间。
3、时序数据库。针对时序型数据的数据库(如influxdb、opentsdb)着重于时间序列数据的存储和查询,但通常缺乏对复杂查询的良好支持,而且在处理高速、乱序数据方面仍有性能瓶颈。
4、postgresql及其扩展。postgresql是一种广泛使用的关系型数据库系统,其插件和扩展机制为用户提供了灵活性。它只提供了heap(堆内存)这一种存储方式,其空间分配和回收策略会导致数据碎片化,io效率低。现有扩展如时序数据库timescaledb致力于提高时序数据的查询性能,但在乱序到达的高速数据处理、减少无用数据过滤等方面尚有改进空间。
5、因此,传统的关系型数据库系统在解决高速乱序数据场景下的时序数据问题时往往面临写入吞吐瓶颈、复杂查询延时较高等问题。
技术实现思路
1、有鉴于此,本申请实施例提供一种关系型数据库的数据存储和查询方法、装置、
2、本申请实施例提供以下技术方案:一种关系型数据库的数据存储方法,包括:
3、接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的所述待存储数据分别存储为多个文件;
4、分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
5、根据本申请一种实施例,分别获得所述文件中数据列相互之间的关联度,包括:
6、在所述文件的数据列表中进行查询,判断是否有用户自定义设置的关联度值;若有,则根据用户的自定义设置,分别获得所述文件中数据列相互之间的关联度;若无,则根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度。
7、根据本申请一种实施例,根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:
8、根据历史访问数据,分别计算每个数据列在设定的历史时间段内的历史访问次数;将所述历史访问次数与设定的次数阈值进行对比,得到所述历史访问次数满足设定的次数阈值的多个数据列,对该多个数据列进行关联度赋值,使该多个数据列之间的所述关联度满足所述设定的关联度阈值。
9、根据本申请一种实施例,所述方法还包括:
10、将顺次写入的多个所述文件存储至一个文件集中,当所述文件集中的所述文件数量达到设定的文件阈值时,则冻结该文件集的写入操作,并将该文件集中的多个所述文件进行合并处理,同时由另一个文件集接受写入处理,或由另外的多个文件集同时接受写入处理。
11、根据本申请一种实施例,所述设定的排序规则包括堆排序算法。
12、本申请还提供一种关系型数据库的数据查询方法,包括:
13、接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
14、根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
15、根据所述索引在所述文件列表中查询,输出查询数据。
16、本申请还提供一种关系型数据库的数据存储装置,包括:
17、文件存储模块,用于接收待存储数据,将所述待存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件;
18、聚集存储模块,用于分别获得所述文件中数据列相互之间的关联度,将所述关联度满足设定的关联度阈值的多个数据列作为一个聚集列,将该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储。
19、本申请还提供一种关系型数据库的数据查询装置,包括:
20、查询请求接收模块,用于接收并解析数据查询请求,所述数据查询请求包括待查询数据的键和索引;
21、第一查询模块,用于根据所述键在关系型数据库的数据文件中进行查询,获得待查询的文件列表;其中,所述关系型数据库的数据文件中,将存储数据按照写入的时间顺序划分至多个设定的时间段内,将该多个设定的时间段内的数据分别存储为多个文件,并且,将每个所述文件中数据列相互之间的关联度满足设定阈值的多个数据列作为一个聚集列,该聚集列中的多个数据列按照设定的排序规则进行排序,并按照排序将多个数据列的物理地址连续存储;
22、第二查询模块,用于根据所述索引在所述文件列表中查询,输出查询数据。
23、本申请还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法。
24、本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述的关系型数据库的数据存储方法和/或上述的关系型数据库的数据查询方法的计算机程序。
25、与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:本专利技术实施例面向时序数据,通过实现高吞吐入库和低延时复杂查询,针对高速、乱序到达的数据,提供了一种优化的解决方案。将数据以文件为粒度进行存储,将其存储为一个文件,而不是一组数据库的块,若待访问的数据集中在一个文件里,可以实现io的顺序访问,避免在多个块之间进行随机io,同时节省了块寻址的存储和访问代价,大幅提高了数据访问效率。并且数据采用了全序存储的方式,对于较大范围的数据可以顺序性地读取,从而提高了io效率,以及提高了时间窗口的查询效率。
本文档来自技高网...【技术保护点】
1.一种关系型数据库的数据存储方法,其特征在于,包括:
2.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,分别获得所述文件中数据列相互之间的关联度,包括:
3.根据权利要求2所述的关系型数据库的数据存储方法,其特征在于,根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:
4.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,所述设定的排序规则包括堆排序算法。
6.一种关系型数据库的数据查询方法,其特征在于,包括:
7.一种关系型数据库的数据存储装置,其特征在于,包括:
8.一种关系型数据库的数据查询装置,其特征在于,包括:
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的关系型数据库的数据存储方法和/或权利要求6所述的关系型数据库的数据查询方法。<
...【技术特征摘要】
1.一种关系型数据库的数据存储方法,其特征在于,包括:
2.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,分别获得所述文件中数据列相互之间的关联度,包括:
3.根据权利要求2所述的关系型数据库的数据存储方法,其特征在于,根据设定的关联度计算方法,计算获得所述文件中数据列相互之间的关联度,包括:
4.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,所述方法还包括:
5.根据权利要求1所述的关系型数据库的数据存储方法,其特征在于,所述设定的排序规则包括堆排序算法。
6.一种关系型数据库的数据查询方法,其特征在于...
【专利技术属性】
技术研发人员:王勇,唐鹏洲,姚延栋,翁岩青,
申请(专利权)人:北京四维纵横数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。