CN115454353B - 一种面向空间应用数据的高速写入及查询方法 - Google Patents

一种面向空间应用数据的高速写入及查询方法 Download PDF

Info

Publication number
CN115454353B
CN115454353B CN202211267431.5A CN202211267431A CN115454353B CN 115454353 B CN115454353 B CN 115454353B CN 202211267431 A CN202211267431 A CN 202211267431A CN 115454353 B CN115454353 B CN 115454353B
Authority
CN
China
Prior art keywords
data
time
ascending
objects
query
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.)
Active
Application number
CN202211267431.5A
Other languages
English (en)
Other versions
CN115454353A (zh
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.)
Technology and Engineering Center for Space Utilization of CAS
Original Assignee
Technology and Engineering Center for Space Utilization of CAS
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 Technology and Engineering Center for Space Utilization of CAS filed Critical Technology and Engineering Center for Space Utilization of CAS
Priority to CN202211267431.5A priority Critical patent/CN115454353B/zh
Publication of CN115454353A publication Critical patent/CN115454353A/zh
Application granted granted Critical
Publication of CN115454353B publication Critical patent/CN115454353B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于载人航天技术领域,尤其涉及一种面向空间应用数据的高速写入及查询方法。该方法包括:动态分区模块将实时获取的科学实验载荷的源包数据写入分布式时序数据库,同时向外发布源包数据的元信息;索引构建模块将源包数据的元信息按照科学实验设备的ID进行区分并生成范围索引信息,将范围索引信息存储至分布式时序数据库中;高速查询模块接收查询请求,根据查询请求在分布式时序数据库中查询对应数据。本方案从根本上避免了分布式时序数据库热点的出现,避免了过大分区的出现,提高了读写性能以及系统稳定性;通过构建范围索引表及精确索引表,在进行大范围数据查询时先查询范围索引,再查询精确索引表,大大加快了大范围稀疏查询的效率。

Description

