一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于数据汇聚存储方式的数据库的制作方法

2022-02-24 16:28:20 来源:中国专利 TAG:

1.本发明属于数据库技术领域,具体涉及一种基于数据汇聚存储方式的数据库。


背景技术:

2.现有存取数据的结构中,从平衡二叉树、b树、b 树、b*树总体来看它们的贯彻的思想是相同的,都是采用二分法和数据平衡策略来提升查找数据的速度;在很多领域内产生的与时间/空间有关的数据信息,经常是如下组织形式:
3.所有数据先按维度1排布;维度1内每一数据按维度2排布;维度2内每一组数据按维度3排布;
4.例如一种气象数据是这样排布的:
5.每个时间点1个文件;时间点文件内部每个对象代表1个参数类型,例如温度、湿度、风力等等。
6.每个参数类型由三维数组构成,例如温度数组的组织形式:[高度1][经度1][纬度1]=温度1;通常第一个维度是时间,因为数据是每过一段时间生成一次的。因此举例需求:
[0007]
同一时间,单一位置(一个高度经纬度确定的点),所有变量的时间序列。即:[时间1][温度]=a1; [时间1][湿度]=b1;[时间1][风向]=c1;......[时间2][气压]=z2;[时间2][温度]=a2;[时间2][湿度]=b2;[时间2][风向]=c2;......;[时间2][气压]=z2;......[时间n][气压]=zn;[时间n][温度]=an; [时间n][湿度]=bn;[时间n][风向]=cn;......[时间n][气压]=zn。
[0008]
读取这一序列在原始的数据排布中,需要访问硬盘中的大量分散位置,速度缓慢。本发明提出一种新型数据库,能根据读取需求,迅速把数据组织成便于快速度取的形式。


技术实现要素:

