CN114676140A - 一种场景数据存储方法、装置、设备和介质 - Google Patents

一种场景数据存储方法、装置、设备和介质 Download PDF

Info

Publication number
CN114676140A
CN114676140A CN202210345963.XA CN202210345963A CN114676140A CN 114676140 A CN114676140 A CN 114676140A CN 202210345963 A CN202210345963 A CN 202210345963A CN 114676140 A CN114676140 A CN 114676140A
Authority
CN
China
Prior art keywords
data
scene data
scene
target
initial
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.)
Pending
Application number
CN202210345963.XA
Other languages
English (en)
Inventor
熊腾浩
王亚亮
胡方炜
王红宾
谭伟华
韩旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Weride Technology Co Ltd
Original Assignee
Guangzhou Weride Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Weride Technology Co Ltd filed Critical Guangzhou Weride Technology Co Ltd
Priority to CN202210345963.XA priority Critical patent/CN114676140A/zh
Publication of CN114676140A publication Critical patent/CN114676140A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种场景数据存储方法、装置、设备和介质,涉及多个数据处理线程与多个场景模拟模型,各个数据处理线程均关联有一个消息队列,方法包括:当接收到任一场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值;将各个初始场景数据发送至队列哈希值对应的消息队列;通过数据处理线程从消息队列获取多个初始场景数据并进行数据整合,得到目标场景数据;通过数据处理线程将目标场景数据写入至目标数据库,从而提高对场景数据等碎片化数据的写入效率。

Description