一种面向空间应用数据的高速写入及查询方法
技术领域
本发明属于载人航天技术领域,尤其涉及一种面向空间应用数据的高速写入及查询方法。
背景技术
随着物联网的发展,越来越多的设备接入了网络,这些设备每时每刻均在产生数据,传统的关系型数据库难以满足数据的海量存储、高速写入、高效查询需求,时序数据库作为数据的载体扮演着越来越重要的角色。与常用的关系数据库不同,在时序数据库中一般按照设备名称或ID、数据采集时间等对数据进行分区,以满足海量数据的实时写入与快速查询需求。
载人航天空间应用领域有效载荷每天产生的原始数据量可达TB级,有效载荷产生的遥测、工程以及科学应用数据均可以当做时序数据进行处理,然而由于载人航天领域的特殊性,其涉及到的科学实验载荷设备种类繁多,部分设备产生的数据每次采集的数据量不定(64Byte~32KB不等)、采集的频率不确定(0.5HZ~100HZ不等),因此导致难以准确确定数据库表分区的大小。分区过大会产生热点,严重影响数据的写入,并且过大的分区会导致查询缓慢甚至查询超时;分区过小会导致频繁进行文件切换等IO操作,也会影响数据库的写入性能;因此,面向未知特性的海量数据,如何实现动态分区,同时支持高速写入与查询是当前亟需解决的问题。
发明内容
本发明所要解决的技术问题是提供一种面向空间应用数据的高速写入及查询方法。
本发明解决上述技术问题的技术方案如下:一种面向空间应用数据的高速写入及查询方法,包括:
步骤1,动态分区模块将实时获取的科学实验载荷产生的源包数据写入分布式时序数据库,同时向外发布所述源包数据的元信息;
步骤2,索引构建模块将所述源包数据的元信息按照科学实验设备的ID进行区分并生成范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;
步骤3,高速查询模块接收查询请求,根据所述查询请求在所述分布式时序数据库中查询对应数据。
本发明的有益效果是:通过动态分区的方法,在无需复杂配置的基础上能够实现对不定数据大小、不定采集频率未知特性数据的分区的动态适应,严格限制了分区数据的大小以及数据条数,从而从根本上避免了热点的出现,避免了过大分区的出现,提高了读写的性能以及系统的稳定性;通过构建范围索引表及精确索引表,在进行大范围数据查询时先查询范围索引,再查询精确索引表,大大加快了大范围稀疏查询的效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤1具体为:
所述动态分区模块通过消息中间件获取源包数据,提取所获取的每包源包数据的精确索引信息,并依据动态分区规则计算获取到的每包源包数据的动态分区取值,将所述获取的每包源包数据写入时序数据库的数据表,将所述精确索引信息写入时序数据库的精确索引表;将所述精确索引信息进行格式转换,转换为源包数据的元信息,将所述源包数据的元信息通过消息中间件向外发布。
进一步,所述动态分区规则为:
在动态分区模块内部维护三个静态变量,所述三个静态变量包括:datapk、partitionSize以及partitionCount,所述datapk表示数据的动态分区键,所述动态分区模块运行后datapk从0开始计数,所述partitionSize表示当前datapk分区已写入的数据量,所述partitionCount表示当前datapk分区已写入的数据条数;
当满足第一条件时通过第一方案进行处理,当不满足第一条件时通过第二方案进行处理;
所述第一条件为:通过消息中间件获取的源包数据中的数据量加上partitionSize的大小大于用户配置的每个分区的允许大小,或者当通过消息中间件获取的源包数据中的数据条数加上partitionCount的大小大于用户配置的每个分区允许的数据条数大小;
所述第一方案具体为:控制datapk加1,同时将partitionSize以及partitionCount清零;
所述第二方案具体为:用所述通过消息中间件获取的源包数据中的数据量加上partitionSize的值更新partitionSize的值,用所述通过消息中间件获取的源包数据中的数据条数加上partitionCount的值更新partitionCount的值。
进一步,在所述将所述精确索引信息写入时序数据库的精确索引表之前还包括:
实时判断所述精确索引信息在历史第一预设时间段内是否有写入过时序数据库,将在历史第一预设时间段内未写入过时序数据库的所述精确索引信息写入时序数据库。
进一步,所述步骤2具体为:
索引构建模块为接收到的每一个源包数据的元信息构建一个新的TS对象,将接收到的TS对象依据每个TS对象对应的科学实验设备的ID分类放入缓存中,并按照TS对象中的开始时间由小到大的顺序对所有TS对象排序;按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备的ID对应的范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;所述TS对象包括三个属性:starttime、endtime以及ttl;所述starttime表示TS对象所对应的科学实验设备的采集开始时间,所述endtime表示TS对象所对应的科学实验设备的采集结束时间,所述ttl表示所述TS对象的存活时间。
进一步,所述按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备对应的范围索引信息的过程为:
将升序排列后排在第一位的TS对象的ttl加1,若升序排列后排在第一位的TS对象的ttl不小于第三预设时间,则将升序排列后排在第一位的TS对象对应的科学实验设备的ID、升序排列后排在第一位的TS对象的开始时间以及结束时间写入所述范围索引表中,并删除升序排列后排在第一位的TS对象,同时将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
将升序排列后排在第一位的TS对象的ttl加1后,若升序排列后排在第一位的TS对象的ttl小于第三预设时间,则对升序排列后排在第二位的TS对象的开始时间与升序排列后排在第一位的TS对象的结束时间进行比对:若升序排列后排在第二位的TS对象的开始时间比升序排列后排在第一位的TS对象的结束时间不小于第四预设时间,则不进行任何操作,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中。若否,则对升序排列后排在第二位的TS对象的结束时间与升序排列后排在第一位的TS对象的结束时间进行比对;
若升序排列后排在第二位的TS对象的结束时间比升序排列后排在第一位的TS对象的结束时间大,则将升序排列后排在第二位的TS对象的结束时间赋值给升序排列后排在第一位的TS对象的结束时间,同时删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
若升序排列后排在第二位的TS对象的结束时间不大于升序排列后排在第一位的TS对象的结束时间,则直接删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中。
进一步,所述步骤3具体为:
所述高速查询模块提取所述查询请求中的拟查询的数据对应的科学实验设备的ID、查询开始时间、查询结束时间以及查询最大返回的数据条数,并基于所述查询请求中的科学实验设备的ID、查询开始时间、查询结束时间在所述范围索引表中提取对应的范围索引信息集合,基于所述查询请求中的科学实验设备的ID、查询开始时间、查询结束时间在Redis中提取所述TS对象缓存对应的TS对象集合;从所述范围索引信息集合与所述TS对象集合中分别提取第一开始结束时间集合和第二开始结束时间集合,将第一开始结束时间集合与第二开始结束时间集合取并集,得到第三开始结束时间集合;依据所述查询请求中的查询最大返回的数据条数从所述第三开始结束时间集合中均匀采样,获取离散均匀的秒值集合;根据所述秒值集合在所述精确索引表中查询并获取对应的精确索引信息集合;进一步地根据所述精确索引信息集合,通过多线程的方式从数据表中提取所述精确索引信息集合对应的源包数据,所述查询最大返回的数据条数用num表示;
所述第一开始结束时间集合用第一式表示:所述第一式具体为:{startime(1)~endtime(1),startime(2)~endtime(2)……startime(n)~endtime(n)};
所述第二开始结束时间集合用第二式表示:所述第二式具体为:{startime(n+m)~endtime(n+m),startime(n+m+1)~endtime(n+m+1)……startime(n+m+p)~endtime(n+m+p)};
所述第三开始结束时间集合用第三式表示:所述第三式具体为:{startime(1)~endtime(1),startime(2)~endtime(2)……startime(n)~endtime(n),startime(n+m)~endtime(n+m),startime(n+m+1)~endtime(n+m+1)……startime(n+m+p)~endtime(n+m+p)}。
进一步,所述依据所述查询请求中的查询最大返回的数据条数从所述第三开始结束时间集合中均匀采样,获取离散均匀的秒值集合的过程为:
通过第四式计算第三开始结束时间集合中所有开始结束时间段的总时间长度,所述第四式具体为:
T=endtime(1)-startime(1)+endtime(2)-startime(2)+……+endtime(n)-startime(n)+endtime(n+m)-startime(n+m)+endtime(n+m+1)-startime(n+m+1)+……+endtime(n+m+p)-startime(n+m+p);
通过第五式计算每隔多少步长从所述第三开始结束时间集合的开始结束时间段中取一个秒值,所述第五式具体为:
delta=T/num;
其中,delta为浮点数,
因此,第三开始结束时间集合中的第
Figure BDA0003893634510000041
个秒值、第
Figure BDA0003893634510000042
个秒值、第
Figure BDA0003893634510000043
个秒值为采样后的秒值。
附图说明
图1为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的流程示意图;
图2为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的异构数据高速写入查询系统架构图;
图3为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的源包数据结构图;
图4为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的精确索引表结构图;
图5为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的数据表结构图;
图6为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的动态分区模块流程示意图;
图7为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的源包数据元信息示意图;
图8为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的范围索引表结构图;
图9为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的索引构建模块流程示意图;
图10为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的ConcurrentSkipListSet的数据结构图;
图11为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的TS比较第一示意图;
图12为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的TS比较第二示意图;
图13为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的查询到的Cassandra数据库中的开始结束时间集合示意图;
图14为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的查询到的Redis数据库中的开始结束时间集合示意图;
图15为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的取交集前示意图;
图16为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的取交集后示意图;
图17为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的计算秒值示意图;
图18为本发明一种面向空间应用数据的高速写入及查询方法实施例提供的高速查询模块流程示意图。
具体实施方式
以下对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种面向空间应用数据的高速写入及查询方法,包括:
步骤1,动态分区模块100将实时获取的科学实验载荷产生的源包数据写入分布式时序数据库,同时向外发布所述源包数据的元信息;
步骤2,索引构建模块200将所述源包数据的元信息按照科学实验设备的ID进行区分并生成范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;
步骤3,高速查询模块300接收查询请求,根据所述查询请求在所述分布式时序数据库中查询对应数据。
在一些可能的实施方式中,通过动态分区的方法,在无需复杂配置的基础上能够实现对不定数据大小、不定采集频率的异构数据分区的动态适应,严格限制了分区数据的大小以及数据条数,从而从根本上避免了热点的出现,避免了过大分区的出现,提高了读写的性能以及系统的稳定性;通过构建范围索引表及精确索引表,在进行大范围稀疏查询时先查询范围索引表,再查询精确索引表,最后依据精确索引信息查询数据表,大大加快了大范围稀疏查询的效率。
需要说明的是,在本方案中,服务器型号、配置可替代;数据库集群不限于Cassandra,可以是HBase、InfluxDB等任意的时序数据库集群;消息中间件不限于KAFKA,可以是ActiveMQ、RabbitMQ等任意中间件。
如图2所示,在本方案中动态分区模块100(集群)通过KAFKA实时接收科学实验载荷产生的源包数据,将源包数据实时写入分布式时序数据库Cassandra中,同时通过KAFKA向外发布源包数据的元信息;索引构建模块200通过KAFKA接收实时下行的源包数据的元信息,将元信息依据不同的设备ID进行区分,对其采集时间进行汇聚处理生成范围索引,并将范围索引写入Cassandra中,以备后续查询使用;高速查询模块300(集群)响应查询请求,从Cassandra数据库中取出对应数据。其中源包数据的结构如图3所示,源包数据为不定长二进制源码数据包,最长不超过2KB。
设备ID(deviceID):空间站科学实验载荷设备的唯一ID,不同的设备产生的数据不同;
包序号(sequenceNo):每个设备每次开机采集的源包的包序号从0开始递增,到0x7FFF后翻转到0;
时间码(second、subsecond):每包载荷源包在空间站上采集的时间,前四字节为秒值,后四字节为微秒值;
有效长度:数据域中有效数据的长度;
数据域(content):存储的本设备采集的数据源码;
CRC:循环冗余校验码。
步骤1,动态分区模块100将实时获取的科学实验载荷产生的源包数据写入分布式时序数据库,同时向外发布所述源包数据的元信息的具体过程可参考如下示例:
动态分区模块100支持水平扩展,可部署一个或多个;当当前分区已写入的数据条数或数据量达到配置的上限后则分区键加一,实现自动切换;同时为了支持后续的查询,每当写入一条数据,还会追加一条精确索引信息,便于高速查询模块300查询。具体表结构如图4所示,其中pk表示Partition Key,即分区键,ck表示Clustering Key,即排序键;
Cassandra数据库表中的主键由分区键(Partition Key)和排序键(ClusteringKey)复合的形式组成。在本方案的库表设计中,每一个数据表都会对应一个精确索引表。精确索引表的分区键为deviceID和date组成,即同一个设备某一时间段(时间段长度由人为设置的segment的大小决定,segment越大,一个分区中的数据量就越多,反之,越小)的精确索引信息放入相同的分区;排序键由时间码、数据的分区键和写入客户端ID组成,先按照时间码排序,在此基础上再按照数据的分区键和写入客户端ID排序。
date=second/seglength,seglength用户可自行设定,在本方案中使用的是86400,即将某个设备一天产生的数据的精确索引放入一个分区中。
datapk(数据的分区键)、client(客户端ID),取自数据表对应的分区键,实现精确索引表与数据表的关系映射,timestamp为索引入库时间。
如图5所示,在数据表中每一组datapk和client确定一个分区。每一个动态分区模块100进程有一个唯一的client标识(写入客户端ID),为保证其唯一性在本方案中通过服务器IP地址与进程ID拼接得到。每个动态分区模块100自己维护的一个数据的分区键,当前正在写入的数据表的分区满足数据条数和数据量要求后则datapk加一。
在数据表中引入了globalnum(全局序号)作为主键的一部分,以防止设备ID、时间码、包序号均相同的数据被覆盖;globalnum在动态分区模块100通过原子计数器进行维护。
如图6所示,1)动态分区模块100采用批量拉取的方式从KAFKA中获取源包数据,将每次拉取的源包数据存储在数组A中(A的数据结构为ArrayList<byte[]>);若当前A的数据量小于32KB,则继续消费,消费获取到的源包数据向数组A中追加,直到多次获取的总数据量大小大于32KB,或者连续拉取3次,未拉取到新的数据,则开始进行分区计算。
2)分区计算方式:在分区计算过程中需要用到三个变量,这三个变量在动态分区模块100内部进行维护,一个是datapk(数据的分区键,在动态分区模块100启动后从0开始计数),一个是partitionSize(当前datapk分区已写入的数据量,单位MB),另一个是partitionCount(当前datapk分区已写入的数据条数)。当数组A中的数据量加上partitionSize的大小大于用户配置的每个分区的允许大小或者当数组A中的数据条数加上partitionCount的大小大于用户配置的每个分区允许的数据条数大小时,datapk加1,同时partitionSize、partitionCount清零;否则用数组A中的数据量加上partitionSize的值更新partitionSize的值,用数组A中的数据条数加上partitionCount的值partitionCount的值;
3)从数组A中缓存的每一包源包数据中提取每一包源包数据对应的精确索引信息,并将精确索引信息存储到集合B中;精确索引的具体提取方式:client为固定字段,deviceID、second可通过源包数据获取到,datapk为已知项,date=second/seglength(seglength是用户的静态配置);
4)为减轻写入的压力,避免精确索引数据的重复写入(空间站载荷设备的采集频率各不相同,当采集频率大于1时,同一秒会采集多包源包数据),在动态分区模块100中通过Caffeine缓存中间件(用CacheB表示)缓存了一份历史5分钟内所有载荷源包对应的精确索引信息;
5)查看3)中提取到的每条精确索引信息是否包含(deviceID、second、datapk、client均相同则认为两条精确索引相同)在CacheB中,若包含在其中,则将本条精确索引从B中删除;若不包含,则将本条精确索引添加到CacheB中;
6)从数组A的每个源包数据中提取写入数据表所需的各字段信息,并每包载荷源包通过Cassandra cql语句采用批量提交的方式写入数据表;同时将集合B中的所有精确索引信息采用批量提交的方式写入精确索引表;
7)将集合B中的精确索引信息转换为源包数据元信息(如图7所示,源包数据元信息为Json格式,包含源包的deviceID和second),并通过KAFKA向外发布。
步骤2,索引构建模块200将所述源包数据的元信息按照科学实验设备的ID进行区分并生成范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中的具体过程可参考如下示例:
范围索引表结构如图8所示。
如图9所示,1)将消费到的每一条源包数据元信息构建一个新的TS对象,TS属性包括starttime、endtime以及ttl(存活时间),starttime、endtime初始化时的值等于源包元信息的second,ttl初始化为0s;
2)索引构建模块200中维护了一个ConcurrentHashMap,ConcurrentHashMap的KEY为deviceID,VALUE为ConcurrentSkipListSet<TS>;将新建的TS对象放入集合ConcurrentSkipListSet中,并且以starttime由小到大的顺序进行排序;
3)每隔1s钟,对索引构建模块中缓存的所有TS,依据不同的deviceID分别进行遍历,在遍历过程中执行步骤4、5、6、7;
ConcurrentSkipListSet的数据结构示意图如图10所示,TS1至TSn分别代表了n个源包元信息对应的TS对象,按照startime有小到大的顺序进行排列;
4)值得说明的是,在通过遍历进行比较的时候是按照从小到大开始比较的,即先比较TS1和TS2,再比较TS2和TS3,依次类推;为便于后续描述,当比较TS1和TS2时,TS1视为TS_now,TS2视为TS_next,当比较TS2和TS3时,TS2视为TS_now,TS3视为TS_next,依次类推。首先将TS_now的存活时间ttl加1,如果ttl加1后的值大于等于10,则将TS_now所携带的deviceID、starttime、endtime信息通过Cassandra cql语句写入范围索引表,同时从ConcurrentSkipListSet中删除TS_now,而后处理下一个TS;若否,则进行下述步骤5、步骤6的判断;
5)如果TS_next的开始时间startime比TS_now的结束时间endtime大1s及以上(如图11所示),则不进行任何操作,直接处理下一个TS;
6)如果TS_next的开始时间减去TS_now的结束时间小于1则进行下述步骤7、步骤8的判断;
7)如果TS_next的结束时间比TS_now的结束时间大(如图12所示),那么将TS_next的结束时间赋值给TS_now的结束时间,删除TS_next,并且将TS_now的存活时间置为0(表示刚刚更新过),而后处理下一个TS;
8)若否,则直接删除TS_next,并且将TS_now的存活时间置为0,而后处理下一个TS;
9)在完成遍历后,将每个deviceID对应的集合ConcurrentSkipListSet同步到redis内存数据库中,供高速查询模块300查询使用。
步骤3,高速查询模块300接收查询请求,根据所述查询请求在所述分布式时序数据库中查询对应数据的具体实现过程可参考如下示例:
如图18所示,为便于对数据进行抽帧查询提高查询效率,在高速查询模块300中先查询范围索引,而后依据查询时设置的数据量要求,从查询到的范围索引中均匀选出所需的秒值,而后依据秒值查询精确索引表,获取数据所在的分区,最后采用多线程从不同的分区获取数据。
1)高速查询模块300接收查询请求,并从查询请求中提取deviceID、startime、endtime、num字段(deviceID为拟查询的设备的ID,startime、endtime对应范围索引中的相关字段,代表拟查询的数据的时间范围;num指的是最大返回的数据条数);
2)依据公式date=startime\seglength分别计算数据查询请求中的starttime和endtime所在的范围索引表的分区date_start和date_end,并通过cassandra cql语句从Cassandra的范围索引表中取出分区范围在date_start~date_end的范围索引,如图13所示,在图中的每个范围索引分区中仅绘制了两条范围索引作为示例,实际应用过程中有可能某个分区中没有索引(所对应的某个场景为:在这个时间段设备并未开机,并未采集数据),也有可能某个分区中有很多索引(所对应的某个场景为:在这个时间段设备采集的数据时断时续);此外可以看到endtime(n)超过了date_end-1分区的范围,这里也仅是一个示例,为了提醒读者,范围索引存储在哪个分区中取决于startime与endtime无关。根据图14中的示例,取出来的范围索引为n条。
3)依据查询请求中的deviceID从redis数据库中获取TS集合ConcurrentSkipListSet(这部分的TS的开始时间、结束时间还未持久化到Cassandra范围索引,因此这部分的TS的开始时间一定大于从Cassandra中查出的范围索引);将ConcurrentSkipListSet中与查询请求中的startime~endtime有交集的部分取出,上述内容可参考如下示例:如图15所示,图中有交集的部分为TS(n+m),TS(n+m+1),……,TS(n+m+p)。
4)如图16以及17所示,对Cassandra中查到的范围索引和从redis中查到的TS进行汇总,并与查询请求的开始结束时间取交集,图中有交集的部分为:
startime~endtime(1)
startime(2)~endtime(2)
startime(n)~endtime(n)
startime(n+m)~endtime(n+m)
startime(n+m+1)~endtime(n+m+1)
startime(n+m+p)~endtime。
5)依据查询请求中的数据点数num字段的要求,从取交集后的时间段信息中均匀选择num个秒值,所谓均匀指的是如下算法:
先计算所有时间段的总时间长度T=endtime(1)-startime+endtime(2)-startime(2)+…+endtime(n)-startime(n)+endtime(n+m)-startime(n+m)+endtime(n+m+1)-startime(n+m+1)+endtime-startime(n+m+p)
再计算每隔多少个秒,则需要取一个数据点:
delta=T/num,delta为浮点数
因此,第三开始结束时间集合中的第
Figure BDA0003893634510000101
个秒值、第
Figure BDA0003893634510000102
个秒值、第
Figure BDA0003893634510000103
个秒值为采样后的秒值。
6)依据采样后的秒值计算每个秒值所在的精确索引的分区(计算方式为date=采样后的秒值/seglength),依据分区个数创建线程数,通过Cassandr acql语句查询精确索引表,取出每个秒值对应的精确索引;
7)精确索引给出了数据的分区键datapk、client,依据datapk和client的组数分配线程,通过Cassandra cql语句查询数据表,将多线程查询的结果汇总后反馈给请求方。
本方案基于30台华为2288HV5服务器搭建了Cassandra集群(IP范围172.xx.xx.200~172.xx.xx.229),服务器配置为:2颗intel Xeon Silver 4114 CPU,512GB DDR4内存,1块900GB SSD硬盘,24块1.1TB SAS接口硬盘,双端口万兆网卡。
模拟客户端写入查询的测试机器5台,机器配置与Cassandra服务器配置相同。
172.xx.xx.230、172.xx.xx.231、172.xx.xx.103同时进行写入查询操作,172.xx.xx.102、172.xx.xx.101仅进行查询操作。
173.模拟场景为:在30节点服务器集群的存储量达总容量70%的情况下,对并发读写的吞吐量及延迟进行了测试,每次测试持续时间为40分钟,测试完成后间歇10分钟,再次进行下次测试。
174. 32KB大小数据包每秒写入5000条,读取1万条;2KB数据包每秒写入16万条,读取32万条;17KB数据包每秒写入8万条,读取16万条。
优选地,在上述任意实施例中,所述步骤1具体为:
所述动态分区模块通过消息中间件获取源包数据,提取所获取的每包源包数据的精确索引信息,并依据动态分区规则计算获取到的每包源包数据的动态分区取值,将所述获取的每包源包数据写入时序数据库的数据表,将所述精确索引信息写入时序数据库的精确索引表;将所述精确索引信息进行格式转换,转换为源包数据的元信息,将所述源包数据的元信息通过消息中间件向外发布。
优选地,在上述任意实施例中,所述动态分区规则为:
在动态分区模块100内部维护三个静态变量,所述三个静态变量包括:datapk、partitionSize以及partitionCount,所述datapk表示数据的动态分区键,所述动态分区模块运行后datapk从0开始计数,所述partitionSize表示当前datapk分区已写入的数据量,所述partitionCount表示当前datapk分区已写入的数据条数;
当满足第一条件时通过第一方案进行处理,当不满足第一条件时通过第二方案进行处理;
所述第一条件为:通过消息中间件获取的源包数据中的数据量加上partitionSize的大小大于用户配置的每个分区的允许大小,或者当通过消息中间件获取的源包数据中的数据条数加上partitionCount的大小大于用户配置的每个分区允许的数据条数大小;
所述第一方案具体为:控制datapk加1,同时将partitionSize以及partitionCount清零;
所述第二方案具体为:用所述通过消息中间件获取的源包数据中的数据量加上partitionSize的值更新partitionSize的值,用所述通过消息中间件获取的源包数据中的数据条数加上partitionCount的值更新partitionCount的值。
优选地,在上述任意实施例中,在所述将所述精确索引信息写入时序数据库的精确索引表之前还包括:
实时判断所述精确索引信息在历史第一预设时间段内是否有写入过时序数据库,将在历史第一预设时间段内未写入过时序数据库的所述精确索引信息写入时序数据库。
优选地,在上述任意实施例中,所述步骤2具体为:
索引构建模块200为接收到的每一个源包数据的元信息构建一个新的TS对象,将接收到的TS对象依据每个TS对象对应的科学实验设备的ID分类放入缓存中,并按照TS对象中的开始时间由小到大的顺序对所有TS对象排序;按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备的ID对应的范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;所述TS对象包括三个属性:starttime、endtime以及ttl;所述starttime表示TS对象所对应的科学实验设备的采集开始时间,所述endtime表示TS对象所对应的科学实验设备的采集结束时间,所述ttl表示所述TS对象的存活时间。
优选地,在上述任意实施例中,所述按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备对应的范围索引信息的过程为:
将升序排列后排在第一位的TS对象的ttl加1,若升序排列后排在第一位的TS对象的ttl不小于第三预设时间,则将升序排列后排在第一位的TS对象对应的科学实验设备的ID、升序排列后排在第一位的TS对象的开始时间以及结束时间写入所述范围索引表中,并删除升序排列后排在第一位的TS对象,同时将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
将升序排列后排在第一位的TS对象的ttl加1后,若升序排列后排在第一位的TS对象的ttl小于第三预设时间,则对升序排列后排在第二位的TS对象的开始时间与升序排列后排在第一位的TS对象的结束时间进行比对:若升序排列后排在第二位的TS对象的开始时间比升序排列后排在第一位的TS对象的结束时间不小于第四预设时间,则不进行任何操作,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中。若否,则对升序排列后排在第二位的TS对象的结束时间与升序排列后排在第一位的TS对象的结束时间进行比对;
若升序排列后排在第二位的TS对象的结束时间比升序排列后排在第一位的TS对象的结束时间大,则将升序排列后排在第二位的TS对象的结束时间赋值给升序排列后排在第一位的TS对象的结束时间,同时删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
若升序排列后排在第二位的TS对象的结束时间不大于升序排列后排在第一位的TS对象的结束时间,则直接删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例仅仅是示意性的,例如,步骤的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个步骤可以结合或者可以集成到另一个步骤,或一些特征可以忽略,或不执行。
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (6)