[0009]
本发明的目的是提供一种基于数据汇聚存储方式的数据库,解决现有数据库在针对一些固有排序数据时,读取这一序列在原始的数据排布中,需要访问硬盘中的大量分散位置,速度缓慢的问题。
[0010]
为了实现上述目的,本发明采用以下技术方案:
[0011]
本发明提供一种基于数据汇聚存储方式的数据库,数据导入数据库时,从数据原始的顺序,整理为按需求读取的数据;整理方法如下:
[0012]
采用多核cpu,并预留一块共享缓存空间;每个核按原始文件中最外层维度读入一组数据并在缓存中按照目标顺序进行数据排列,生成排序文件;所有参与操作的cpu核并行工作,把所述最外层维度下的所有记录生成排序文件在一个缓存文件;然后存入数据库。
[0013]
根据上述技术,通过数据导入数据库时从数据原始的顺序,整理为按需求读取的数据,使得数据在读取时,可以将需求数据一并读取,不需要在分散的数据库中分别读取,提高读取速度;通过采用多核cpu,并预留一块共享缓存空间;每个核按原始文件中最外层维度读入一组数据并在缓存中按照目标顺序进行数据排列,生成排序文件;数据通过操作
在同一缓存文件,形成排序文件,序列文件中包括各自的数据;使得从数据库读出数据时,读取指定序列,找到涉及指定序列的每个排序文件,同时对所有排序文件发起读操作,硬盘可以缓存多个读操作,并且并行读取,然后拼接成一个结果序列并输出,可以将序列文件一并读取;由此,序列文件通过同一缓存文件存入,通过序列并行读出;使得读取速度更快;解决现有数据库在针对一些固有排序数据时,读取这一序列在原始的数据排布中,需要访问硬盘中的大量分散位置,速度缓慢的问题。
[0014]
在一种可能的设计中,所有参与操作的cpu核并行工作一次,能把m个记录变成一个缓存,m为正整数;
[0015]
若最外层维度的记录数量n大于m,n为正整数,致使所有cpu核并行工作不能一次性读取所述最外层维度下的所有记录,则所有cpu核循环参与操作且同样并行工作,直到将最外层维度下的所有记录都生成排序文件在一个缓存文件;然后存入数据库。通过所有cpu核循环参与操作且同样并行工作,直到将最外层维度下的所有记录都生成排序文件在一个缓存文件,可以将最外层维度的记录数量更多的情况下,使得排序在一个缓存中,使得数据依然保持邻近存放,读出排序文件时,可以并行读出,提高读取速度。
[0016]
在一种可能的设计中,在读出数据时,若所述最外层维度下所有的文件数量不能通过一个缓存文件进行排序时,则将已经生成的缓存文件作为子序列输入,生成第二级排序文件;重复操作,直到所述最外层维度下所有的文件读取完毕且完全按目标顺序排序,并生成多级排序文件,输出数据。由此,可以在读取数据时,将数据较多的文件一次性按照目标顺序读出。
[0017]
在一种可能的设计中,从数据库读出数据时,读取指定序列,找到涉及指定序列的每个排序文件,同时对所有排序文件发起读操作,硬盘缓存多个读操作,并且并行读取,然后拼接成一个结果序列并输出;从而获得数据。
[0018]
在一种可能的设计中,若指定序列中存在子序列,则将子序列中的所有排序文件一并读取,并将子序列中所有排序文件与指定序列中的排序文件拼接成一个结果序列并输出。
[0019]
在一种可能的设计中,当数据库存在多个计算机节点组成的集群时,在导入数据之前,首先把原始数据,根据外层维度分成多个节点文件,将所述节点文件映射到多个所述计算机节点,然后计算机节点按照所述整理方法存入数据库。
[0020]
在一种可能的设计中,读取多个计算机节点组成的集群时,由发起的计算机节点把读取要求分发到其他各个计算机节点;每个计算机节点分别读取与结果序列相关的排序文件,得到多个排序文件;然后把多个排序文件送到一个收集结果的计算机节点,该计算机节点把所有排序文件拼接成目标序列文件,返回结果。
[0021]
在一种可能的设计中,所述最外层维度为时空维度,所述时空维度通过时间点与空间坐标共同标定。
[0022]
有益效果:
[0023]
1、本发明提供的一种基于数据汇聚存储方式的数据库,通过数据导入数据库时从数据原始的顺序,整理为按需求读取的数据,使得数据在读取时,可以将需求数据一并读取,不需要在分散的数据库中分别读取,提高读取速度;通过采用多核cpu,并预留一块共享缓存空间;每个核按原始文件中最外层维度读入一组数据并在缓存中按照目标顺序进行数
据排列,生成排序文件;数据通过操作在同一缓存文件,形成排序文件,序列文件中包括各自的数据;使得从数据库读出数据时,读取指定序列,找到涉及指定序列的每个排序文件,同时对所有排序文件发起读操作,硬盘可以缓存多个读操作,并且并行读取,然后拼接成一个结果序列并输出,可以将序列文件一并读取;由此,序列文件通过同一缓存文件存入,通过序列并行读出;使得读取速度更快;解决现有数据库在针对一些固有排序数据时,读取这一序列在原始的数据排布中,需要访问硬盘中的大量分散位置,速度缓慢的问题;
[0024]
2、本发明提供的一种基于数据汇聚存储方式的数据库,通过所有cpu核循环参与操作且同样并行工作,直到将最外层维度下的所有记录都生成排序文件在一个缓存文件,可以将最外层维度的记录数量更多的情况下,使得排序在一个缓存中,使得数据依然保持邻近存放,读出排序文件时,可以并行读出,提高读取速度。
具体实施方式
[0025]
下面结合具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
[0026]
本发明第一方面提供的所述基于数据汇聚存储方式的数据库,数据导入数据库时,从数据原始的顺序,整理为按需求读取的数据;整理方法如下:
[0027]
采用多核cpu,并预留一块共享缓存空间;每个核按原始文件中最外层维度读入一组数据并在缓存中按照目标顺序进行数据排列,生成排序文件;所有参与操作的cpu核并行工作,把所述最外层维度下的所有记录生成排序文件在一个缓存文件;然后存入数据库。具体实施时,所述最外层维度为时空维度,所述时空维度通过时间点与空间坐标共同标定。作为示例的,最外层维度以时间序列举例:时间文件具有3 个,分别是时间1文件、时间2文件、时间3文件;其中时间1文件被cpu第一个核进行读入,时间2 文件被cpu第二个核进行读入,时间3文件被cpu第三个核进行读入,cpu通过3个核进行同步读入,形成缓存文件1,记作以下方式:
[0028]
时间1文件
‑‑‑‑
》cpu核1|,
[0029]
时间2文件
‑‑‑‑
》cpu核2|,
[0030]
时间3文件
‑‑‑‑
》cpu核3|====》缓存文件1;
[0031]
例如:以空间坐标[高度1][经度1][纬度1],时间1文件中包括温度、湿度、风向...气压等z个数据项目;缓存文件1变成以下形式:
[0032]
[高度1][经度1][纬度1][时间1][温度]=a1,
[0033]
[高度1][经度1][纬度1][时间1][湿度]=b1,
[0034]
[高度1][经度1][纬度1][时间1][风向]=c1,
[0035]
......
[0036]
[高度1][经度1][纬度1][时间1][气压]=z1;
[0037]
针对时间1文件,生成序列文件a1,b1,c1......z1;
[0038]
同理,时间2文件、时间3文件中包括温度、湿度、风向......气压等z个数据项目;
生成时间2 文件的序列文件a2,b2,c2......z2;生成时间3文件的序列文件a3,b3,c3......z3;
[0039]
由此可知,时间1文件、时间2文件、时间3文件的数据通过操作在缓存文件1,形成时间1、时间 2、时间3的序列,三个时间序列中包括各自的子序列文件,使得从数据库读出数据时,读取指定序列,找到涉及指定序列的每个排序文件,同时对所有排序文件发起读操作,硬盘可以缓存多个读操作,并且并行读取,然后拼接成一个结果序列并输出,可以序列文件一并读取,序列文件通过同一缓存文件存入,通过序列并行读出;使得读取速度更快。
[0040]
具体的,每个排序文件中的子序列并不要求连续性,例如:
[0041]
排序文件1中包括:时间1,时间3,时间9,时间27;
[0042]
排序文件2中包括:时间2,时间5,时间11,时间19;
[0043]
在一种可能实施方式中,所有参与操作的cpu核并行工作一次,能把m个记录变成一个缓存,m为正整数;
[0044]
若最外层维度下的文件数量n大于m,n为正整数,致使所有cpu核并行工作不能一次性读取所述最外层维度下的所有记录,则所有cpu核循环参与操作且同样并行工作,直到将最外层维度下的所有记录都生成排序文件在一个缓存文件;然后存入数据库。
[0045]
作为示例的:
[0046]
时间1文件
‑‑‑‑
》cpu核1|,
[0047]
时间2文件
‑‑‑‑
》cpu核2|,
[0048]
时间3文件
‑‑‑‑
》cpu核3|,
[0049]
......
[0050]
时间m文件
‑‑‑‑
》cpu核m|====》缓存文件1;
[0051]
缓存文件变成以下形式:
[0052]
[高度1][经度1][纬度1][时间1][温度]=a1,
[0053]
[高度1][经度1][纬度1][时间1][湿度]=b1,
[0054]
[高度1][经度1][纬度1][时间1][风向]=c1,
[0055]
......
[0056]
[高度1][经度1][纬度1][时间1][气压]=z1;
[0057]
......
[0058]
[高度m][经度m][纬度m][时间m][温度]=am,
[0059]
[高度m][经度m][纬度m][时间m][湿度]=bm,
[0060]
[高度m][经度m][纬度m][时间m][风向]=cm,
[0061]
......
[0062]
[高度m][经度m][纬度m][时间m][气压]=zm;
[0063]
其中,a、b、c
……
z为文件名,当然,该文件名只是一种示例,其无数量限制。所有参与操作的cpu 核并行工作,把m个记录变成一个缓存文件。
[0064]
例如共有n个文件要添加到数据库,最外层维度的记录数量n大于m;就反复重复上述操作直到所有记录都生成排序文件。
[0065]
在一种可能实施方式中,在读出数据时,若所述最外层维度下所有的文件数量不能通过一个缓存文件进行排序时,则将已经生成的缓存文件作为子序列输入,输出2级排序
文件;重复操作,直到所述最外层维度下所有的文件读取完毕且完全按目标顺序排序,并生成多级排序文件。作为示例的:a、b、c、到z 类有顺序的数据分别有1000个有顺序的数据;在读取时,
[0066]
例如读取第1级文件如下:
[0067]
a1b1c1.....z1;
[0068]
a2b2c2......z2;
[0069]
......
[0070]
a1000b1000c1000......z1000;
[0071]
则可以通过读取成多级文件,按照目标顺序输出,输出的多级文件如下:
[0072]
a1a2...a1000b1b2...b1000c1c2...c1000...z1z2......z1000;
[0073]
一次性读取排序无法直接输出,所以需要引入中间级,中间级如下:
[0074]
例如第一次排成1级,排三个点:
[0075]
a1a2a3b1b2b3...z1z2z3;
[0076]
a4a5a6b4b5b6...z4z5z6;
[0077]
.....
[0078]
a997a998a999b997b998b999...z997z998z999;
[0079]
a1000b1000...z1000;
[0080]
在第二级排,每级读出的数据量根据数据需求而定,则是可以是如下数据序列:
[0081]
a1a2a3a4a5a6b1b2b3b4b5b6...z1z2z3z4z5z6;
[0082]
a7a8a9a10a11a12b7b8b9b10b11b12...z7z8z9z10z11 z12;
[0083]
...
[0084]
a990a991a992a993a994a995a996b990b991b992b993b994b995b996...z991z992z993z994z995z996;
[0085]
每一级对数据归拢一步,最后输出多级的按照目标顺序读出的数据序列。
[0086]
在一种可能实施方式中,若指定序列中存在子序列,则将子序列中的所有排序文件一并读取,并将子序列中所有排序文件与指定序列中的排序文件拼接成一个结果序列并输出。
[0087]
在一种可能实施方式中,当数据库存在多个计算机节点组成的集群时,在导入数据之前,首先把原始数据,根据外层维度分成多个节点文件,将所述节点文件映射到多个所述计算机节点,然后计算机节点按照所述整理方法存入数据库。
[0088]
具体实施的,首先把原始数据,根据一定策略,映射到多个节点。每个节点的数据不完整。
[0089]
例如:
[0090]
节点1:时间1,时间15,时间29;
[0091]
节点2:时间5,时间19,时间33;
[0092]
每个节点分别按上述策略,把各自的数据集映射成排序文件。
[0093]
在一种可能实施方式中,读取多个计算机节点组成的集群时,由发起的计算机节点把读取要求分发到其他各个计算机节点;每个计算机节点分别读取与结果序列相关的排序文件,得到多个排序文件;然后把多个排序文件送到一个收集结果的计算机节点,该计算
机节点把所有排序文件拼接成目标序列文件,返回结果。
[0094]
由此可见,本发明提供的一种基于数据汇聚存储方式的数据库,通过数据导入数据库时从数据原始的顺序,整理为按需求读取的数据,使得数据在读取时,可以将需求数据一并读取,不需要在分散的数据库中分别读取,提高读取速度;通过采用多核cpu,并预留一块共享缓存空间;每个核按原始文件中最外层维度读入一组数据并在缓存中按照目标顺序进行数据排列,生成排序文件;数据通过操作在同一缓存文件,形成排序文件,序列文件中包括各自的数据;使得从数据库读出数据时,读取指定序列,找到涉及指定序列的每个排序文件,同时对所有排序文件发起读操作,硬盘可以缓存多个读操作,并且并行读取,然后拼接成一个结果序列并输出,可以将序列文件一并读取;由此,序列文件通过同一缓存文件存入,通过序列并行读出;使得读取速度更快;解决现有数据库在针对一些固有排序数据时,读取这一序列在原始的数据排布中,需要访问硬盘中的大量分散位置,速度缓慢的问题。
[0095]
本实施例第二方面提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,执行如实施例第一方面或第一方面中任意一种可能实施方式中的所述方法。所述计算机可读存储介质是指存储数据的载体,可以但不限于包括软盘、光盘、硬盘、闪存、优盘和/或记忆棒(memorystick)等,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0096]
本实施例提供的计算机可读存储介质的工作过程、工作细节和技术效果,可以参见实施例第一方面,于此不再赘述。
[0097]
本发明第三方面提供了一种计算机程序产品,所述计算机程序产品包括指令,当所述指令在计算机上运行时,使所述计算机执行如实施例第一方面或实施例第一方面中任意一种可能的实施方式中所述的方法,其中,所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0098]
以上所描述的多个实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0099]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备执行各个实施例或者实施例的某些部分所述的方法。
[0100]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献