OD数据的存储及读取方法、装置、存储介质及计算机设备与流程

文档序号:30287386发布日期:2022-06-04 13:08阅读:567来源:国知局
OD数据的存储及读取方法、装置、存储介质及计算机设备与流程
od数据的存储及读取方法、装置、存储介质及计算机设备
技术领域
1.本发明涉及计算机领域,具体而言涉及一种od数据的存储及读取方法、装置、存储介质及计算机设备。


背景技术:

2.随着互联网技术的发展,需要采用配送方式提供的服务也日益增多,给配送业务带来很大压力。
3.目前,配送业务多为用户主动下单,服务提供方获得服务订单后分派配送资源进行配送。尤其是针对餐品配送的场景,服务订单及时配送就非常重要,其中预计达到时间(estimated time of arrival,eta)是尤为重要的指标。
4.预计到达时间是给定地图上的线路和出发时间,预估走完该路线的所属要的时间。而确定预计到达时间就需要获得相应的路线的距离,即eta距离数据,由此每个服务订单都需要查询到相应的od(origin-destination,起点及终点)数据,其中,od数据包括起点信息、终点信息及起点与终点之间的eta距离数据。由于服务订单的数量庞大及业务范围较广,就会产生大量的od数据,例如,全国范围的服务订单所需的od数据大概为330亿对,在现有技术中,这些大量的od数据存储在redis数据库内,而在服务订单较多的情况下,od数据的访问量较大,从而导致访问耗时较长,io吞吐量很高,不能满足快速查询到相应的od数据的需求。


技术实现要素:

5.有鉴于此,本发明实施例提供了一种od数据的存储及读取方法、装置、存储介质及计算机设备,以解决在现有技术中,大量的od数据存储在redis数据库内,而在服务订单较多的情况下,od数据的访问量剧增,从而导致访问耗时较长,io吞吐量很高,不能满足快速查询到相应的od数据的需求的问题。
6.第一方面,本发明实施例提供了一种od数据的存储方法,包括:获取批量od数据,其中,每个所述od数据包括起点网格数据、终点网格数据以及起点与终点之间的eta距离数据,所述起点网格数据为所述起点所在网格的网格数据,所述终点网格数据为所述终点所在网格的网络数据;对每个所述od数据的起点网格数据及终点网格数据进行编码整合,得到起终点网格数据编码,所述起终点网格数据编码为64位整数的编码;对所有所述od数据的eta距离数据进行缩减;存储所有所述的起终点网格编码及缩减后的eta距离数据。
7.在一种可能的实现方式中,所述对所有所述od数据的eta距离数据进行缩减,包括:对所有所述od数据的eta距离数据进行剪枝,得到剪枝后的eta距离数据;对所述剪枝后的eta距离数据进行离散化处理,以将所述剪枝后的eta距离数据划
分到多个区间内;对满足条件的区间内的eta距离数据进行分组压缩,得到多个eta距离数据压缩组。
8.在一种可能的实现方式中,对所有所述od数据的eta距离数据进行剪枝,得到剪枝后的eta距离数据,包括:基于每个所述od数据的起点网格数据及终点网格数据,计算每个所述od数据的曼哈顿距离;将每个所述od数据的eta距离数据与相应的曼哈顿距离进行比较,去除与所述曼哈顿距离相近的eta距离数据。
9.在一种可能的实现方式中,所述将每个所述od数据的eta距离数据与相应的曼哈顿距离进行比较,去除与所述曼哈顿距离相近的eta距离数据,包括:基于每个所述od数据的eta距离数据与相应的曼哈顿距离,按照如下公式,得到距离误差,所述距离误差为eta距离数据与相应的曼哈顿距离之间的误差;,其中,k为所述距离误差,l1为每个所述od数据的eta距离数据,l2为所述eta距离数据对应的曼哈顿距离;判断所述误差是否小于或等于预设误差阈值,若是,则将所述eta距离数据去除。
10.在一种可能的实现方式中,所述对满足条件的区间内的eta距离数据进行分组压缩,得到多个eta距离数据压缩组,包括:将所述距离误差在预设误差范围内的eta距离数据所在的区间确定为目标区间;对所述目标区间进行分组,生成多个eta距离数据组;对每个eta距离数据组进行压缩,得到多个压缩的eta距离数据组。
11.在一种可能的实现方式中,所述对每个所述eta距离数据组进行压缩,得到多个eta距离数据压缩组,包括:基于每个所述eta距离数据组进行位图压缩,以得到多个eta距离数据压缩组。
12.在一种可能的实现方式中,所述对每个所述eta距离数据组进行位图压缩,得到多个压缩eta距离数据组之后,还包括:确定每个所述eta距离数据压缩组的数据占比量;将数据占比量高于预设数据量阈值的eta距离数据压缩组进行拆分,得到多个子eta距离数据压缩组,以使各子eta距离数据压缩组与其他eta距离数据压缩的数量占比量相近。
13.在一种可能的实现方式中,所述对每个所述eta距离数据组进行压缩,得到多个eta距离数据压缩组,包括:对每个所述eta距离数据组进行高效位图压缩,以得到多个eta距离数据压缩组。
14.在一种可能的实现方式中,所述对每个所述od数据的起点网格数据及终点网格数据进行编码整合,得到起终点网格数据编码,包括:将所有所述od数据的起点网络数据及终点网格数据进行排序去重,得到所有所述起点网格数据及终点网格数据所涉及网格的网格数据;
对所有所述起点网格数据及终点网格数据所涉及网格的网格数,得到网格数据编码,所述网格数据编码为32位整数的编码;确定每个所述od数据的起点网格数据对应的网格数据编码,以及终点网格数据对应的网格数据编码;将每个所述od数据的起点网格数据对应的网格数据编码与终点网格数据对应的网格数据编码进行拼接,得到起终点网格数据编码。
15.第二方面,本发明实施例提供了一种od数据的读取方法,包括:获取待读取的od数据的地理位置数据及所述地理位置数据与起终点网格数据编码的映射关系,所述地理位置数据包括起点地理位置数据及终点地理位置数据,所述起终点网格数据编码为64位整数的编码;基于所述待读取的od数据的地理位置数据及所述地理位置数据与起终点网格数据编码的映射关系,查找到所述待读取的od数据的地理位置数据对应的起终点网格数据编码;查找与所述起终点网格数据编码对应的eta距离数据;判断是否查找到与所述起终点网格数据编码对应的eta距离数据,若是,则将查找到的eta距离数据确定为所述待读取的od数据的eta距离数据,若否,则基于所述待读取的od数据的地理位置数据,按照预设算法计算得到所述待读取的od数据的eta距离数据。
16.在一种可能的实现方式中,所述查找与所述起终点网格数据编码对应的eta距离数据,包括:在预设范围内,按照预设顺序或者通过多线程并行的方式遍历各目标eta距离数据压缩组内的eta距离数据,所述目标eta距离数据压缩组为eta距离数据在所述预设范围内的eta距离数据压缩组;如果在所述目标eta距离数据压缩组内没有查找到所述待读取的od数据的地理位置数据对应的eta距离数据,则按照预设顺序或者通过多线程并行的方式遍历剩余eta距离数据压缩组内的eta距离数据。
17.在一种可能的实现方式中,所述基于所述待读取的od数据的地理位置数据,按照预设算法计算得到所述待读取的od数据的eta距离数据包括:基于所述待读取的od数据的地理位置数据,计算得到对应的曼哈顿距离;将所述曼哈顿距离确定为所述待读取的od数据的eta距离数据。
18.第三方面,本发明实施例提供了一种od数据的存储装置,包括:获取模块,用于获取批量od数据,其中,每个所述od数据包括起点网格数据、终点网格数据以及起点与终点之间的eta距离数据,所述起点网格数据为所述起点所在网格的网格数据,所述终点网格数据为所述终点所在网格的网络数据;编码模块,用于对每个所述od数据的起点网格数据及终点网格数据进行编码整合,得到起终点网格数据编码,所述起终点网格数据编码为64位整数的编码;缩减模块,用于对所有所述od数据的eta距离数据进行缩减;存储模块,用于存储所有所述的起终点网格编码及缩减后的eta距离数据。
19.第四方面,本发明实施例提供了一种od数据的读取装置,包括:第二获取模块,用于获取待读取的od数据的地理位置数据及所述地理位置数据与
起终点网格数据编码的映射关系,所述地理位置数据包括起点地理位置数据及终点地理位置数据;第一查找模块,用于基于所述待读取的od数据的地理位置数据及所述地理位置数据与起终点网格数据编码的映射关系,查找到所述待读取的od数据的地理位置数据对应的起终点网格数据编码;第二查找模块,查找与所述起终点网格数据编码对应的eta距离数据;判断模块,用于判断是否查找到与所述起终点网格数据编码对应的eta距离数据,若是,则将查找到的eta距离数据确定为所述待读取的od数据的eta距离数据,若否,则基于所述待读取的od数据的地理位置数据,按照预设算法计算得到所述待读取的od数据的eta距离数据。
20.第五方面,本发明实施例提供了一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行上述od数据的存储方法或者上述的od数据的读取方法对应的操作。
21.第六方面,本发明实施例提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述od数据的存储方法或者上述的od数据的读取方法对应的操作。
22.根据本发明实施例所提供的一种od数据的存储及读取方法、装置、存储介质及计算机设备,该方法通过将每个od数据的起点网格数据及终点网格数据进行编码整合,以得到64位整数的起终点网格数据编码,从而降低起点网格数据及终点网格数据所占用的存储空间,并且通过对所有od数据的eta距离数据进行缩减,从而降低eta距离数据所占用的存储空间,进而大大降低了大量od数据所占用的存储空间,使得在 od数据的访问量较大的情况下,减小访问od数据的耗时,降低io吞吐量,能够满足快速查询到相应的od数据的需求。
附图说明
23.本发明的下列附图在此作为本发明实施例的一部分用于理解本发明。附图中示出了本发明的实施例及其描述,用来解释本发明的原理。
24.附图中:图1为根据本发明的一个可选实施例的一种od数据的存储方法的流程图;图2为根据本发明的一个可选实施例的步骤s102的流程图;图3为根据本发明的一个可选实施例的步骤s103的流程图;图4为根据本发明的一个可选实施例的步骤s301的流程图;图5为根据本发明的一个可选实施例的步骤s402的流程图;图6为根据本发明的一个可选实施例的步骤s303的流程图;图7为根据本发明的一个可选实施例的步骤s503的流程图;图8为根据本发明的一种od数据的读取方法的流程图;图9为步骤s703的流程图;图10为步骤s706的流程图;
图11为根据本发明的一个可选实施例的一种od数据的存储方法的结构示意图;图12为根据本发明的一个可选实施例的一种od数据的读取方法的结构示意图。
具体实施方式
25.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。
26.应予以注意的是,这里所使用的术语仅是为了描述具体实施例,而非意图限制根据本发明的示例性实施例。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式。此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。
27.现在,将参照附图更详细地描述根据本发明的示例性实施例。然而,这些示例性实施例可以多种不同的形式来实施,并且不应当被解释为只限于这里所阐述的实施例。应当理解的是,提供这些实施例是为了使得本发明的公开彻底且完整,并且将这些示例性实施例的构思充分传达给本领域普通技术人员。
28.第一方面,如图1所示,本发明实施例提供了一种od数据的存储方法,包括:步骤s101:获取批量od数据,其中,每个od数据包括起点网格数据、终点网格数据以及起点与终点之间的eta距离数据,起点网格数据为起点所在网格的网格数据,终点网格数据为终点所在网格的网络数据。
29.网格是将目标区域按照南北方向等间隔划分为n个平行区域,再按照东西方向等间隔划分为m个平行区域所形成的,在上述的划分方式中,在目标区域中形成了m*n个网格,其中,m与n为大于1的正整数,目标区域可由工作人员根据实际需求进行确定,目标区域可以为商圈、城市或者全国,本实施例不做严格限定,可以理解的是,目标区域越大,则网格数量越多,目标区域越小,则网格数量越少。在具体应用中,网格的尺寸通常为10m*10m的正方形,在目标区域为全国的情况下,网格的数量为1.7亿。
30.每个网格均具有相应的网格数据,网格数据包括网格中心点的位置信息,也就是网格中心点的经度坐标值与纬度坐标值从而通过网格数据就可确定目标区域中各部分的地理位置。
31.网格中心点的经度坐标值与纬度坐标值可在地理坐标系(简称wgs)中确定,该坐标系包括两个要素,即纬度坐标和经度坐标,其中,经度坐标的取值范围在[-180,180],纬度坐标的取值范围在[-90,90],当然,经度坐标值及纬度坐标值还可由其他坐标系中确定,本实施例不做严格限定。值得注意的是,所有网格数据的确定需要采用同一坐标系。
[0032]
od(origin-destination,起点及终点)数据包括但不限于起点网格数据、终点网格数据以及起点与终点之间的eta距离数据。其中,起点网格数据为起点所在网格的网格数据,例如,如果起点所在网格的网格数据为(38.5,51.0),那么起点网格数据也为(38.5,51.0)。同样地,终点网格数据为终点所在网格的网络数据,例如,如果终点所在网格的网格数据为(50.0,60.0),那么起点网格数据也为(50.0,60.0)。
[0033]
eta距离是指起点与终点间的路线的路面距离,eta距离可从在高德接口获得。利用eta距离以及移动对象的预估运动速度,就可以得到预计达到时间(estimated time of arrival,eta)。
[0034]
在餐品配送的场景中,起点为配送资源(配送人员或者配送机器人)接到配送任务的位置,终点为订餐用户所在的位置,而起点至终点的配送路线需经过被点餐的商家,以使配送资源能够前往该商家取餐,这样起点网格数据为配送资源(配送人员或者配送机器人)接到配送任务的位置所在网格的网格数据,终点网格数据为订餐用户的位置所在网格的网格数据,eta距离为配送路线的路面距离。利用eta距离以及配送资源的预估移动速度,就可以得到预计达到时间(estimated time of arrival,eta),其中,配送资源的预估移动速度可由该配送资源在一段时间内的平均移动速度来确定。
[0035]
进一步地,在获取批量的od数据之前,od数据可在一段时间内进行更新,具体可采用双缓冲的方式来进行更新,即历史od数据存储在第一缓冲区内,而实时更新的od数据则存储在第二缓冲区内,第一缓冲区与第二缓冲区为不同的缓冲区,这样在od数据更新完毕后,将所有更新的od数据转移至第一缓冲区,以替换第一缓冲内的历史od数据,从而实现od数据的更新。相比于现有技术中直接对历史od数据进行实时更新的方式,该更新方式能够避免由实时更新导致数据错误而影响od数据访问,从而提高了od数据访问的稳定性和可靠性。
[0036]
步骤s102:对每个od数据的起点网格数据及终点网格数据进行编码整合,得到起终点网格数据编码,起终点网格数据编码为64位整数的编码。
[0037]
在现有技术中,网格数据的经度坐标值与纬度坐标值均采用float类型编码,从而使每个od数据的起点网格数据中的经度坐标值与纬度坐标值均采用float类型编码,终点网格数据中的经度坐标值与纬度坐标值也均采用float类型编码,也就是每个od数据的起点网格数据具有两个float类型编码,终点网格数据具有两个float类型编码,每个od数据的起点网格数据及终点网格数据共具有四个float类型编码,每个float类型编码占四个字节,这样每个od数据的起点网格数据及终点网格数据共占十六个字节。
[0038]
而在本步骤中,将每个od数据的起点网格数据及终点网格数据进行编码整合,得到64位整数的起终点网格数据编码,其仅占用四个字节,由此大大降低起点网格数据及终点网格数据所占用的存储空间。
[0039]
步骤s103:对所有od数据的eta距离数据进行缩减。
[0040]
该步骤通过对所有od数据的eta距离数据进行缩减,从而降低eta距离数据所占用的存储空间。
[0041]
步骤s104:存储所有的起终点网格编码及缩减后的eta距离数据。
[0042]
通过起终点的网格编码及对eta距离数据进行缩减,从而大大降低了大量od数据所占用的存储空间,以300亿个od数据为例,其占用的存储空间在64g范围内,这样大量的od数据就可以存储在计算机设备的内存中,而无需存储在redis数据库内;并且也使得在 od数据的访问量较大的情况下,减小访问od数据的耗时,降低io吞吐量,能够满足快速查询到相应的od数据的需求。
[0043]
根据本发明实施例所提供的一种od数据的存储方法,该方法通过将每个od数据的起点网格数据及终点网格数据进行编码整合,以得到64位整数的起终点网格数据编码,从
而降低起点网格数据及终点网格数据所占用的存储空间,并且通过对所有od数据的eta距离数据进行缩减,从而降低eta距离数据所占用的存储空间,进而大大降低了大量od数据所占用的存储空间,使得在 od数据的访问量较大的情况下,减小访问od数据的耗时,降低io吞吐量,能够满足快速查询到相应的od数据的需求。
[0044]
下面对上述实施例中步骤s102进行详细阐述,具体地,如图2所示,步骤s102包括:步骤s201:将所有od数据的起点网络数据及终点网格数据进行排序去重,得到所有起点网格数据及终点网格数据所涉及网格的网格数据。
[0045]
由于一些od数据的起点网格数据可能与另一些od数据的终点网格数据为同一网格数据,例如,第一od数据的起点网格数据为(38.5,60.0),终点网格数据为(50.0,65.0);第二od数据的起点网格数据为(45.5,50.0),终点网格数据为(38.5,60.0),第一od数据的起点网格数据与第二od数据的起点网格数据为同一网格数据;或者一些od数据的终点网格数据可能与另一些od数据的终点网格数据为同一网格数据,例如,第三od数据的起点网格数据为(38.5,60.0),终点网格数据为(50.0,65.0);第四od数据的起点网格数据为(50.0,65.0),终点网格数据为(38.1,42.0),第三od数据的终点网格数据与第四od数据的起点网格数据为同一网格数据;或者一些od数据的终点网格数据或起点网格数据为同一网格数据,例如,第五od数据的起点网格数据为(53.0,65.0),终点网格数据为(15.0,63.0),第六od数据的起点网格数据为(53.0,65.0),终点网格数据为(30.5,12.6),因此该步骤对所有od数据的起点网络数据及终点网格数据进行排序去重,具体地,在将所有的起点网格数据及终点网格数据排序后,判断相邻两个网格数据是否相同,如果相同,则去除一个,从而就能够去除重复的网格数据,以避免后需对网格数据重复编码。
[0046]
步骤s202:对所有起点网格数据及终点网格数据所涉及网格的网格数据进行编码,得到网格数据编码,网格数据编码为32位整数的编码。
[0047]
步骤s203:确定每个od数据的起点网格数据对应的网格数据编码,以及终点网格数据对应的网格数据编码。
[0048]
该步骤与直接对每个od数据的起点网格数据及终点网格数据直接进行编码相比,能够避免可避免大量重复的编码工作,以提高编码速度。
[0049]
步骤s204:将每个od数据的起点网格数据对应的网格数据编码与终点网格数据对应的网格数据编码进行拼接,得到起终点网格数据编码。
[0050]
由于各网格数据编码为32为整数编码,因此,将每个od数据的起点网格数据对应的网格数据编码与终点网格数据对应的网格数据编码进行拼接,就能够得到64位整数的起终点网格数据编码。
[0051]
具体地,每个od数据的起点网格数据对应的网格数据编码与终点网格数据对应的网格数据编码的拼接过程为:将起点网格数据对应的网格数据编码左移32位,然后再与终点网格数据对应的网格数据编码拼接在一起,形成64位整数的起终点网格数据编码。当然,还可以采用其他的拼接方式,本实施例不做严格限定,可以理解的是各od数据采用同一拼接方式。
[0052]
下面对上述实施例中步骤s103进行详细阐述,具体地,如图3所示,步骤s103包括:步骤s301:对所有od数据的eta距离数据进行剪枝,得到剪枝后的eta距离数据。
[0053]
该步骤能够去除一部分eta距离数据,从而减小eta数据的数量,进而降低eta数据
占用的存储空间。而在访问od数据时,如果查找不到相应的eta数据,则可以通过计算机设备的处理器根据起点网格数据及终点网格数据,计算得到曼哈顿距离,以替代eta距离。
[0054]
步骤s302:对剪枝后的eta距离数据进行离散化处理,以将剪枝后的eta距离数据划分到多个区间内。
[0055]
步骤s303:对满足条件的区间内的eta距离数据进行分组压缩,得到多个eta距离数据压缩组。
[0056]
该步骤在查找一个od数据的eta距离时,就可先采用多线程同时遍历各eta距离数据压缩组内的eta距离数据,这样可以大大缩短遍历数据的时间,从而提高查找速度;如果没有查找到该od数据的eta距离,则再其他区间内进行查找,如果还没有查找到该od数据的eta距离,则再由处理器根据该od数据的起点网格数据及终点网格数据,计算得到曼哈顿距离,以替代eta距离。
[0057]
下面对上述实施例中步骤s301进行详细阐述,具体地,如图4所示,步骤s301包括:步骤s401:基于每个od数据的起点网格数据及终点网格数据,计算每个od数据的曼哈顿距离。
[0058]
其中,曼哈顿距离为起点及终点在南北方向上的距离加上在东西方向上的距离,即l(i,j)=|xi-xj|+|yi-yj|,其中,l为曼哈顿距离,一个od数据的起点网格数据为(xi,yi),终点网格数据为(xj,yj)。
[0059]
步骤s402:将每个od数据的eta距离数据与相应的曼哈顿距离进行比较,去除与曼哈顿距离相近的eta距离数据。
[0060]
在该步骤中,在一些场景中,例如餐品配送的场景,对eta距离的精确度不高,由此在曼哈顿距离与eta距离数据相近的情况下,可用曼哈顿距离替代eta距离,这样将与曼哈顿距离相近的eta距离数据去除,可大大减小eta距离数据的数据量。以300亿的od数据为例,能够去除80亿的eta距离数据。
[0061]
具体地,如图5所示,该步骤s402具体包括如下步骤:步骤s4021:基于每个od数据的eta距离数据与相应的曼哈顿距离,按照如下公式,得到距离误差,距离误差为eta距离数据与相应的曼哈顿距离之间的误差; ,其中,k为距离误差,l1为每个od数据的eta距离数据,l2为eta距离数据对应的曼哈顿距离。
[0062]
步骤s4022:判断误差是否小于或等于预设误差阈值,若是,则执行步骤s4023。
[0063]
步骤s4023:将eta距离数据去除。
[0064]
其中,预设误差阈值可由工作人员自行设定,本实施例不做严格限定,为了避免曼哈顿距离与eta距离相差太大,预设误差阈值通常取较小的值。示例性的,预设误差阈值为0.05。
[0065]
下面对上述实施例中步骤s303进行详细阐述,具体地,如图6所示,步骤s303包括:步骤s501:将距离误差在预设误差范围内的eta距离数据所在的区间确定为目标区间。
[0066]
其中,预设误差范围可由工作人员自行设定,本实施例不做严格限定。示例性的,
预设误差范围为0.05-0.2。
[0067]
步骤s502:对目标区间进行分组,生成多个eta距离数据组。
[0068]
目标区间的eta距离数据的数据量较大,数据占比较高,eta距离数据访问频率相对于其他区间也较高,由此对目标区间进行分组,以将大量的eta距离数据分散在各组,从而使各组数据能够被同时访问,提高访问速度。
[0069]
示例性的,以目标区间100m-20000m为例,以200m为步长,将该目标区间划分为100个eta距离数据组。当然,还可以采用其他步长,本实施例不做严格限定。
[0070]
步骤s503:对每个eta距离数据组进行压缩,得到多个压缩的eta距离数据组。
[0071]
为了进一步减各个eta距离数据组的占用空间,对各eta距离数据组进行压缩处理。具体而言,压缩eta距离数据组可采用两种方式。其中,如图7所示,一种实现方式的具体步骤如下:步骤s601:对每个eta距离数据组进行位图压缩,以得到多个eta距离数据压缩组。
[0072]
位图是存储多个同类事物的属性状态的常用存储方式。位图中包含很多个比特的内存块,通过比特值(0或1)来表示数据是否存,以能快速定位一个数值是否在存在。
[0073]
在本步骤中,比特值1表示相应的eta距离数据存在,比特值0表示相应的eta距离数据不存在。
[0074]
示例性的,下面为数字0-7对应的位图,数字6、4、2和1对应的位图的比特值为1,则表示6、4、2和1存在;数字7、5、3和0对应的位图的比特值为0。0101011076543210
[0075]
进一步地,为了使数据分布的更加合理,步骤s601之后还包括如下步骤:步骤s602:确定每个eta距离数据压缩组的数据占比量。
[0076]
步骤s603:将数据占比量高于预设数据量阈值的eta距离数据压缩组进行拆分,得到多个子eta距离数据压缩组,以使各子eta距离数据压缩组与其他eta距离数据压缩的数量占比量相近。
[0077]
在该步骤中,将数据占比量较高的eta距离数据压缩组进行拆分,从而使eta距离数据较为均匀的分布在各压缩组内,以使每个压缩组的访问时间相近,进而提高eta数据的访问速度。其中,预设数据量阈值通常设置为略大于平均数据占比量值,示例性的,如果eta距离数据压缩组的数量为四个,则平局数据占比量值为25%,那么预设数据量阈值可取25%-35%之间的数值。
[0078]
具体而言,对数据占比量高于数据占比量高于预设数据量阈值的eta距离数据压缩组的拆分方式可采用将eta距离数据平均分配的方式,使得各子eta距离数据压缩组与其他eta距离数据压缩的数量占比量相近。示例性的,假设共有三个eta数据压缩,第一个eta距离数据压缩组的数据占比量为16%,第二个eta距离数据压缩组的数据占比量为14%,第三个eta距离数据压缩组的数据占比量为70%,则将第三个eta距离数据压缩组拆分为4个子eta距离数据压缩组,每个子eta距离数据压缩组的数据占比量为15%,由此,各子eta距离数据压缩组与第一个eta距离数据压缩组及第二eta距离数据压缩组的数据占比量相近。
[0079]
另一种实现方式的具体步骤如下:对每个eta距离数据组进行高效位图压缩,以得到多个eta距离数据压缩组。
[0080]
高效位图(roaring bitmaps,rbm)是指对位图进一步压缩,从而使各eta距离数据组所占的存储空间更小。
[0081]
第三方面,如图8所示,本发明实施例提供了一种od数据的读取方法,包括:步骤s701:获取待读取的od数据的地理位置数据及地理位置数据与起终点网格数据编码的映射关系,起终点网格数据编码为64位整数的编码。
[0082]
其中,地理位置数据包括起点地理位置数据及终点地理位置数据,起点地理位置数据包括起点所在网格中心的经纬度坐标,终点地理位置数据包括终点所在网格中心的经纬度坐标。
[0083]
起终点网格数据编码可通过上述实施例中步骤s201-步骤s204得到,在此不再赘述。
[0084]
步骤s702:基于待读取的od数据的地理位置数据及地理位置数据与起终点网格数据编码的映射关系,查找到待读取的od数据的地理位置数据对应的起终点网格数据编码。
[0085]
步骤s703:查找与起终点网格数据编码对应的eta数据。
[0086]
步骤s704:判断是否查找到与起终点网格数据编码对应的eta距离数据,若是,则执行步骤s705,若否,则执行步骤s706。
[0087]
步骤s705:将查找到的eta距离数据确定为待读取的od数据的eta距离数据。
[0088]
步骤s706:基于待读取的od数据的地理位置数据,按照预设算法计算得到待读取的od数据的eta距离数据。
[0089]
在本步骤中,由于在od数据存储的过程中,对eta距离数据进行缩减处理,以降低eta距离数据的数量,从而降低od数据的存储空间。由此,在查找不到待读取的od数据的地理位置数据对应的eta距离数据的情况下,通过待读取的od数据的地理位置数据,按照预设算法计算得到待读取的od数据的eta距离数据。
[0090]
在本实施例中, 起终点网格数据编码采用64位整数编码,不仅能够降低起终点网格数据编码的存储空间,并且使得在 od数据的访问量较大的情况下,减小读取od数据的耗时,降低io吞吐量,能够满足快速查询到相应的od数据的需求。
[0091]
进一步地,在上述实施例中,如图9所示,步骤s703具体包括:步骤s801:在预设范围内,按照预设顺序或者通过多线程并行的方式遍历各目标eta距离数据压缩组内的eta距离数据,目标eta距离数据压缩组为eta距离数据在预设范围内的eta距离数据压缩组。
[0092]
预设范围可根据实际需求,由工作人员自行设置,一般地,预设范围为1-2km。
[0093]
在一些实施例中,遍历的方式采用按照预设顺序进行遍历,预设顺序一般按照eta距离数据由小到大的顺序进行遍历。而在另一些实施例中,通过多线程并行的方式同时遍历各目标eta距离数据压缩组内的eta距离数据,从而提高了查询速率,也就提高了读取eta距离数据的速率。
[0094]
eta距离数据压缩组可采用步骤s501-步骤s503获得,在此不再赘述。
[0095]
步骤s802:如果在目标eta距离数据压缩组内没有查找到待读取的od数据的地理位置数据对应的eta距离数据,则按照预设顺序或者通过多线程并行的方式遍历剩余eta距离数据压缩组内的eta距离数据。
[0096]
在本实施例中,先对预设范围内的eta距离数据压缩组,也就是目标eta距离数据
压缩组进行查找,以缩小eta距离数据的查找范围,从而进一步提高查找的效率,在目标eta距离数据压缩组内没有查找到待读取的od数据的地理位置数据对应的eta距离数据的情况下,再在剩余eta距离数据压缩组内进行查找,从而避免漏查的情况发生。
[0097]
进一步地,在上述实施例中,如图10所示,步骤s706具体包括:步骤s901:基于待读取的od数据的地理位置数据,计算得到对应的曼哈顿距离。
[0098]
曼哈顿距离的具体计算过程可参加步骤s401,在此不再赘述。
[0099]
步骤s902:将曼哈顿距离确定为待读取的od数据的eta距离数据。
[0100]
第三方面,如图10所示,本发明实施例提供了一种od数据的存储装置,包括:第一获取模块1001,用于获取批量od数据,其中,每个od数据包括起点网格数据、终点网格数据以及起点与终点之间的eta距离数据,起点网格数据为起点所在网格的网格数据,终点网格数据为终点所在网格的网络数据;编码模块1002,用于对每个od数据的起点网格数据及终点网格数据进行编码整合,得到起终点网格数据编码,起终点网格数据编码为64位整数的编码;缩减模块1003,用于对所有od数据的eta距离数据进行缩减;存储模块1004,用于存储所有的起终点网格编码及缩减后的eta距离数据。
[0101]
根据本发明实施例所提供的一种od数据的存储装置,该装置通过将每个od数据的起点网格数据及终点网格数据进行编码整合,以得到64位整数的起终点网格数据编码,从而降低起点网格数据及终点网格数据所占用的存储空间,并且通过对所有od数据的eta距离数据进行缩减,从而降低eta距离数据所占用的存储空间,进而大大降低了大量od数据所占用的存储空间,使得在 od数据的访问量较大的情况下,减小访问od数据的耗时,降低io吞吐量,能够满足快速查询到相应的od数据的需求。
[0102]
第四方面,如图11所示,本发明实施例提供了一种od数据的读取装置,包括:第二获取模块1101,用于获取待读取的od数据的地理位置数据及所述地理位置数据与起终点网格数据编码的映射关系,所述地理位置数据包括起点地理位置数据及终点地理位置数据,所述起终点网格数据编码为64位整数的编码;第一查找模块1102,用于基于所述待读取的od数据的地理位置数据及所述地理位置数据与起终点网格数据编码的映射关系,查找到所述待读取的od数据的地理位置数据对应的起终点网格数据编码;第二查找模块1103,查找与所述起终点网格数据编码对应的eta距离数据;判断模块1104,用于判断是否查找到与所述起终点网格数据编码对应的eta距离数据,若是,则将查找到的eta距离数据确定为所述待读取的od数据的eta距离数据,若否,则基于所述待读取的od数据的地理位置数据,按照预设算法计算得到所述待读取的od数据的eta距离数据。
[0103]
第五方面,本发明实施例提供了一种存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行上述od数据的存储方法及od数据的读取方法对应的操作。
[0104]
第六方面,本发明实施例提供了一种计算机设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;存储器用于存放至少一可执行指令,可执行指令使处理器执行上述od数据的存储方法及od数据的读取方法对应的操作。
[0105]
本发明已经通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外本领域技术人员可以理解的是,本发明并不局限于上述实施例,根据本发明的教导还可以做出更多种的变型和修改,这些变型和修改均落在本发明所要求保护的范围以内。本发明的保护范围由附属的权利要求书及其等效范围所界定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1