1.一种面向空间应用数据的高速写入及查询方法,其特征在于,包括:
步骤1,动态分区模块将实时获取的科学实验载荷产生的源包数据写入分布式时序数据库,同时向外发布所述源包数据的元信息;
步骤2,索引构建模块将所述源包数据的元信息按照科学实验设备的ID进行区分并生成范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;
步骤3,高速查询模块接收查询请求,根据所述查询请求在所述分布式时序数据库中查询对应数据;
所述步骤1具体为:
所述动态分区模块通过消息中间件获取源包数据,提取所获取的每包源包数据的精确索引信息,并依据动态分区规则计算获取到的每包源包数据的动态分区取值,将所述获取的每包源包数据写入时序数据库的数据表,将所述精确索引信息写入时序数据库的精确索引表;将所述精确索引信息进行格式转换,转换为源包数据的元信息,将所述源包数据的元信息通过消息中间件向外发布;
所述动态分区规则为:
在动态分区模块内部维护三个静态变量,所述三个静态变量包括:datapk、partitionSize以及partitionCount,所述datapk表示数据的动态分区键,所述动态分区模块运行后datapk从0开始计数,所述partitionSize表示当前datapk分区已写入的数据量,所述partitionCount表示当前datapk分区已写入的数据条数;
当满足第一条件时通过第一方案进行处理,当不满足第一条件时通过第二方案进行处理;
所述第一条件为:通过消息中间件获取的源包数据中的数据量加上partitionSize的大小大于用户配置的每个分区的允许大小,或者当通过消息中间件获取的源包数据中的数据条数加上partitionCount的大小大于用户配置的每个分区允许的数据条数大小;
所述第一方案具体为:控制datapk加1,同时将partitionSize以及partitionCount清零;
所述第二方案具体为:用所述通过消息中间件获取的源包数据中的数据量加上partitionSize的值更新partitionSize的值,用所述通过消息中间件获取的源包数据中的数据条数加上partitionCount的值更新partitionCount的值。
2.根据权利要求1所述的一种面向空间应用数据的高速写入及查询方法,其特征在于,在所述将所述精确索引信息写入时序数据库的精确索引表之前还包括:
实时判断所述精确索引信息在历史第一预设时间段内是否有写入过时序数据库,将在历史第一预设时间段内未写入过时序数据库的所述精确索引信息写入时序数据库。
3.根据权利要求1所述的一种面向空间应用数据的高速写入及查询方法,其特征在于,所述步骤2具体为:
索引构建模块为接收到的每一个源包数据的元信息构建一个新的TS对象,将接收到的TS对象依据每个TS对象对应的科学实验设备的ID分类放入缓存中,并按照TS对象中的开始时间由小到大的顺序对所有TS对象排序;按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备的ID对应的范围索引信息,将所述范围索引信息存储至所述分布式时序数据库中;所述TS对象包括三个属性:starttime、endtime以及ttl;所述starttime表示TS对象所对应的科学实验设备的采集开始时间,所述endtime表示TS对象所对应的科学实验设备的采集结束时间,所述ttl表示所述TS对象的存活时间。
4.根据权利要求3所述的一种面向空间应用数据的高速写入及查询方法,其特征在于,所述按照第二预设时间对缓存中的TS对象按照预设要求依次遍历比较,根据比较结果生成科学实验设备对应的范围索引信息的过程为:
将升序排列后排在第一位的TS对象的ttl加1,若升序排列后排在第一位的TS对象的ttl不小于第三预设时间,则将升序排列后排在第一位的TS对象对应的科学实验设备的ID、升序排列后排在第一位的TS对象的开始时间以及结束时间写入范围索引表中,并删除升序排列后排在第一位的TS对象,同时将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
将升序排列后排在第一位的TS对象的ttl加1后,若升序排列后排在第一位的TS对象的ttl小于第三预设时间,则对升序排列后排在第二位的TS对象的开始时间与升序排列后排在第一位的TS对象的结束时间进行比对:若升序排列后排在第二位的TS对象的开始时间比升序排列后排在第一位的TS对象的结束时间不小于第四预设时间,则不进行任何操作,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中,若否,则对升序排列后排在第二位的TS对象的结束时间与升序排列后排在第一位的TS对象的结束时间进行比对;
若升序排列后排在第二位的TS对象的结束时间比升序排列后排在第一位的TS对象的结束时间大,则将升序排列后排在第二位的TS对象的结束时间赋值给升序排列后排在第一位的TS对象的结束时间,同时删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中;
若升序排列后排在第二位的TS对象的结束时间不大于升序排列后排在第一位的TS对象的结束时间,则直接删除升序排列后排在第二位的TS对象,并且将升序排列后排在第一位的TS对象的ttl置为0,将所述升序排列后排在第二位的TS对象作为新的升序排列后排在第一位的TS对象,将升序排列后排在第三位的TS对象作为新的升序排列后排在第二位的TS对象,直至历遍所有TS对象后,将TS对象的缓存存储到Redis中。
5.根据权利要求3所述的一种面向空间应用数据的高速写入及查询方法,其特征在于,所述步骤3具体为:
所述高速查询模块提取所述查询请求中的拟查询的数据对应的科学实验设备的ID、查询开始时间、查询结束时间以及查询最大返回的数据条数,并基于所述查询请求中的科学实验设备的ID、查询开始时间、查询结束时间在范围索引表中提取对应的范围索引信息集合,基于所述查询请求中的科学实验设备的ID、查询开始时间、查询结束时间在Redis中提取所述TS对象缓存对应的TS对象集合;从所述范围索引信息集合与所述TS对象集合中分别提取第一开始结束时间集合和第二开始结束时间集合,将第一开始结束时间集合与第二开始结束时间集合取并集,得到第三开始结束时间集合;依据所述查询请求中的查询最大返回的数据条数从所述第三开始结束时间集合中均匀采样,获取离散均匀的秒值集合;根据所述秒值集合在所述精确索引表中查询并获取对应的精确索引信息集合;进一步地根据所述精确索引信息集合,通过多线程的方式从数据表中提取所述精确索引信息集合对应的源包数据,所述查询最大返回的数据条数用num表示;
所述第一开始结束时间集合用第一式表示:所述第一式具体为:{startime(1)~endtime(1),startime(2)~endtime(2)……startime(n)~endtime(n)};
所述第二开始结束时间集合用第二式表示:所述第二式具体为:{startime(n+m)~endtime(n+m),
startime(n+m+1)~endtime(n+m+1)……startime(n+m+p)~endtime(n+m+p)};
所述第三开始结束时间集合用第三式表示:所述第三式具体为:{startime(1)~endtime(1),
startime(2)~endtime(2)……startime(n)~endtime(n),startime(n+m)~endtime(n+m),
startime(n+m+1)~endtime(n+m+1)……startime(n+m+p)~endtime(n+m+p)}。
6.根据权利要求5所述的一种面向空间应用数据的高速写入及查询方法,其特征在于,所述依据所述查询请求中的查询最大返回的数据条数从所述第三开始结束时间集合中均匀采样,获取离散均匀的秒值集合的过程为:
通过第四式计算第三开始结束时间集合中所有开始结束时间段的总时间长度,所述第四式具体为:
T=
endtime(1)-startime(1)+endtime(2)-startime(2)+……+endtime(n)-startim e(n)+endtime(n+m)-startime(n+m)+endtime(n+m+1)-startime(n+m+1)+……+endtime(n+m+p)-startime(n+m+p);
通过第五式计算每隔多少步长从所述第三开始结束时间集合的开始结束时间段中取一个秒值,所述第五式具体为:
delta=T/num;
其中,delta为浮点数,
因此,第三开始结束时间集合中的第
Figure FDA0004083076620000071
个秒值、第
Figure FDA0004083076620000072
个秒值、第
Figure FDA0004083076620000073
个秒值为采样后的秒值。
CN202211267431.5A 2022-10-17 2022-10-17 一种面向空间应用数据的高速写入及查询方法 Active CN115454353B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211267431.5A CN115454353B (zh) 2022-10-17 2022-10-17 一种面向空间应用数据的高速写入及查询方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211267431.5A CN115454353B (zh) 2022-10-17 2022-10-17 一种面向空间应用数据的高速写入及查询方法