一种场景数据存储方法、装置、设备和介质
技术领域
本发明涉及场景数据传输技术领域,尤其涉及一种场景数据存储方法、装置、设备和介质。
背景技术
随着当前社会的发展以及各项技术水平的不断提升,人们对自动驾驶方面的要求也在不断提高。对于自动驾驶相关技术而言,为保证自动驾驶的安全性,需要进行大量的测试以验证此技术的可行性,而路测成本较高,无法在技术初期阶段进行,因此,仿真测试无疑成为了最通用也最实际的测试手段。
在现有的仿真测试过程中,通常需要在每次场景模拟测试多个仿真场景,而在每个仿真场景的测试过程中,都会产生大量碎片化的数据进行后续分析。
为此,现有方案通常是在产生数据的同时将数据写入至数据库,但由于数据碎片化程度较高且数量较多,数据库写入效率受限。
发明内容
本发明提供了一种场景数据存储方法、装置、设备和介质,解决了现有方案通常是在产生数据的同时将数据写入至数据库,但由于数据碎片化程度较高且数量较多,数据库写入效率受限的技术问题。
本发明第一方面提供的一种场景数据存储方法,涉及多个数据处理线程与多个场景模拟模型,各个所述数据处理线程均关联有一个消息队列,所述方法包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值;
将各个所述初始场景数据发送至所述队列哈希值对应的消息队列;
通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据;
通过所述数据处理线程将所述目标场景数据写入至目标数据库。
可选地,所述当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值的步骤,包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,获取各个初始场景数据对应的算法标识;
按照所述算法标识从多个预设的哈希函数中选择第一目标哈希函数;
采用所述第一目标哈希函数计算各个所述初始场景数据对应的队列哈希值。
可选地,还涉及待分组消息队列和数据分组组件;所述当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值的步骤,包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,将全部所述初始场景数据发送至所述待分组消息队列;
通过所述数据分组组件按照预设的第一时间区间,从所述待分组消息队列中获取所述初始场景数据;
通过所述数据分组组件对所述初始场景数据进行分组,得到多个新的初始场景数据并标记对应的算法标识;
通过所述数据分组组件按照所述算法标识从多个预设的哈希函数中选择第二目标哈希函数;
通过所述数据分组组件采用所述第二目标哈希函数计算各个所述新的初始场景数据对应的队列哈希值。
可选地,所述通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据的步骤,包括:
通过所述数据处理线程按照预设的第二时间区间从所述消息队列获取多个所述初始场景数据以及对应的分区标识;
根据各个所述分区标识对所述初始场景数据进行聚类,得到至少一个聚类数据簇;
对所述聚类数据簇内的初始场景数据进行整合,得到目标场景数据。
可选地,所述目标数据库包括多个数据分区;所述通过所述数据处理线程将所述目标场景数据写入至目标数据库的步骤,包括:
通过所述数据处理线程按照所述分区标识,将所述目标场景数据写入至目标数据库;
所述目标数据库用于接收所述目标场景数据,并按照所述分区标识将所述目标场景数据合并至各个所述数据分区。
可选地,所述方法还包括:
当接收到更新场景模拟模型发送的更新场景数据时,采用预设的更新哈希函数计算所述更新场景数据对应的更新哈希值;
遍历全部所述消息队列,判断是否存在与所述更新哈希值关联的消息队列;
若存在,则将所述更新场景数据发送至所述更新哈希值关联的消息队列;
若不存在,则按照所述更新哈希函数从所述目标数据库中选取关联的更新数据分区,并生成与所述更新数据分区对应的新的分区标识;
创建与所述更新哈希值关联的更新消息队列与对应的更新数据处理线程,并采用所述新的分区标识标记所述更新场景数据后,发送至所述更新消息队列。
可选地,所述方法还包括:
当接收到多个所述场景模拟模型分别输出的多个特定场景数据时,将全部所述特定场景数据发送至所述数据处理线程;
通过所述数据处理线程对全部所述特定场景数据进行分组,得到多个与所述场景模拟模型对应的特定场景数据组;
通过所述数据处理线程将各个所述特定场景数据组写入至所述目标数据库。
可选地,所述方法还包括:
当接收到数据查询请求时,获取所述数据查询请求对应的目标算法标识;
按照所述目标算法标识检索所述目标数据库,得到携带有所述目标算法标识的全部目标场景数据。
本发明第二方面提供了一种场景数据存储装置,涉及多个数据处理线程与多个场景模拟模型,各个所述数据处理线程均关联有一个消息队列,所述装置包括:
队列哈希值计算模块,用于当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值;
队列缓存模块,用于将各个所述初始场景数据发送至所述队列哈希值对应的消息队列;
数据整合模块,用于通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据;
数据写入模块,用于通过所述数据处理线程将所述目标场景数据写入至目标数据库。
本发明第三方面提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明第一方面任一项所述的场景数据存储方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明第一方面任一项所述的场景数据存储方法。
从以上技术方案可以看出,本发明具有以下优点:
当本发明接收到任一个场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值,以确定对应的消息队列,将各个初始场景数据发送至各自对应的消息队列后,进一步通过数据处理线程按照预设时间区间,从其关联的消息队列获取多个初始场景数据,并对获取到的多个初始场景数据进行数据整合,得到一份目标场景数据,最后通过数据处理线程将目标场景数据写入到目标数据库内的对应数据分区。从而提高对场景数据等碎片化数据的写入效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例一提供的一种场景数据存储方法的步骤流程图;
图2为本发明实施例二提供的一种场景数据存储方法的步骤流程图;
图3为本发明实施例提供的一种场景数据存储方法的流程示意图;
图4为本发明实施例三提供的一种场景数据存储装置的结构框图。
具体实施方式
本发明实施例提供了一种场景数据存储方法、装置、设备和介质,用于解决现有方案通常是在产生数据的同时将数据写入至数据库,但由于数据碎片化程度较高且数量较多,数据库写入效率受限的技术问题。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例一提供的一种场景数据存储方法的步骤流程图。
本发明提供的一种场景数据存储方法,涉及多个数据处理线程与多个场景模拟模型,各个数据处理线程均关联有一个消息队列,方法包括:
步骤101,当接收到任一场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值;
场景模拟模型指的是预存有多种运行场景,能够对自动驾驶系统的控制算法或仿真程序进行模拟行驶或仿真实验的模型。其中运行场景可以为车辆行驶的各种情况例如电池掉电、系统死机等异常场景,也可以应用在各种行驶状态例如转弯、塞车或城中村等复杂环境。具体地,可以应用于对自动驾驶车辆的自动驾驶系统的路测前测试等情况,例如通过多个场景模拟模型对其行驶的多套速度规划算法和路径规划算法等分别进行不同运行场景的模拟仿真,在每个场景模拟模型中可以基于同一套算法进行多种运行场景的并行模拟仿真,得到多个初始场景数据。
初始场景数据指的是场景模拟模型在不同的运行场景下,在自动驾驶系统内模拟算法的运行情况所产生的碎片化数据,其中每个碎片化数据均可以携带有对应的算法标识,且每个碎片化数据可以分别对应不同的模拟场景。
在本发明实施例中,同一个场景模拟模型可以同时模拟同一算法在不同场景的运行情况,生成多个初始场景数据,当接收到任一个场景模拟模型输出的多个初始场景数据时,可以按照各个初始场景数据的来源选取对应的哈希函数,采用哈希函数计算各个初始场景数据对应的队列哈希值。
需要说明的是,队列哈希值指的是采用哈希函数计算初始场景数据得到的哈希值,哈希值与消息队列一一对应。哈希函数可以包括但不限于加法哈希、位运算哈希、乘法哈希、除法哈希、查表哈希或混合哈希等函数算法
步骤102,将各个初始场景数据发送至队列哈希值对应的消息队列;
消息队列指的是可存储消息的链表,用于按照接收到初始场景数据的顺序对进行存储。
在计算得到各个初始场景数据对应的队列哈希值后,为提高对初始场景数据的处理效率,可以将各个初始场景数据按照队列哈希值分布发送至消息队列。
步骤103,通过数据处理线程从消息队列获取多个初始场景数据并进行数据整合,得到目标场景数据;
数据处理线程指的是数据处理器中的其中一个线程,用于对关联的消息队列内的初始场景数据进行数据整合。
在初始场景数据按照队列哈希值分布分别发送各个消息队列后,由于初始场景数据的数据量较小且数量较多,若是直接写入至数据库会导致数据库需要进行多次的分区合并,增加数据库负载。为此可以通过数据处理线程从与之关联的消息队列按照预设的时间区间获取多个初始场景数据,对多个初始场景数据进行数据整合后,得到一个目标场景数据。
步骤104,通过数据处理线程将目标场景数据写入至目标数据库。
在数据处理线程对多个初始场景数据进行数据整合得到目标场景数据后,将目标场景数据写入到目标数据库的对应数据分区,从而保证同一算法对应的多个场景数据均是存储在同一数据分区,在完成对场景数据的高效存储的同时,降低数据库合并分区的负载。
在本发明实施例中,当接收到任一个场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值,以确定对应的消息队列,将各个初始场景数据发送至各自对应的消息队列后,进一步通过数据处理线程按照预设时间区间,从其关联的消息队列获取多个初始场景数据,并对获取到的多个初始场景数据进行数据整合,得到一份目标场景数据,最后通过数据处理线程将目标场景数据写入到目标数据库内的对应数据分区。从而提高对场景数据等碎片化数据的写入效率。
请参阅图2,图2为本发明实施例二提供的一种场景数据存储方法的步骤流程图。
本发明提供的一种场景数据存储方法,涉及多个数据处理线程与多个场景模拟模型,各个数据处理线程均关联有一个消息队列,方法包括:
步骤201,当接收到任一场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值;
在本发明的一个示例中,步骤201可以包括以下子步骤:
当接收到任一场景模拟模型输出的多个初始场景数据时,获取各个初始场景数据对应的算法标识;
按照算法标识从多个预设的哈希函数中选择第一目标哈希函数;
采用第一目标哈希函数计算各个初始场景数据对应的队列哈希值。
在具体实现中,为减少自动驾驶系统的测试成本,可以在路测前对自动驾驶系统所使用的算法或程序等进行模拟测试仿真,在场景模拟模型中创建不同型号的自动驾驶车辆,装载对应的算法或程序,模拟算法在不同的行驶场景和运行环境的运行情况,并输出对应场景下的初始场景数据。
当接收到任一场景模拟模型输出的多个初始场景数据时,可以获取各个初始场景数据所携带的算法标识,以确定该初始场景数据的来源后,按照算法标识检索预设的多个哈希函数,从中确定各个算法标识对应的第一目标哈希函数;再采用各自对应的第一目标哈希函数计算初始场景数据对应的队列哈希值,以确定后续作为数据发送目标的消息队列。
需要说明的是,由于同一场景模拟模型可以在多个不同的场景同时运行多个仿真程序或同时执行多个算法,而每个初始场景数据均可以在输出时标记对应的算法标识,同时各个场景模拟模型可以分别关联一种哈希函数,哈希函数可以关联数据库的某一数据分区,且哈希函数计算得到的哈希值与消息队列相关联。
在本发明的另一个示例中,本方法还涉及待分组消息队列和数据分组组件,步骤201还可以包括以下子步骤:
当接收到任一场景模拟模型输出的多个初始场景数据时,将全部初始场景数据发送至待分组消息队列;
通过数据分组组件按照预设的第一时间区间,从待分组消息队列中获取初始场景数据;
通过数据分组组件对初始场景数据进行分组,得到多个新的初始场景数据并标记对应的算法标识;
通过数据分组组件按照算法标识从多个预设的哈希函数中选择第二目标哈希函数;
通过数据分组组件采用第二目标哈希函数计算各个新的初始场景数据对应的队列哈希值。
在本实施例中,还涉及到待分组消息队列和数据分组组件。对于无法在初始场景数据输出时进行算法标识标记的场景模拟模型,当接收到该场景模拟模型输出的多个初始场景数据时,可以将全部初始场景数据发送至单独的待分组消息队列,通过数据分组组件按照预设的第一时间区间从待分组消息队列中获取多个初始场景数据,进一步按照数据分组组件按照预定规则对初始场景数据进行分组,得到多个新的初始场景数据并对各个新的初始场景数据进行算法标识的标记。最后通过数据分组组件按照算法标识从多个预设的哈希函数中选择第二目标哈希函数,通过数据分组组件采用第二目标哈希函数计算各个新的初始场景数据对应的队列哈希值。
其中,预定规则可以为按照初始场景数据的来源进行分组,或是按照初始场景数据的获取顺序,以数个初始场景数据作为一组等,本发明实施例对此不做限制。
步骤202,将各个初始场景数据发送至队列哈希值对应的消息队列;
在计算得到各个初始场景数据分别对应的队列哈希值后,可以按照各个队列哈希值将初始场景数据发送至对应的消息队列。
步骤203,通过数据处理线程按照预设的第二时间区间从消息队列获取多个初始场景数据以及对应的分区标识;
在将初始场景数据发送至各自对应的消息队列后,由于各个消息队列可以关联到各自对应的队列哈希值,而队列哈希值所对应的哈希函数能够关联至相应的数据分区,因此,可以通过数据处理器上的数据处理线程进行进一步的处理,按照预设的第二时间区间从其关联的消息队列中获取多个初始场景数据以及对应的分区标识,从而确定初始场景数据对应的数据分区。
其中,在同一消息队列中可以同时存在多个处于不同数据分区的初始场景数据,例如数据库分区按照每100个仿真试验进行划分,尾号相同的10个实验作为一个分区,如编号001,011,021的仿真实验数据在一个分区中,那么此时的hash函数为hash(x)=x mod10,保证所有同一分区的数据会被分到同一个队列中,同时因为仿真数据较多,所以最多只会有两个不同分区的数据在同一个消息队列中(举例:002和102属于不同的分区,但是会在同一个队列中)这样同时保证了消息队列可以复用。
需要说明的是,本发明中的第一时间区间或第二时间可以通过时间窗口的形式进行实现。
步骤204,根据各个分区标识对初始场景数据进行聚类,得到至少一个聚类数据簇;
在本实施例中,在获取到各个分区标识后,由于同一消息队列上可能存在属于多个数据分区的初始场景数据。为实现后续的数据整合,可以按照各个分区标识对初始场景数据进行聚类,以得到与分区标识对应的聚类数据簇。
步骤205,对聚类数据簇内的初始场景数据进行整合,得到目标场景数据;
在得到多个聚类数据簇后,数据处理线程可以分别对各个聚类数据簇内的初始场景数据进行整合,从而单个目标场景数据。
步骤206,通过数据处理线程将目标场景数据写入至目标数据库。
可选地,目标数据库包括多个数据分区,步骤206可以包括以下子步骤:
通过数据处理线程按照分区标识,将目标场景数据写入至目标数据库;
目标数据库用于接收目标场景数据,并按照分区标识将目标场景数据合并至各个数据分区。
在本发明实施例中,数据处理线程在对初始场景数据进行数据整合得到目标场景数据后,可以按照分区标识将目标场景数据写入至目标数据库,同时目标数据库在接收到目标场景数据后,按照分区标识将目标场景数据合并至各个数据分区,从而完成对场景模拟模型的场景数据的存储。
其中,本实施例目标数据库指的是列式数据库,例如clickhouse。
进一步地,方法还可以包括以下步骤S11-S15:
S11、当接收到更新场景模拟模型发送的更新场景数据时,采用预设的更新哈希函数计算更新场景数据对应的更新哈希值;
S12、遍历全部消息队列,判断是否存在与更新哈希值关联的消息队列;
S13、若存在,则将更新场景数据发送至更新哈希值关联的消息队列;
在本发明的一个示例中,若是新增了场景模拟模型,则可以将其作为更新场景模拟模型,当接收到该更新场景模拟模型发送的更新场景数据时,可以采用预设的更新哈希函数计算该更新场景数据对应的更新哈希值。通过遍历已有的全部消息队列,判断其中是否存在与更新哈希值关联的消息队列,具体可以通过比较其队列哈希值与更新哈希值是否相等。
若是相等,则表明存在与更新哈希值关联的消息队列,此时可以将更新场景数据发送至更新哈希值关联的消息队列。
S14、若不存在,则按照更新哈希函数从目标数据库中选取关联的更新数据分区,并生成与更新数据分区对应的新的分区标识;
S15、创建与更新哈希值关联的更新消息队列与对应的更新数据处理线程,并采用新的分区标识标记更新场景数据后,发送至更新消息队列。
在本发明的另一个示例中,若是更新哈希值与任一个队列哈希值均不相等,则表明此时未存在与之关联的消息队列,可以进一步按照更新哈希函数从目标数据库中确定关联的更新数据分区,并生成对应的新的分区标识;创建与更新哈希值关联的更新消息队列与对应的更新数据处理线程,采用该新的分区标识标记更新场景数据,将更新场景数据发送至更新消息队列,以便于后续更新数据处理线程从更新消息队列获取并进行数据整合后,写入至目标数据库的更新数据分区。
其中,更新哈希函数可以从多个预设的哈希函数中选取,也可以由技术人员自行指定,本实施例对此不做限制。
可选地,方法还可以包括以下步骤S21-S23:
S21、当接收到多个场景模拟模型分别输出的多个特定场景数据时,将全部特定场景数据发送至数据处理线程;
S22、通过数据处理线程对全部特定场景数据进行分组,得到多个与场景模拟模型对应的特定场景数据组;
S23、通过数据处理线程将各个特定场景数据组写入至目标数据库。
在本发明可选实施例中,当接收到全部或多个场景模拟模型分别输出的多个特定场景数据时,将全部特定场景数据发送至数据处理线程,通过数据处理线程按照预设规则对全部特定场景数据进行分组,从而得到多个与场景模拟模型对应的特定场景数据组,再通过该数据处理线程直接将各个特定场景数据组写入至目标数据库。
需要说明的是,在数据量较少的情况下,可以采用上述直接写入数据库的方式,以减少资源消耗。
在本发明的另一个示例中,方法还包括以下步骤S31-S32:
S31、当接收到数据查询请求时,获取数据查询请求对应的目标算法标识;
S32、按照目标算法标识检索目标数据库,得到携带有目标算法标识的全部目标场景数据。
在本发明实施例中,若是用户需要进行数据查询,可以发送数据查询请求至本发明对应的虚拟装置。当接收到数据查询请求时,可以获取该数据查询请求对应的目标算法标识,按照目标算法标识对目标数据库进行检索,从而实现从同一分区获取到该目标算法标识对应的全部目标场景数据。
参见图3,图3为本发明实施例提供的一种场景数据存储方法的流程示意图。
如图3所示,本发明的场景模拟模型为仿真实验程序,仿真实验程序一共生产了11组数据,这11组数据分别属于五个相同大小的分区,若在生产时直接写入数据库,则:
对于仿真实验来说,需要处理11份数据,同时与数据库进行11次交互,共需要11份数据处理的时间以及11份与数据库交互的时间。
对于数据库来说,每次插入需要对于数据分区执行了一次合并操作,需要进行11次数据库分区合并,共需要11份分区合并的时间。
假如使用我们提出的消息队列模型,则:
对于仿真实验来说,每组数据需要与消息队列进行1次交互,共需要11份与消息队列交互的时间。
对于数据处理端来说,需要从消息队列中获取并处理11份数据,同时与数据库进行5次交互,共需要11份与消息队列交互的时间、11份数据处理的时间以及5份与数据库交互的时间
对于数据库来说,每次插入需要对于数据分区执行了一次合并操作,需要进行5次数据库分区合并,共需要5份分区合并的时间。
而在生产场景中,主要的时间消耗在于数据处理的时间以及数据库分区合并的时间,与数据库交互的时间以及与消息队列交互的时间的数量级远小于上述二者时间,故如若采取原方案,仿真实验需要花费11份处理数据的时间,数据库需要花费11份分区合并的时间;若采取新方案,仿真实验基本无需花费时间,而数据库需要花费5份分区合并的时间。对于仿真实验来说,减少了大量的时间开销;对于数据库来说,也减少了分区合并的次数,降低了数据库负载。而在资源消耗上,引入消息队列以及数据处理器所消耗的资源相较于仿真实验所消耗的计算资源基本可以忽略。实际上,在生产环境中仿真实验每秒产生的数据多达一千条以上,使用本方案极大地减少了数据库分区合并的次数以及仿真实验中数据处理的时间。
在本发明实施例中,当接收到任一个场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值,以确定对应的消息队列,将各个初始场景数据发送至各自对应的消息队列后,进一步通过数据处理线程按照预设时间区间,从其关联的消息队列获取多个初始场景数据,并对获取到的多个初始场景数据进行数据整合,得到一份目标场景数据,最后通过数据处理线程将目标场景数据写入到目标数据库内的对应数据分区。从而提高对场景数据等碎片化数据的写入效率。
请参阅图4,图4为本发明实施例三提供的一种场景数据存储装置的结构框图。
本发明实施例提供了一种场景数据存储装置,涉及多个数据处理线程与多个场景模拟模型,各个数据处理线程均关联有一个消息队列,装置包括:
队列哈希值计算模块401,用于当接收到任一场景模拟模型输出的多个初始场景数据时,计算各个初始场景数据对应的队列哈希值;
队列缓存模块402,用于将各个初始场景数据发送至队列哈希值对应的消息队列;
数据整合模块403,用于通过数据处理线程从消息队列获取多个初始场景数据并进行数据整合,得到目标场景数据;
数据写入模块404,用于通过数据处理线程将目标场景数据写入至目标数据库。
可选地,队列哈希值计算模块401具体用于:
当接收到任一场景模拟模型输出的多个初始场景数据时,获取各个初始场景数据对应的算法标识;
按照算法标识从多个预设的哈希函数中选择第一目标哈希函数;
采用第一目标哈希函数计算各个初始场景数据对应的队列哈希值。
可选地,还涉及待分组消息队列和数据分组组件;队列哈希值计算模块401具体用于:
当接收到任一场景模拟模型输出的多个初始场景数据时,将全部初始场景数据发送至待分组消息队列;
通过数据分组组件按照预设的第一时间区间,从待分组消息队列中获取初始场景数据;
通过数据分组组件对初始场景数据进行分组,得到多个新的初始场景数据并标记对应的算法标识;
通过数据分组组件按照算法标识从多个预设的哈希函数中选择第二目标哈希函数;
通过数据分组组件采用第二目标哈希函数计算各个新的初始场景数据对应的队列哈希值。
可选地,数据整合模块403具体用于:
通过数据处理线程按照预设的第二时间区间从消息队列获取多个初始场景数据以及对应的分区标识;
根据各个分区标识对初始场景数据进行聚类,得到至少一个聚类数据簇;
对聚类数据簇内的初始场景数据进行整合,得到目标场景数据。
可选地,目标数据库包括多个数据分区;数据写入模块404具体用于:
通过数据处理线程按照分区标识,将目标场景数据写入至目标数据库;
目标数据库用于接收目标场景数据,并按照分区标识将目标场景数据合并至各个数据分区。
可选地,装置还包括:
更新哈希值计算模块,用于当接收到更新场景模拟模型发送的更新场景数据时,采用预设的更新哈希函数计算更新场景数据对应的更新哈希值;
队列遍历模块,用于遍历全部消息队列,判断是否存在与更新哈希值关联的消息队列;
更新场景数据发送模块,用于若存在,则将更新场景数据发送至更新哈希值关联的消息队列;
更新数据分区确定模块,用于若不存在,则按照更新哈希函数从目标数据库中选取关联的更新数据分区,并生成与更新数据分区对应的新的分区标识;
更新消息队列创建与发送模块,用于创建与更新哈希值关联的更新消息队列与对应的更新数据处理线程,并采用新的分区标识标记更新场景数据后,发送至更新消息队列。
可选地,装置还包括:
特定场景数据发送模块,用于当接收到多个场景模拟模型分别输出的多个特定场景数据时,将全部特定场景数据发送至数据处理线程;
数据组分组模块,用于通过数据处理线程对全部特定场景数据进行分组,得到多个与场景模拟模型对应的特定场景数据组;
场景数据组写入模块,用于通过数据处理线程将各个特定场景数据组写入至目标数据库。
可选地,装置还包括:
目标算法标识获取模块,用于当接收到数据查询请求时,获取数据查询请求对应的目标算法标识;
目标场景数据查询模块,用于按照目标算法标识检索目标数据库,得到携带有目标算法标识的全部目标场景数据。
本发明实施例还提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明任一实施例所述的场景数据存储方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被执行时实现如本发明任一实施例所述的场景数据存储方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (11)

