一种公交数据的处理系统、方法和装置与流程

未命名 07-20 阅读:290 评论:0


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.图1是本说明书的一个实施例公交数据的处理系统的结构示意图;
26.图2是本说明书的一个实施例公交数据处理方法的流程示意图;
27.图3是本说明书的一个实施例公交数据的处理系统的结构示意图;
28.图4是本说明书的一个实施例公交数据处理方法的流程示意图;
29.图5是本说明书的一个实施例电子设备的结构示意图;
30.图6是本说明书的一个实施例公交数据处理装置的结构示意图。
具体实施方式
31.为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都应当属于本文件的保护范围。
32.以下结合附图,详细说明本说明书各实施例提供的技术方案。
33.图1是本说明书的一个实施例公交数据的处理系统的结构示意图。图1所示的公交数据的处理系统10包括数据存储层11和数据处理层12,其中:
34.数据存储层11包括内存模块111和外存模块112,内存模块111用于存储公交数据的索引数据,外存模块112用于存储公交数据;
35.数据处理层12用于对实时更新的公交数据并行执行第一操作和第二操作,第一操作包括根据实时更新的公交数据更新内存模块111中的索引数据,第二操作包括将实时更新的公交数据存储到外存模块112。
36.内存模块111可以是数据处理系统10的系统内存,外存模块112可以是数据处理系统10中除系统内存在的其他存储设备,比如数据库等。在存储公交数据时,可以将公交数据的存储划分为索引存储和数据存储,内存模块111用于存储公交数据对应的索引数据(即索引存储),外存模块112用于存储完整的公交数据(即数据存储)。其中,内存模块111中的索引数据可用于查询外存模块112中的公交数据。
37.数据处理层12可以对不断的实时更新的公交数据进行处理。具体而言,公交数据的管理系统每收集到实时更新的公交数据后,可以将这些公交数据发送给数据处理层12,数据处理层12可以对实时更新的公交数据进行存储操作。该存储操作包括并行地执行第一操作第二操作,第一操作可以是索引存储操作,即将实时更新的公交数据对应的索引数据存储至内存模块111中,也即根据实时更新的公交数据更新内存模块111中的索引数据。第二操作可以是数据存储操作,即将公交数据存储至外存模块112。
38.数据处理层12在并行执行第一操作和第二操作时,可选地,可以通过多个线程实现,即数据处理层12在存储实时更新的公交数据时,可以开启两个线程,两个线程并行执行,一个线程负责执行第一操作,另一个线程负责执行第二操作。或者,也可以通过分布式的方式实现,比如数据处理层12包括多个分布式的数据处理设备,其中两个数据处理设备负责并行执行第一操作和第二操作,即一个数据处理设备执行第一操作,另一个数据处理设备执行第二操作。当然,在其他可能的实现方式中,也可以通过其他方式实现对第一操作和第二操作的并行执行,这里不再一一举例说明。
39.通过将公交数据的存储划分为索引存储和数据存储,当公交数据更新时,将实时更新的公交数据存储至外存模块中,将公交数据对应的索引数据存储至内存模块中,这样,在查询实时更新的公交数据时,可以在先内存模块中查询对应的索引然后再从外存模块中查询对应的公交数据,查询效率较快,由于完整的公交数据均存储在外存模块中,因此,还可以降低对内存模块的占用,由此,通过采用内外存融合的混合存储机制可以均衡查询时效和内存占用。此外,由于可以并行的对实时更新的公交数据执行数据存储操作和索引存储操作,因此,还可以提高执行效率。
40.可选地,内存模块111用于存储公交数据的索引数据,可以是用于按照预设的索引结构存储索引数据。在此基础上,数据处理层12用于根据实时更新的公交数据更新内存模块中的索引数据,可以是数据处理层12用于根据实时更新的公交数据,按照该预设的索引结构更新内存模块111中的索引数据。
41.预设的索引结构可以表征车辆轨迹(trajectory)、车辆的实时位置点(point)、区
域网格(grid)以及区域方格(cube)中至少两项之间的对应关系。内存模块111按照预设索引结构存储索引数据,可以是在内存模块111中维护记录有车辆轨迹、车辆的实时位置点、区域网格以及区域方格中至少两项之间的对应关系的映射表,便于对实时数据执行快速的查询。其中,车辆轨迹可以是公交车辆行驶的轨迹,车辆的实时位置点可以对应公交车辆的实时位置,一般地,在车辆运行的过程中,公交车辆的位置是实时更新的,车辆轨迹可以是公交车辆经过的所有点的位置所形成的轨迹,公交车辆的实时位置每更新一次,车辆轨迹就会向前延伸一个点。区域网格可以是将公交车辆行驶的区域范围进行划分后得到的网格,区域方格也可以是将公交车辆行驶的区域范围进行划分后得到的网格,不同的是,区域网格不包含时间信息,而区域方格是包含时间信息的,在更新与区域网格相关的索引结构时,会将历史数据擦除,更新后的索引结构为最新的公交数据对应的索引结构,在更新与区域方格相关的索引结构时,不会将历史数据擦除,更新后的索引结构包括多个不同时刻的索引结构,具有时间维度。
42.可选地,作为一个实施例,预设的索引结构可以包括以下(1)至(6)中的至少一项:
43.(1)第一索引结构,表征车辆轨迹和车辆的实时位置点之间的对应关系。
44.第一索引结构可以表示为tp-index,该索引结构记录了公交车辆的轨迹(trajectory)对应的实时位置点(point)的信息。在内存模块111中,针对该第一索引结果维护的是一个列表,该列表中记录了整个轨迹的所有采样点(即实时位置点)信息。
45.(2)第二索引结构,表征区域网格与经过区域网格的车辆轨迹之间的对应关系。
46.第二索引结构可以表示为gt-index,该索引结构记录了网格(grid)对应的经过该网格的所有轨迹(trajectory)的信息。在内存模块111中,针对该第二索引结果维护的是一个轨迹列表,该轨迹列表中记录了经过网格的所有轨迹的信息。
47.(3)第三索引结构,表征车辆轨迹与车辆轨迹经过的区域方格之间的对应关系。
48.第三索引结构可以表示为tc-index,该索引结构记录了轨迹(trajectory)经过的所有方格(cube)的信息。方格相较于网格增加了时间维度的信息,支持用户从时间范围上对数据进行查询。
49.(4)第四索引结构,表征区域方格与区域方格内经过的车辆轨迹之间的对应关系。
50.第四索引结构可以表示为ct-index,该索引结构记录了方格(cube)内经过的轨迹(trajectory)的信息,对用户对特定空间、特定时间的轨迹查询提供支持,可以提高查询效率。
51.(5)第五索引结构,表征区域方格与区域方格内车辆的实时位置点之间的对应关系。
52.第五索引结构可以表示为cp-index,该索引结构记录了方格(cube)内经过的车辆实时位置点(point)的信息,对用户查询最新时刻的位置信息提供支持。
53.(6)第六索引结构,表征车辆轨迹和车辆的最新位置点之间的对应关系。
54.第六索引结构可以表示为tip-index,该索引结构记录了轨迹(trajectory)中车辆最新位置(latest)的点(point)的信息,方便用户快速定位到指定轨迹当前最新的位置信息。
55.需要说明的,在其他可能的实现方式中,索引结构也可以是车辆轨迹、车辆的实时位置点、区域网格以及区域方格中其他组合之间的对应关系,这里不再一一举例说明,本说
明书实施例仅以以上6种常用的索引结构为例进行说明。
56.可选地,内存模块111中存储的索引数据可以是实时索引数据,外存模块112还用于存储历史索引数据,数据处理层12可以还用于将内存模块111中的历史索引数据转移至外存模块112中。在实际的应用场景中,公交数据是不断实时更新的,当有新的公交数据产生时,数据处理层12可以根据新生成的公交数据更新内存模块111中的索引数据,而内存模块111中的其他索引数据相较于实时更新的索引数据而言可以视为历史索引数据,数据吹处理层12可以将这些历史索引数据转移至外存模块112中,由外存模块112存储这些历史索引数据。这样,内存模块111中可以仅存储实时索引数据,从而可以减少内存占用,同时还可以提高公交数据的实时查询效率。
57.数据处理层12在将历史索引数据转移至外存模块112中时,可以直接将历史索引数据存储至外存模块112中,或者,出于性能考虑,也可以先对历史索引数据进行合并处理,然后将合并后的历史索引数据存储至外存模块112中,比如对历史索引数据的时间分片采用合并算法,将空分片或稀疏分片(对应的索引数据总量较少的时间分片)进行合并存储,并加上“merge
‑”
作为索引名称前缀。
58.需要说明的是,历史索引数据和实时索引数据的划分可以包含多种方式,比如,上述记载的每当有新的公交数据产生,这些新的公交数据对应的索引数据即为实时索引数据,其他索引数据都可以视为历史索引数据。再比如,可以设置时间阈值,若索引数据的生成时间与当前时间的距离在该时间阈值内,则可以视为实时索引数据,其他索引数据视为历史索引数据。比如,可以设置时间阈值为1小时,则可以将最近一小时内生成的索引数据视为实时索引数据,其余索引数据视为历史索引数据。这里不再对历史索引数据和实时索引数据的划分方式进行一一举例说明。
59.在本说明书实施例中,图1所示的数据处理系统10还可以包括数据查询层13,数据查询层13可以用于接收公交数据的查询请求,并根据查询请求实现公交数据的查询。具体而言,数据查询层13中可以包括索引查询模块131和数据查询模块132,索引查询模块131用于根据公交数据的查询请求查询对应的索引,数据查询模块132用于根据公交数据的索引查询对应的公交数据。
60.公交数据的查询请求可以包括实时查询请求和历史查询请求。数据查询层13可以实现公交数据的实时查询和历史查询。具体地:
61.在查询请求包括实时查询请求的情况下,索引查询模块131用于根据实时查询请求在内存模块111中查询对应的第一索引,数据查询模块132用于根据第一索引在外存模块112中查询对应的公交数据;
62.在查询请求包括历史查询请求的情况下,索引查询模块131用于根据历史查询请求在外存模块112中查询对应的第二索引,数据查询模块132用于根据第二索引在外存模块112中查询对应的公交数据。
63.基于上述记载的内容可知,内存模块111中可用于存储实时索引数据,外存模块112中可用于存储历史索引数据和完整的公交数据,而实时索引数据用于实时查询,历史索引数据用于历史查询,完整的公交数据既包含实时更新的公交数据也包含历史公交数据,因此,在基于查询请求进行公交数据的查询时,在查询请求包括实时查询的情况下,索引查询模块131可以根据实时查询请求从内存模块111中查询对应的实时索引,即第一索引,然
后数据查询模块132根据第一索引在外存模块112中查询对应的公交数据;在查询请求包括历史查询的情况下,索引查询模块131可以根据历史查询请求从外存模块112中查询对应的历史索引,即第二索引,然后数据查询模块132根据第二索引继续在外存模块112中查询对应的公交数据。
64.索引查询模块131在根据实时查询请求从内存模块111中查询对应的第一索引时,可以根据实时查询请求中包含的查询条件进行查询。查询条件可以由用户输入,或者也可以由数据查询层13提供并由用户进行选择。查询条件中可以包含需要查询的公交数据对应的时间信息、位置信息等。在根据查询条件查询第一索引时,可以将查询条件映射到区域网格或区域方格,然后再进一步映射到车辆轨迹或车辆的实时位置点,从而可以得到第一索引。其中,第一索引可以是上述预设的6种索引结构中的任一种或多种的组合(即混合索引)。比如,用户想要查询经过位置a的最新公交数据,则索引查询模块131在查询对应的第一索引时,可以确定位置a所在的区域方格,将位置a映射到区域方格中,得到位置a所在的区域方格的id,然后根据该id和ct-index进一步查询轨迹id,根据轨迹id和tip-index可以进一步查询实时位置点的id,最终可以得到位置a的最新公交数据对应的混合索引,该混合索引即为第一索引。
65.当然,以上仅示例性的说明了如何根据实时查询请求确定对应的第一索引,在其他可能的实现方式中,也可以通过其他方式确定第一索引,这里不再一一举例说明。
66.外存模块112可以是关系型数据库,可选地,可以是分布式的关系型数据库,比如,oceanbase。数据处理层12在将公交数据存储到外存模块112时,可以将公交数据和用于查询公交数据的键进行对应存储,键与公交数据可以是一一对应的关系。这样,数据查询模块132在根据第一索引在外存模块112中查询对应的公交数据时,可以将第一索引作为键,在外存模块中查询与该键唯一对应的公交数据,该公交数据即为实时查询请求所请求查询的公交数据。
67.索引查询模块131在根据历史查询请求从外存模块112中查询对应的第二索引、数据查询模块132根据第二索引在外存模块112中查询对应的公交数据时时,具体实现方式可以与上述索引查询模块131查询第一索引以及数据查询模块132根据第一索引查询对应的公交数据时的具体实现方式相同,这里都不再详细说明。
68.本说明书实施例中,针对图1所示的数据处理层12,其在并行执行第一操作和第二操作时,即在并行执行索引存储操作和数据存储操作时,还可以并行执行第三操作,该第三操作包括将实时更新的公交数据发送给至少一个客户端,该至少一个客户端可以用于展示实时更新的公交数据。这样,由于可以针对实时更新的公交数据同步执行索引存储、数据存储以及数据展示,因此,可以有效提高执行效率。其中,在并行执行第一操作、第二操作和第三操作时,可以通过三个并行的线程实现,或者,也可以通过分布式的方式实现,这里不做具体限定。
69.基于上述公交数据的处理系统,本说明书实施例还提供一种基于该处理系统的公交数据处理方法,如图2所示。图2是本说明书的一个实施例公交数据处理方法的流程示意图。图2所示的方法可以由图1所示的处理系统执行,所述方法可以包括如下步骤。
70.s202:接收实时更新的公交数据。
71.实时更新的公交数据可以由公交数据的管理系统实时采集或收集得到。当有新的
公交数据产生时,该管理系统可以将这些实时更新的公交数据发送给数据处理系统,此时,数据处理系统可以接收实时更新的公交数据。其中,公交数据的管理系统可以是gtfs,其可以便捷地获取到大量城市公交系统的基础信息(如公交线路、站点位置、车辆排班(时刻表)、乘车费用等)和实时数据(如公交车的实时位置、下一站到达的站点信息、车辆当前的运行状态等)。
72.s204:对实时更新的公交数据并行执行第一操作和第二操作,第一操作包括根据实时更新的公交数据更新更新内存模块中的索引数据,第二操作包括将实时更新的公交数据存储到外存模块。
73.数据处理系统在接收到实时更新的公交数据后,可以并行地对公交数据执行索引存储操作和数据存储操作,即上述第一操作和第二操作。其中,并行执行第一操作和第二操作可以通过多个线程实现或通过分布式的方式实现。
74.可选地,内存模块在存储索引数据时,可以按照预设的索引结构存储索引数据,这样,在根据实时更新的公交数据更新更新内存模块中的索引数据时,可以包括:
75.根据实时更新的公交数据,按照预设的索引结构更新内存模块中的索引数据。
76.预设的索引结构可以表征车辆轨迹(trajectory)、车辆的实时位置点(point)、区域网格(grid)以及区域方格(cube)中至少两项之间的对应关系。内存模块111按照预设索引结构存储索引数据,可以是在内存模块111中维护记录有车辆轨迹、车辆的实时位置点、区域网格以及区域方格中至少两项之间的对应关系的映射表,便于对实时数据执行快速的查询。可选地,预设的索引结构可以包括以下至少一项:
77.第一索引结构,表征车辆轨迹和车辆的实时位置点之间的对应关系;
78.第二索引结构,表征区域网格与经过区域网格的车辆轨迹之间的对应关系;
79.第三索引结构,表征车辆轨迹与车辆轨迹经过的区域方格之间的对应关系;
80.第四索引结构,表征区域方格与区域方格内经过的车辆轨迹之间的对应关系;
81.第五索引结构,表征区域方格与区域方格内车辆的实时位置点之间的对应关系;
82.第六索引结构,表征车辆轨迹和车辆的最新位置点之间的对应关系。
83.对以上预设的索引结构的具体说明可以参见图1所示实施例中相应内容的具体说明,这里不再重复描述。
84.本说明书实施例中,内存模块中存储的索引数据可以是实时索引数据,外存模块还用于存储历史索引数据。这样,在根据实时更新的公交数据更新内存模块中的索引数据时,还可以将内存模块中的历史索引数据转移到外存模块中,从而可以减少内存占用,提高公交数据的实时查询效率。
85.数据处理系统在通过以上方法存储实时更新的公交数据的情况下,还可以实现对公交数据的实时查询和历史查询,具体可以包括以下步骤:
86.接收公交数据的查询请求,查询请求包括实时查询请求和历史查询请求;
87.在查询请求包括实时查询请求的情况下,根据实时查询请求在内存模块中查询对应的第一索引;根据第一索引在外存模块中查询对应的公交数据;
88.在查询请求包括历史查询请求的情况下,根据历史查询请求在外存模块中查询对应的第二索引;根据第二索引在外存模块中查询对应的公交数据。
89.当用户想要查询公交数据时,可以向数据处理系统发送查询请求,该查询请求可
以是用于查询实时公交数据的实时查询请求,也可以是用于查询历史公交数据的历史查询请求。考虑到内存模块用于存储实时的索引数据,外存模块用于存储历史索引数据和公交数据(包括实时的历史的公交数据),因此,若查询请求为实时查询请求,则可以先从内存模块中查询对应的第一索引,再基于第一索引在外存模块中查询对应的公交数据,若查询请求为历史查询请求,则可以从外存模块中查询对应的第二索引,再基于第二索引在外存模块中继续查询对应的公交数据。具体实现方式可以参见图1所示实施例中相应步骤的具体实现,这里不再重复说明。
90.外存模块可以是关系型数据库,关系型数据库在存储公交数据时,可以将公交数据和用于查询公交数据的键进行对应存储。这样,在根据第一索引/第二索引在外存模块中查询对应的公交数据时,可以将第一索引/第二索引作为键,在外存模块中查询与键唯一对应的公交数据。
91.可选地,在数据处理系统并行执行第一操作和第二操作的情况下,还可以并行执行第三操作,第三操作包括将实时更新的公交数据发送给至少一个客户端,至少一个客户端用于展示实时更新的公交数据。
92.需要说明的是,图2所示各步骤的具体实现方式均可以参见图1所示实施例中相应内容的具体实现,这里不再详细说明。
93.本说明书实施例中,通过将公交数据的存储划分为索引存储和数据存储,当公交数据更新时,将实时更新的公交数据存储至外存模块中,将公交数据对应的索引数据存储至内存模块中,这样,在查询实时更新的公交数据时,可以在先内存模块中查询对应的索引然后再从外存模块中查询对应的公交数据,查询效率较快,由于完整的公交数据均存储在外存模块中,因此,还可以降低对内存模块的占用,由此,通过采用内外存融合的混合存储机制可以均衡查询时效和内存占用。此外,由于可以并行的对实时更新的公交数据执行数据存储操作和索引存储操作,因此,还可以提高执行效率。
94.为了便于理解本说明书实施例提供的技术方案,可以参见图3和图4。图3和图4是本说明书提供的技术方案在一种更为具体的实现方式中的公交数据的处理系统的结构示意图以及公交数据处理方法的示意图。
95.如图3所示,gtfs为公交数据的管理系统,该管理系统中可以部署本说明书实施例提供的数据处理系统,或该管理系统可以与本说明书实施例提供的数据处理系统连接。当有实时更新的公交数据(即a城市数据和b城市数据)进入到gtfs中时,数据处理系统可以并行地对实时更新的公交数据执行索引存储和数据存储操作,即根据实时更新的公交数据更新内存中的实时索引数据以及将公交数据存储到外存中,外存为oceanbase数据库。此外,还可以并行将实时更新的公交数据展示在gtfs前端,用户可以在该前端对实时更新的公交数据进行访问。
96.针对索引存储部分,本说明书实施例可以采用lsm-tree技术,该技术是一种多层次结构的索引技术,利用了顺序写的速度优势,牺牲了少量的读性能换取了高效的写性能,对实时数据流这种高速写入的场景支持较为优秀。具体地,可以将索引存储部分分为实时索引存储和历史索引存储。实时索引存储在内存中,可用于公交数据的实时查询,历史索引存储在外存即oceanbase中,可用于公交数据的历史查询。其中,实时数据索引(也即实时索引数据)可以视为一级索引,在实时数据索引变为历史数据索引的情况下,可以存储至外存
中,视为二级索引。二级索引的结构和一级索引的结构相同,可选地,二级索引可以是对一级索引进行合并后的索引。
97.基于图3所示的公交数据的处理系统,在对公交数据进行处理时,处理流程可以如图4所示。图4中,实时数据处理引擎可以是图1所示的数据处理层,当实时更新的公交数据进入到实时数据处理引擎时,实时数据处理引擎可以通过图4所示的三个线程并行执行三个操作,即通过客户端实时数据分发线程将实时更新的公交数据发送给至少一个客户端,以便至少一个客户端展示实时更新的公交数据,通过后端oceanbase存储线程将实时更新的公交数据存储至oceanbase数据库中,通过后端lsm-tree索引线程更新内存中的索引数据。内存中的索引数据的索引结构可以包括多种。
98.出于性能考虑,在存储索引数据时,并不会完整保存整个数据,而仅保存唯一键,用户在利用索引查询到指定数据的唯一键之后,需要前往数据库库中读取数据的完整结构。可以使用任意支持唯一键查询的数据库系统作为支撑,如图4所示,将oceanbase企业级原生分布式数据库作为存储系统。
99.在用户查询公交数据时,可以通过web服务前端输入查询请求,web服务后端可以对该查询请求进行处理,并返回相应的查询结果(即图4所示的响应请求)。图4以实时查询请求为例,web服务后端在接收到实时查询请求后,可以现在内存中查询对应的索引,然后再根据索引从oceanbase数据库查询对应的公交数据。
100.图4中的oceanbase数据库中还可以存储历史索引数据。具体地,在内存中的索引被淘汰(淘汰过久之前的数据;内存空间不足,需要清理掉最长时间之前的数据等原因),则需要把这些非实时的索引数据转移到外存中,继续为用户提供历史数据的查询加速,即当查询请求为历史查询请求时,可以从oceanbase数据库中查询对应的历史索引,然后再根据历史索引在oceanbase数据库查询对应的公交数据。其中,在oceanbase数据库中存储历史数据时,仍然需要维护等同作用的索引结构,但是出于性能考虑,对历史数据的时间分片会采用合并算法将空分片或稀疏分片(数据总量较少的时间分片)进行合并存储,并加上“merge
‑”
作为索引名称前缀。
101.图3和图4所示的实施例的具体实现方式可以参见图1和图2所示的实施例,这里不再详细说明。
102.本说明书实施例提供的技术方案采用内外存融合的混合存储索引机制,相较于其他方案,实时数据的索引会直接更新到内存中,查询效率更快。另一方面,完整的数据仍然落在外部的关系型数据库中,仅保留唯一键作为索引依据,降低了系统占用。内外存融合的混合存储索引机制可以在效率和空间占用上达到一个较好的均衡。采用多线程编程对临界资源的共享机制,实现了对实时数据流的并行操作,可以克服传统方式“先落库,再查询“的方案中对实时数据处理的顺序处理导致的效率低下的问题,在理论上可以达到同步执行构建索引、数据落库、数据更新等多个任务,大大提高的执行效率。
103.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
104.图5是本说明书的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
105.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
106.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
107.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成公交数据处理装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
108.接收实时更新的公交数据;
109.对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。
110.上述如本说明书图5所示实施例揭示的公交数据处理装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
111.该电子设备还可执行图2的方法,并实现公交数据处理装置在图2所示实施例中的功能,本说明书实施例在此不再赘述。
112.当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
113.本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法,并具体用于执行以下操作:
114.接收实时更新的公交数据;
115.对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。
116.图6是本说明书的一个实施例公交数据处理装置60的结构示意图。请参考图6,在一种软件实施方式中,所述公交数据处理装置60可包括:接收模块61和数据处理模块62,其中:
117.接收模块61,接收实时更新的公交数据;
118.数据处理模块62,对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。
119.可选地,所述数据处理模块62,根据所述实时更新的公交数据更新更新内存模块中的索引数据,包括:
120.根据所述实时更新的公交数据,按照预设的索引结构更新所述内存模块中的索引数据。
121.可选地,所述预设的索引结构包括以下至少一项:
122.第一索引结构,表征车辆轨迹和车辆的实时位置点之间的对应关系;
123.第二索引结构,表征区域网格与经过区域网格的车辆轨迹之间的对应关系;
124.第三索引结构,表征车辆轨迹与车辆轨迹经过的区域方格之间的对应关系;
125.第四索引结构,表征区域方格与区域方格内经过的车辆轨迹之间的对应关系;
126.第五索引结构,表征区域方格与区域方格内车辆的实时位置点之间的对应关系;
127.第六索引结构,表征车辆轨迹和车辆的最新位置点之间的对应关系;
128.其中,所述区域网格不包含时间信息,所述区域方格包含时间信息。
129.可选地,所述数据处理模块62,还包括:
130.将所述内存模块中的历史索引数据转移到所述外存模块中。
131.可选地,所述数据处理模块62,还包括:
132.接收公交数据的查询请求,所述查询请求包括实时查询请求和历史查询请求;
133.在所述查询请求包括实时查询请求的情况下,根据所述实时查询请求在所述内存模块中查询对应的第一索引;根据所述第一索引在所述外存模块中查询对应的公交数据;
134.在所述查询请求包括历史查询请求的情况下,根据所述历史查询请求在所述外存模块中查询对应的第二索引;根据所述第二索引在所述外存模块中查询对应的公交数据。
135.可选地,所述数据处理模块62,根据所述第一索引在所述外存模块中查询对应的公交数据,包括:
136.将所述第一索引作为键,在所述外存模块中查询与所述键唯一对应的公交数据。
137.可选地,所述数据处理模块62,在并行执行所述第一操作和所述第二操作的情况
下,还包括:
138.并行执行第三操作,所述第三操作包括将所述实时更新的公交数据发送给至少一个客户端,所述至少一个客户端用于展示所述实时更新的公交数据。
139.本说明书实施例提供的公交数据处理装置60还可执行图2的方法,并实现公交数据处理装置在图2所示实施例的功能,本说明书实施例在此不再赘述。
140.总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本文件的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本文件的保护范围之内。
141.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
142.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
143.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
144.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

