一种满足高并发低延迟的工业时序数据入库与索引方法与流程

摘要: 本发明属于数据库,涉及一种满足高并发低延迟的工业时序数据入库与索引方法。背景技术:1、随着工业互联网和物联网技术的快速发展,工业现场部署的测点(传感器、监测设备...
一种满足高并发低延迟的工业时序数据入库与索引方法与流程

本发明属于数据库,涉及一种满足高并发低延迟的工业时序数据入库与索引方法。

背景技术:

1、随着工业互联网和物联网技术的快速发展,工业现场部署的测点(传感器、监测设备等)数量呈指数级增长,测点以毫秒级或微秒级频率持续产生海量时序数据。以智能电网、石油化工、智能制造等典型工业场景为例,往往涉及数万乃至数十万个测点,每个测点以高频(如每秒数十至数百次)产生数据,整体数据写入吞吐量可达每秒数万至数十万点。

2、海量测点高频实时数据的同时写入,给传统数据库系统带来了巨大的写入压力。通用时序数据库在应对此类场景时,通常面临以下技术瓶颈:

3、第一、写入路径过长: 通用时序数据库往往需要经过连接建立、sql解析、事务开启、索引维护、日志写入、数据落盘等多个环节,每次写入涉及多次磁盘i/o和锁竞争,单点写入延迟难以控制在毫秒级别。

4、第二、锁竞争严重:在多测点并发写入场景下,通用数据库通常采用b+树或lsm树等索引结构,写入过程中需要加锁维护索引,高并发下锁冲突显著,导致写入吞吐量急剧下降和延迟剧烈抖动。

5、第三、缺乏测点级隔离:通用时序数据库通常将所有测点的数据混写入同一存储结构,不同测点的写入相互干扰,一个测点的大数据量写入可能阻塞其他测点的写入请求。

6、第四、交互开销大:传统写入方式为每条数据独立发送请求,在网络往返延迟的影响下,单条数据写入的延迟被网络延迟放大,难以满足工业场景下严格的实时性要求。

7、由此可见,通用时序数据库在不经过深度定制优化的情况下,无法稳定实现5万点200毫秒以内的入库延迟指标,难以满足工业实时监控、故障预警等场景对数据实时性的严苛要求。

技术实现思路

1、本发明的目的在于解决现有技术中通用时序数据库在海量测点高频并发写入场景下入库延迟高、难以稳定实现5万点200毫秒以内入库延迟的缺陷,提供一种满足高并发低延迟的工业时序数据入库与索引方法及系统。

2、为达到上述目的,本发明采用以下技术方案予以实现:

3、一种满足高并发低延迟的工业时序数据入库与索引方法,包括以下步骤:

4、获取工业测点的时序数据,根据预设的时间窗口将时序数据聚合为微批次;

5、为数据库引擎中的每个测点id预分配对应的无锁环形缓冲区,根据无锁环形缓冲区和微批次,为时序数据分配对应的无锁环形缓冲区;

6、根据预设周期从无锁环形缓冲区中批量读取时序数据,将读取的时序数据刷入磁盘存储文件,并更新扁平索引表;

7、获取查询请求,根据查询请求获取目标测点id,根据目标测点id查询扁平索引表获得物理偏移量,根据物理偏移量从磁盘存储文件中读取时序数据。

8、本发明的进一步改进在于:

9、所述根据预设的时间窗口将时序数据聚合为微批次,包括:

10、以固定时间窗口为批次划分单位,将落入同一时间窗口内的多条时序数据封装为一个微批次,所述固定时间窗口的时长范围为10毫秒至100毫秒。

11、所述根据预设的时间窗口将时序数据聚合为微批次,还包括:

12、当在时间窗口内累积的时序数据条数达到预设条数阈值时,提前将当前累积的数据封装为一个微批次发送;

13、所述预设条数阈值为100条至1000条。

14、所述为数据库引擎中的每个测点id预分配对应的无锁环形缓冲区,包括:

15、根据时序数据所属的测点id定位到对应的无锁环形缓冲区;

16、通过cas原子操作,更新当前无锁环形缓冲区的写指针;

17、将时序数据写入写指针更新前指向的缓冲位置;

18、原子性地更新当前无锁环形缓冲区中的数据计数。

19、所述扁平索引表存储于内存中,当数据库引擎启动时,从磁盘加载扁平索引表至内存;

20、所述扁平索引表采用哈希表结构,以测点id为键、以当前测点id对应数据在磁盘存储文件中的物理偏移为值。

21、所述根据预设周期从无锁环形缓冲区中批量读取时序数据,将读取的时序数据刷入磁盘存储文件,包括:

22、后台线程以10毫秒至100毫秒为周期遍历所有无锁环形缓冲区;

23、读取所有无锁环形缓冲区中当前累积的全部未刷数据;

24、将读取的全部数据合并后,顺序写入磁盘存储文件的尾部。

25、一种满足高并发低延迟的工业时序数据入库与索引系统,包括:

26、数据网关聚合模块,用于获取工业测点的时序数据,根据预设的时间窗口将时序数据聚合为微批次;

27、无锁缓冲写入模块,用于为数据库引擎中的每个测点id预分配对应的无锁环形缓冲区,根据无锁环形缓冲区和微批次,为时序数据分配对应的无锁环形缓冲区;

28、批量刷盘与索引更新模块,用于根据预设周期从无锁环形缓冲区中批量读取时序数据,将读取的时序数据刷入磁盘存储文件,并更新扁平索引表;

29、查询与索引寻址模块,用于获取查询请求,根据查询请求获取目标测点id,根据目标测点id查询扁平索引表获得物理偏移量,根据物理偏移量从磁盘存储文件中读取时序数据。

30、一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现任一项所述的方法。

31、一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现任一项所述方法的步骤。

32、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现任一项所述方法的步骤。

33、与现有技术相比,本发明具有以下有益效果:

34、本发明公开了一种满足高并发低延迟的工业时序数据入库与索引方法,获取工业测点的时序数据并根据预设时间窗口聚合为微批次,减少了数据网关与数据库引擎之间的网络交互次数,从源头削减了网络往返延迟对入库延迟的累积贡献,通过为数据库引擎中的每个测点id预分配对应的无锁环形缓冲区并根据无锁环形缓冲区和微批次为时序数据分配对应的无锁环形缓冲区,使得每个测点的写入操作被隔离于各自独立的缓冲区中且写入过程无需加锁,消除了多测点并发写入时因争抢索引结构而产生的锁等待和上下文切换开销,根据预设周期从无锁环形缓冲区中批量读取时序数据并刷入磁盘存储文件,将随机的小块内存写入转化为周期性的大块顺序磁盘写入,减少了磁盘i/o次数并发挥了顺序磁盘写入的带宽优势,同时更新扁平索引表使索引维护与数据落盘解耦,避免了每一条数据写入时同步维护索引所带来的写入路径延长,通过获取查询请求并根据目标测点id查询扁平索引表获得物理偏移量后直接从磁盘存储文件中读取时序数据,利用扁平索引表的键值映射实现了o(1)寻址,省去了通用数据库b+树或lsm树的多级索引查找过程,使得查询环节的延迟与测点总数无关。

1.一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,所述根据预设的时间窗口将时序数据聚合为微批次,包括:

3.根据权利要求1所述的一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,所述根据预设的时间窗口将时序数据聚合为微批次,还包括:

4.根据权利要求1所述的一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,所述为数据库引擎中的每个测点id预分配对应的无锁环形缓冲区,包括:

5.根据权利要求1所述的一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,所述扁平索引表存储于内存中,当数据库引擎启动时,从磁盘加载扁平索引表至内存;

6.根据权利要求5所述的一种满足高并发低延迟的工业时序数据入库与索引方法,其特征在于,所述根据预设周期从无锁环形缓冲区中批量读取时序数据,将读取的时序数据刷入磁盘存储文件,包括:

7.一种满足高并发低延迟的工业时序数据入库与索引系统,其特征在于,包括:

8.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。

9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-6任一项所述方法的步骤。

10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述方法的步骤。