1.一种场景数据存储方法,其特征在于,涉及多个数据处理线程与多个场景模拟模型,各个所述数据处理线程均关联有一个消息队列,所述方法包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值;
将各个所述初始场景数据发送至所述队列哈希值对应的消息队列;
通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据;
通过所述数据处理线程将所述目标场景数据写入至目标数据库。
2.根据权利要求1所述的方法,其特征在于,所述当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值的步骤,包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,获取各个初始场景数据对应的算法标识;
按照所述算法标识从多个预设的哈希函数中选择第一目标哈希函数;
采用所述第一目标哈希函数计算各个所述初始场景数据对应的队列哈希值。
3.根据权利要求1所述的方法,其特征在于,还涉及待分组消息队列和数据分组组件;所述当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值的步骤,包括:
当接收到任一所述场景模拟模型输出的多个初始场景数据时,将全部所述初始场景数据发送至所述待分组消息队列;
通过所述数据分组组件按照预设的第一时间区间,从所述待分组消息队列中获取所述初始场景数据;
通过所述数据分组组件对所述初始场景数据进行分组,得到多个新的初始场景数据并标记对应的算法标识;
通过所述数据分组组件按照所述算法标识从多个预设的哈希函数中选择第二目标哈希函数;
通过所述数据分组组件采用所述第二目标哈希函数计算各个所述新的初始场景数据对应的队列哈希值。
4.根据权利要求1所述的方法,其特征在于,所述通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据的步骤,包括:
通过所述数据处理线程按照预设的第二时间区间从所述消息队列获取多个所述初始场景数据以及对应的分区标识;
根据各个所述分区标识对所述初始场景数据进行聚类,得到至少一个聚类数据簇;
对所述聚类数据簇内的初始场景数据进行整合,得到目标场景数据。
5.根据权利要求4所述的方法,其特征在于,所述目标数据库包括多个数据分区;所述通过所述数据处理线程将所述目标场景数据写入至目标数据库的步骤,包括:
通过所述数据处理线程按照所述分区标识,将所述目标场景数据写入至目标数据库;
所述目标数据库用于接收所述目标场景数据,并按照所述分区标识将所述目标场景数据合并至各个所述数据分区。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
当接收到更新场景模拟模型发送的更新场景数据时,采用预设的更新哈希函数计算所述更新场景数据对应的更新哈希值;
遍历全部所述消息队列,判断是否存在与所述更新哈希值关联的消息队列;
若存在,则将所述更新场景数据发送至所述更新哈希值关联的消息队列;
若不存在,则按照所述更新哈希函数从所述目标数据库中选取关联的更新数据分区,并生成与所述更新数据分区对应的新的分区标识;
创建与所述更新哈希值关联的更新消息队列与对应的更新数据处理线程,并采用所述新的分区标识标记所述更新场景数据后,发送至所述更新消息队列。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到多个所述场景模拟模型分别输出的多个特定场景数据时,将全部所述特定场景数据发送至所述数据处理线程;
通过所述数据处理线程对全部所述特定场景数据进行分组,得到多个与所述场景模拟模型对应的特定场景数据组;
通过所述数据处理线程将各个所述特定场景数据组写入至所述目标数据库。
8.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
当接收到数据查询请求时,获取所述数据查询请求对应的目标算法标识;
按照所述目标算法标识检索所述目标数据库,得到携带有所述目标算法标识的全部目标场景数据。
9.一种场景数据存储装置,其特征在于,涉及多个数据处理线程与多个场景模拟模型,各个所述数据处理线程均关联有一个消息队列,所述装置包括:
队列哈希值计算模块,用于当接收到任一所述场景模拟模型输出的多个初始场景数据时,计算各个所述初始场景数据对应的队列哈希值;
队列缓存模块,用于将各个所述初始场景数据发送至所述队列哈希值对应的消息队列;
数据整合模块,用于通过所述数据处理线程从所述消息队列获取多个所述初始场景数据并进行数据整合,得到目标场景数据;
数据写入模块,用于通过所述数据处理线程将所述目标场景数据写入至目标数据库。
10.一种电子设备,其特征在于,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-8任一项所述的场景数据存储方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被执行时实现如权利要求1-8任一项所述的场景数据存储方法。
CN202210345963.XA 2022-04-02 2022-04-02 一种场景数据存储方法、装置、设备和介质 Pending CN114676140A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210345963.XA CN114676140A (zh) 2022-04-02 2022-04-02 一种场景数据存储方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210345963.XA CN114676140A (zh) 2022-04-02 2022-04-02 一种场景数据存储方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN114676140A true CN114676140A (zh) 2022-06-28