Publications (2)

Publication Number Publication Date
CN115454353A CN115454353A (zh) 2022-12-09
CN115454353B true CN115454353B (zh) 2023-04-07

Family

ID=84310715

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211267431.5A Active CN115454353B (zh) 2022-10-17 2022-10-17 一种面向空间应用数据的高速写入及查询方法

Country Status (1)

Country Link
CN (1) CN115454353B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117149777B (zh) * 2023-10-27 2024-02-06 腾讯科技(深圳)有限公司 一种数据查询方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111914126A (zh) * 2020-07-22 2020-11-10 浙江乾冠信息安全研究院有限公司 用于索引的网络安全大数据的处理方法、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170193041A1 (en) * 2016-01-05 2017-07-06 Sqrrl Data, Inc. Document-partitioned secondary indexes in a sorted, distributed key/value data store
CN110489653A (zh) * 2019-08-23 2019-11-22 北京金堤科技有限公司 舆情信息查询方法和装置、系统、电子设备、存储介质
CN113806374A (zh) * 2021-09-30 2021-12-17 上海健交科技服务有限责任公司 一种面向大数据的数据流式缓存方法及系统
CN114095032B (zh) * 2021-11-12 2022-07-15 中国科学院空间应用工程与技术中心 基于Flink和RVR的数据流压缩方法、边缘计算系统及存储介质
CN114996552A (zh) * 2022-05-09 2022-09-02 福建天泉教育科技有限公司 一种数据获取方法及终端

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111914126A (zh) * 2020-07-22 2020-11-10 浙江乾冠信息安全研究院有限公司 用于索引的网络安全大数据的处理方法、设备及存储介质