技术特征:
1.一种公交数据的处理系统,包括数据存储层和数据处理层,其中:所述数据存储层包括内存模块和外存模块,所述内存模块用于存储公交数据的索引数据,所述外存模块用于存储公交数据;所述数据处理层用于对实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新所述内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到所述外存模块。2.如权利要求1所述的系统,所述内存模块用于按照预设的索引结构存储公交数据的索引数据;所述数据处理层用于根据所述实时更新的公交数据,按照所述预设的索引结构更新所述内存模块中的索引数据。3.如权利要求2所述的系统,所述预设的索引结构包括以下至少一项:第一索引结构,表征车辆轨迹和车辆的实时位置点之间的对应关系;第二索引结构,表征区域网格与经过区域网格的车辆轨迹之间的对应关系;第三索引结构,表征车辆轨迹与车辆轨迹经过的区域方格之间的对应关系;第四索引结构,表征区域方格与区域方格内经过的车辆轨迹之间的对应关系;第五索引结构,表征区域方格与区域方格内车辆的实时位置点之间的对应关系;第六索引结构,表征车辆轨迹和车辆的最新位置点之间的对应关系;其中,所述区域网格不包含时间信息,所述区域方格包含时间信息。4.如权利要求1所述的系统,所述内存模块存储的索引数据为实时索引数据,所述外存模块还用于存储历史索引数据,所述数据处理层还用于将所述内存模块中的历史索引数据转移到所述外存模块中。5.如权利要求1至4任一项所述的系统,所述系统还包括数据查询模块;所述数据查询层包括索引查询模块和数据查询模块,所述索引查询模块用于根据公交数据的查询请求查询对应的索引,所述数据查询模块用于根据公交数据的索引查询对应的公交数据。6.如权利要求5所述的系统,所述查询请求包括实时查询请求和历史查询请求;在所述查询请求包括实时查询请求的情况下,所述索引查询模块用于根据所述实时查询请求在所述内存模块中查询对应的第一索引,所述数据查询模块用于根据所述第一索引在所述外存模块中查询对应的公交数据;在所述查询请求包括历史查询请求的情况下,所述索引查询模块用于根据所述历史查询请求在所述外存模块中查询对应的第二索引,所述数据查询模块用于根据所述第二索引在所述外存模块中查询对应的公交数据。7.如权利要求6所述的系统,所述外存模块包括关系型数据库;其中,所述数据查询模块用于根据所述第一索引在所述外存模块中查询对应的公交数据,包括:所述数据查询模块用于将所述第一索引作为键,在所述外存模块中查询与所述键唯一对应的公交数据。8.如权利要求1所述的系统,所述数据处理层在并行执行所述第一操作和所述第二操作的情况下,还用于并行执行第三操作;
其中,所述第三操作包括将所述实时更新的公交数据发送给至少一个客户端,所述至少一个客户端用于展示所述实时更新的公交数据。9.一种基于如权利要求1至8任一项所述的公交数据的处理系统的公交数据处理方法,包括:接收实时更新的公交数据;对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。10.如权利要求9所述的方法,所述根据所述实时更新的公交数据更新更新内存模块中的索引数据,包括:根据所述实时更新的公交数据,按照预设的索引结构更新所述内存模块中的索引数据。11.如权利要求10所述的方法,所述预设的索引结构包括以下至少一项:第一索引结构,表征车辆轨迹和车辆的实时位置点之间的对应关系;第二索引结构,表征区域网格与经过区域网格的车辆轨迹之间的对应关系;第三索引结构,表征车辆轨迹与车辆轨迹经过的区域方格之间的对应关系;第四索引结构,表征区域方格与区域方格内经过的车辆轨迹之间的对应关系;第五索引结构,表征区域方格与区域方格内车辆的实时位置点之间的对应关系;第六索引结构,表征车辆轨迹和车辆的最新位置点之间的对应关系;其中,所述区域网格不包含时间信息,所述区域方格包含时间信息。12.如权利要求9所述的方法,所述方法还包括:将所述内存模块中的历史索引数据转移到所述外存模块中。13.如权利要求9至12任一项所述的方法,所述方法还包括:接收公交数据的查询请求,所述查询请求包括实时查询请求和历史查询请求;在所述查询请求包括实时查询请求的情况下,根据所述实时查询请求在所述内存模块中查询对应的第一索引;根据所述第一索引在所述外存模块中查询对应的公交数据;在所述查询请求包括历史查询请求的情况下,根据所述历史查询请求在所述外存模块中查询对应的第二索引;根据所述第二索引在所述外存模块中查询对应的公交数据。14.如权利要求13所述的方法,所述根据所述第一索引在所述外存模块中查询对应的公交数据,包括:将所述第一索引作为键,在所述外存模块中查询与所述键唯一对应的公交数据。15.如权利要求9所述的方法,在并行执行所述第一操作和所述第二操作的情况下,所述方法还包括:并行执行第三操作,所述第三操作包括将所述实时更新的公交数据发送给至少一个客户端,所述至少一个客户端用于展示所述实时更新的公交数据。16.一种公交数据处理装置,包括:接收模块,接收实时更新的公交数据;数据处理模块,对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包
括将所述实时更新的公交数据存储到外存模块。17.一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,该可执行指令在被执行时使该处理器执行以下操作:接收实时更新的公交数据;对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。18.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下方法:接收实时更新的公交数据;对所述实时更新的公交数据并行执行第一操作和第二操作,所述第一操作包括根据所述实时更新的公交数据更新更新内存模块中的索引数据,所述第二操作包括将所述实时更新的公交数据存储到外存模块。

技术总结
本说明书实施例提供一种公交数据的处理系统、方法和装置,该系统包括数据存储层和数据处理层,数据存储层包括内存模块和外存模块,内存模块用于存储公交数据的索引数据,外存模块用于存储公交数据;数据处理层用于对实时更新的公交数据并行执行第一操作和第二操作,第一操作包括根据实时更新的公交数据更新内存模块中的索引数据,第二操作包括将实时更新的公交数据存储到外存模块。新的公交数据存储到外存模块。新的公交数据存储到外存模块。


技术研发人员:肖皓星 徐泉清 王胜 杨传辉 彭智勇
受保护的技术使用者:北京奥星贝斯科技有限公司
技术研发日:2023.03.06
技术公布日:2023/7/19
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