Family

ID=82077160

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210345963.XA Pending CN114676140A (zh) 2022-04-02 2022-04-02 一种场景数据存储方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN114676140A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311947A (zh) * 2023-11-24 2023-12-29 江西云眼视界科技股份有限公司 一种线程池管理方法及系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117311947A (zh) * 2023-11-24 2023-12-29 江西云眼视界科技股份有限公司 一种线程池管理方法及系统
CN117311947B (zh) * 2023-11-24 2024-02-09 江西云眼视界科技股份有限公司 一种线程池管理方法及系统

Similar Documents

Publication Publication Date Title
CN111414389B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN104461693B (zh) 一种桌面云计算环境下的虚拟机更新方法和系统
CN112947856B (zh) 一种内存数据的管理方法、装置、计算机设备及存储介质
CN113326639B (zh) 一种自动驾驶测试场景的确定方法、装置及电子设备
CN111860853B (zh) 在线预测系统、设备、方法及电子设备
CN115048254B (zh) 数据分配策略的仿真测试方法、系统、设备和可读介质
CN111090401B (zh) 存储设备性能预测方法及装置
CN106407395A (zh) 数据查询的处理方法及装置
CN114676140A (zh) 一种场景数据存储方法、装置、设备和介质
CN115017050A (zh) 自动驾驶的测试场景生成系统及方法
US20240211242A1 (en) Apparatus and method for optimally updating vehicle controller
CN111277626A (zh) 服务器升级方法、装置、电子设备及介质
CN111478823A (zh) 一种多云管理平台测试方法及装置
CN111274032A (zh) 任务处理系统及方法、存储介质
CN115292044A (zh) 数据处理方法、装置、电子设备及存储介质
CN115218915A (zh) 模拟驾驶测试方法、装置、计算机设备和存储介质
CN113971428A (zh) 数据处理方法、系统、设备、程序产品及存储介质
KR101989222B1 (ko) 구조변이 검출 방법, 디바이스 및 시스템
CN111562982B (zh) 请求数据的处理方法及装置、计算机可读存储介质、电子设备
CN110958144B (zh) 获取网络的方法及装置
CN116089187B (zh) 一种gpu测试系统、电子设备和存储介质
CN117093343A (zh) 一种异步任务执行控制方法、装置、设备及存储介质
CN118778891A (zh) 数据存储方法、装置、电子设备、存储介质和程序产品
CN117149423A (zh) 基于分布式集群的调度方法及装置
CN113630446A (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