Also Published As

Publication number Publication date
CN115454353A (zh) 2022-12-09

Similar Documents

Publication Publication Date Title
CN110383261B (zh) 用于多流存储装置的流选择
CN110149803B (zh) 数据存储方法、系统及终端设备
TWI682274B (zh) 鍵值儲存樹
TWI682285B (zh) 用於索引鍵值結構樹資料庫的產品、方法及機器可讀媒體
US20200334294A1 (en) Merge tree modifications for maintenance operations
TWI702506B (zh) 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法
CN111046034B (zh) 管理内存数据及在内存中维护数据的方法和系统
CN107577436B (zh) 一种数据存储方法及装置
CN103488684B (zh) 基于缓存数据多线程处理的电力可靠性指标快速计算方法
CN111339103B (zh) 一种基于全量分片和增量日志解析的数据交换方法及系统
KR102031588B1 (ko) 파일 저장 시의 색인 구현 방법 및 시스템
CN111309720A (zh) 时序数据的存储、读取方法、装置、电子设备及存储介质
CN106970958B (zh) 一种流文件的查询与存储方法和装置
CN111061758B (zh) 数据存储方法、装置及存储介质
CN115454353B (zh) 一种面向空间应用数据的高速写入及查询方法
CN112613271A (zh) 数据分页方法、装置、计算机设备及存储介质
EP3788505A1 (en) Storing data items and identifying stored data items
CN116662019B (zh) 请求的分配方法、装置、存储介质及电子装置
US20130111164A1 (en) Hardware compression using common portions of data
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
CN110990394A (zh) 分布式面向列数据库表的行数统计方法、装置和存储介质
CN116055589B (zh) 数据管理方法、装置及计算机设备
CN110389967B (zh) 数据存储方法、装置、服务器及存储介质
CN104572643A (zh) 搜索方法和搜索引擎
CN112732662B (zh) 一种NiFi同步数据量统计方法

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
GR01 Patent grant
GR01 Patent grant