CN105786917A - 时序数据并发入库的方法和装置 - Google Patents
时序数据并发入库的方法和装置 Download PDFInfo
- Publication number
- CN105786917A CN105786917A CN201410828696.7A CN201410828696A CN105786917A CN 105786917 A CN105786917 A CN 105786917A CN 201410828696 A CN201410828696 A CN 201410828696A CN 105786917 A CN105786917 A CN 105786917A
- Authority
- CN
- China
- Prior art keywords
- data
- array
- time series
- queue
- data processor
- 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.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开时序数据并发入库的方法,获取所述时序数据中同类型数据的唯一标识,预设数据处理器数量,根据所述数据处理器数量和所述同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号;创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度;所述各数据处理器接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中;当所述队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。通过本发明可实现时序数据的高效入库。本发明还公开了时序数据并发入库的装置。
Description
技术领域
本发明涉及数据处理领域,具体涉及一种时序数据并发入库的技术。
背景技术
所谓时序数据,即数据的产生具有时序性,且在进行传输、入库等一些列数据操作时均需要保持其时序性,例如电信系统中的告警数据、指标数据、性能数据等。
以告警数据为例,告警数据在传输过程中必须保证时序性,同一设备产生的告警先后顺序不能够打乱,如果告警数据不能保证时序性,会造成告警入库错误进而在后续使用过程中出现各种问题。在早期的设计中,告警数据从接收到处理,再到存储,都是采用单线程或者单一进程来实现,以保证其时序性。随着告警设备的不断增容扩大,数据量也越来越多,这种单一处理模式不能够满足现在系统的性能要求。带来的影响也越来越大。
现有的时序数据入库技术,大都采用单一进程处理。从MQ(消息队列)接收XML类型告警数据,通过对XML解析生成Key-Value键值对数据,存储到MAP缓存中。根据业务需要循环读取该MAP进行业务处理,然后根据处理的情况,将MAP数据组装成ODBC(开放数据库互连)可执行的SQL进行数据封装,调用DB驱动进行数据入库操作。
针对这种单一进程进行处理时序数据入库的技术,处理数据的能力极其低下。不能满足日益增长的数据量处理要求,随着数据量的迅速增大,其缺陷也越来越明显,首先单线程或单进程的处理方式造成数据入库效率低下,告警数量大时单线程或进程效率差导致数据堆积影响系统运转,波及其他业务受损;其次频繁操作数据库造成DB交互频繁,进而造成操作系统的I/O持续消耗;由于占用MAP内存,回收不及时导致操作系统消耗过大,基于上述原因采用单一进程对时序数据进行入库操作时,数据量越大效率越低,会对承载系统造成直接或间接的影响。
综上所述,能够高效完成时序数据入库的技术亟待出现。
发明内容
本发明提供一种时序数据并发入库的方法,所述方法包括:
获取所述时序数据中同类型数据的唯一标识,预设数据处理器数量,根据所述数据处理器数量和所述同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号;
创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度;
所述各数据处理器接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中;
当所述队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
优选的,所述方法还包括:
所述数据库接口完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
具体的,
将时序数据特征属性的名称进行组合计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识;
对所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
优选的:
配置预装载数组对象,绑定所述队列数组的数组名称、数组下标和数据类型;
所述数据库接口通过所述预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
优选的:
设置所述队列数组定时监控时间,对所述队列数组进行监控;
若所述队列数组在所述设置的监控时间内仍未达到设定深度,则触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
具体的:
所述数据库接口为ODBC的BULK接口,根据所述队列深度设定所述BULK接口的批量提交数量参数。
优选的:
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9;
所述接收的时序数据为Protobuf时序数据。
本发明还公开了时序数据并发入库的装置,所述装置包括:
唯一标识获取单元,用于获取所述时序数据中同类型数据的唯一标识;
数据处理器调度单元,用于根据预设数据处理器数量调度相应数量的数据处理器,并根据所述数据处理器数量和所述唯一标识获取单元获取的同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号;
数据存储单元,用于创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度;
数据处理器,用于接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中;
数据入库单元,当所述数据存储单元队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
优选的,所述装置还包括:
数据清除单元,用于当所述数据入库单元完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
唯一标识获取单元获取所述时序数据中同类型数据的唯一标识的方法具体为:
将时序数据特征属性的名称进行组合计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识。
具体的,所述数据处理器调度单元进一步包括:
数据处理器数量调度模块,用于根据预设数据处理器数量调度相应数量的数据处理器;
数据处理器名称序号确定模块,用于对所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
优选的,所述装置还包括:
数据预装载单元,用于配置预装载数组对象,绑定所述数据存储单元的队列数组的数组名称、数组下标和数据类型;
所述数据入库单元通过所述数据预装载单元预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
优选的,所述装置还包括:
定时监控单元,用于设置所述数据存储单元队列数组的定时监控时间,对所述队列数组进行监控;若所述队列数组在所述设置的监控时间内仍未达到设定深度,则触发数据入库单元获取所述队列数组中的所有数据并进行入库操作。
具体的:
所述数据库入库单元采用ODBC的BULK接口,根据所述队列深度设定所述BULK接口的批量提交数量参数。
优选的:
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9;
所述接收的时序数据为Protobuf时序数据。
本发明通过时序数据中的同类型数据的唯一标识,在大量的时序数据中找到相同类型的数据,将这些同类型数据顺序进入相同的数据处理器进行处理,在数据接收的初期实现了数据的多线程并发处理,较以往的单线程处理提高了效率;创建队列数组,每个数组位置均为一个队列,将经过数据处理器解析处理过的时序数据顺序存入与数据处理器名称序号相应的数组存储空间,保证了同类型数据在存储时的时序性;配置预装载数组对象,使得在进行入库操作时直接在数组下标相应的位置获取所有数据,较多次复制数据的方式来说处理速度更快;优选的使用了ODBC的BULK接口,进一步提高了效率,因此本发明提供了时序数据并发入库的技术,达到了时序数据高效率入库的效果。
附图说明
图1为本发明实施例一提供的时序数据并发入库的方法流程示意图;
图2为本发明实施例二提供的方法流程示意图;
图3为本发明实施例三提供的方法流程示意图;
图4为本发明实施例四提供的时序数据并发入库的装置结构示意图;
图5为本发明实施例五提供的结构示意图。
具体实施方式
以下将配合图式及实施例来详细说明本发明的实施方式,藉此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
下面如图1所示,给出本发明的实施例一阐述时序数据并发入库的方法,如所述方法包括:
步骤S101:获取所述时序数据中同类型数据的唯一标识,预设数据处理器数量,根据所述数据处理器数量和所述同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号。
时序数据中包含有不同类型的数据,也可以理解为不同设备产生的数据,可通过唯一标识的方式区分这些不同类型的数据。可有多种方式确定不同类型数据的唯一标识,只要保证数据类型的标识唯一不重复即可。
数据处理器的数量可以进行预先设定,设定的方式有多种,可根据实际应用中数据处理器的具体配置进行设定,也可根据数据类型的数量进行设定,同时确定数据处理器与数据类型的对应关系。通过不同数据类型的唯一标识来确定与其对应的数据处理器名称序号的方式非常便利的关联了数据处理器和时序数据类型。
通过多个数据处理器的设定,且每个数据处理器处理与其相应的类型的时序数据,在数据处理的初级阶段就将时序数据进行分散并行处理,提高了处理的效率,由于时序数据进入数据处理器时保持了其固有的时序性,因此处理输出时也仍然保证了时序数据的时序性。
步骤S102:创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度。
队列数组即存储队列的数组,该数组的每一个存储位置,均存放着一个队列。
设定数据处理器的名称序号与数组下标相一致,即数据处理器处理过的数据存放在与其名称序号相应数组下标的队列中。
可根据数据处理器的数量设定数组长度,数组长度应大于等于数据处理器的数量,保证每个数据处理器处理的数据都有一个存储位置。
可根据应用的实际情况设定队列深度,以保证最优化的处理和存储。
步骤S103:所述各数据处理器接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中。
上述步骤中已确定数据处理器与数据类型的关系,数据处理器则根据这种关系,接收与其数据类型一致的书序数据,通过数据解析获取时序数据中的各属性和值。
上述步骤中已创建队列数组,每个数据处理器在队列数组中均有与其对应的存储位置,因此将这些解析好的属性和值依次存储队列数组相应下标的存储位置中即可。
步骤S104:当所述队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
上述步骤中设定了队列深度,当队列数组中的队列达到了这个值时,即可以触发开始执行入库操作。
数据库接口可以分组、批次和绑定的方式操作数据库,执行数据入库操作。
为了使得完成一次数据入库操作后,能够接纳新的数据,继续执行新的数据入库操作,本发明优选的包括步骤S105。
步骤S105:所述数据库接口完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
在完成数据入库操作后,这些数据可以清除,以接纳新的时序数据完成入库操作。
为了更好的阐述本发明各个步骤,下面给出本发明的实施例二,如图2所示:
步骤S201:将时序数据特征属性的名称进行组合计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识。
消息摘要码为MD5码,是根据公开的MD5算法对原信息进行数学变换后得到的一个128位(bit)的特征码,只要信息不同其MD5码必然不相同。
在此计算MD5码的方法是可以根据时序数据的特征属性名称组合计算,以告警数据为例,将告警属性中的发生时间、发生类型、告警级别设定为相同特征值数据,将这些数据进行组合,计算其MD5码。也可以根据实际情况采用更多的属性进行组合计算MD5码。
步骤S202:预设数据处理器数量,对所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
该步骤即根据各类型数据的唯一标识码获得与其对应的数据处理器名称序号的方法。
例如预设数据处理器数量为4,则对各类型数据的唯一标识码取模,模数为4,余数分别为0、1、2、3,采用0、1、2、3作为与各类型数据对应的数据处理器名称序号。
步骤S203:创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度。
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9,分别对应于0~9号数据处理器,依次存储由0~9数据处理器处理后的时序数据。
步骤S204:设置所述队列数组定时监控时间,对所述队列数组进行监控。
时序数据的产生在有些时候并不确定,可能很短时间内产生很多,也可能在很长时间内都没有产生,因此优选的可以对队列数组设定定时监控时间,以便实现根据时间触发执行入库操作,避免延误了现有数据的入库时间。
步骤S205:配置预装载数组对象,绑定所述队列数组的数组名称、数组下标和数据类型。
预装载数组对象是一个伪SQL,绑定了队列数组的数组名称、下标和数据类型,数据库接口通过所述预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
通过使用预装载数组对象,当前期数据处理器处理时序数据完成后,存储到队列数组中的数据,就以地址的方式被sql绑定对象获取,无须反复copy数据,执行入库动作。
步骤S206:根据所述队列深度设定ODBC的BULK接口的批量提交数量参数。
ODBC的BULK接口是一种数据库接口,采用ODBC的BULK接口进行批量入库,需要设定其批量提交数量,一般情况下根据队列深度设定其批量提交数量参数保证该队列的中的数据可以进行批量操作。
步骤S207:所述各数据处理器接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中。
接收的时序数据可以为XML时序数据和Protobuf时序数据,这两种数据的区别在于,如果为XML时序数据需要将其解析成Key_Value形式后进行存储和后续读取数据的操作;而Protobuf时序数据直接即为Key_Value形式,较XML时序数据具有一定的优势。
因此优选的接收到时序数据,是经过GoogleProtobuf技术进行压缩和序列化的二进制数据文件,这一特点解决了告警数据在传输过程中的性能消耗。同时Protobuf技术也是一种Key_Value的存储结构,对数据的规范化具有较强的梳理作用。
步骤S208:判断队列数组中的队列是否达到定时监控时间,如果未达到,则进入步骤S209,如果已达到则进入步骤S210。
步骤S209:判断队列数组中的队列是否达到设定深度,如果未达到则返回步骤S207,如果已达到则进入步骤S210。
步骤S208和步骤S209是通过两个条件检测是否触发入库操作,即定时监控时间和队列深度,解决了时序数据产生缓慢,达到设定的队列深度需要较长时间,使得队列中的数据无法及时入库的问题。
步骤S210:触发BULK接口调用预装载数组对象绑定的数组下标,获取队列数组相应下标存储位置中的所有数据,并对这些数据执行入库操作。
通过预装载数组对象,实现各自数据处理器完成的队列数据,以数组地址方式进行传递,这里就省去了大量的数据copy占用的系统资源和时间。触发入库操作时,是采用ODBC的bulkinsert技术,启动ODBC驱动进行数据入库。
步骤S211:所述数据库接口完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
本发明通过时序数据中的同类型数据的唯一标识,在大量的时序数据中找到相同类型的数据,将这些同类型数据顺序进入相同的数据处理器进行处理,在数据接收的初期实现了数据的多线程并发处理,较以往的单线程处理提高了效率;创建队列数组,每个数组位置均为一个队列,将经过数据处理器解析处理过的时序数据顺序存入与数据处理器名称序号相应的数组存储空间,保证了同类型数据在存储时的时序性;配置预装载数组对象,使得在进行入库操作时直接在数组下标相应的位置获取所有数据,较多次复制数据的方式来说处理速度更快;优选的使用了ODBC的BULK接口,进一步提高了效率,因此本发明提供了时序数据并发入库的技术,达到了时序数据高效率高准确性入库的效果。
为了更好的说明本发明实现时序数据并发入库的过程,以时序数据中的告警数据为例,出本发明的实施例三,如图3所示:
在进行接收告警数据并发入库之前,将进行预先的配置和设置。
预先获得各类告警数据的CFP值(即时序数据的唯一标识);
预先创建queue队列数组,初始化创建数组容量为10,下标为0~9,初始化数组每个存储队列的深度为1200条数据对象,初始化该队列数组的定时监控时间为5s;
设定处理线程的数量为4;
初始化伪SQL参数绑定,绑定的参数为一个数组对象,与队列数组相应,绑定的参数包括数组名称、数组下标、数据类型等;
预先设置ODBC的BULK接口批量提交数量为1200条数据对象。
完成上述设置后,开始接受告警数据并对其进行入库操作。
截取XML告警的一部分:
若为Googleprotobuf告警,形式会有所不同。如下所示:
province_name=1;
city_name=2;
alarm_source=3;
vendor_id=4;
sys_vendor_id=5;
eqp_version=6;
eqp_label=7;
eqp_alias=8;
eqp_object_class=9;
resource_status=12;
alarm_resource_status=14;
locate_info=15;
ne_label=16;
ne_alias=17;
………………
步骤S301:获取当前告警数据的CFP值,将CFP值切割成4部分,赋予CFP0~3,取CFP0作为操作的对象。
A类告警cfp0='1510484785';
B类告警cfp0=……………;
C类告警cfp0=……………;
D类告警cfp0=……………;
考虑到CFP值为过长不好保存,可将CFP值进行切割,切割的长度可根据实际情况设定,由于CFP值不同,保证切割后也是唯一的,根据切割后的CFP值进行后续操作也是相同的。
步骤S302:对各CFP0的值取模,模数为设定的处理线程数量4,获得余数作为处理线程的ID号。
对A类告警CFP0='1510484785'取模,模数为4,其余数为1,则确定处理该类告警的处理线程ID号为1。
对B类告警CFP0=……………取模,模数为4,其余数为0,则确定处理该类告警的处理线程ID号为0。
对C类告警CFP0=……………取模,模数为4,其余数为2,则确定处理该类告警的处理线程ID号为2。
对D类告警CFP0=……………取模,模数为4,其余数为3,则确定处理该类告警的处理线程ID号为3。
步骤S303:启动处理线程对告警进行处理,解析获得告警的属性和值,将解析获得的属性和值依次放入队列数组下标相应的存储位置。
启动0、1、2、3这4个线程(数据处理器)分别对B类、A类、C类、D类告警进行处理。
将上述A类告警中的属性和值依次存储队列数组下标为1的存储位置中。
例如:
omc_id='30002'
omc_alarm_id='14169222'
probable_cause='UNIDENTIFIED'
probable_cause_txt='lossofCESFrame(LCF)'
locate_info=″related_tkgp='0'
………………
将上述B类告警中的属性和值依次存储队列数组下标为0的存储位置中。
将上述C类告警中的属性和值依次存储队列数组下标为2的存储位置中。
将上述D类告警中的属性和值依次存储队列数组下标为3的存储位置中。
上述步骤在执行过程中,可以不间断接收告警数据,通过CFP取模计算获得处理各告警数据的线程id,将众多告警数据散列,通过多条线程同时执行操作,向队列数组中存入数据对象。
步骤S304:判断是否达到设定的定时监控时间为5s,判定结果为未达到则进入步骤S305,达到定时监控时间进入步骤S306。
步骤S305:判断是否达到设定的队列深度1200条数据对象,判定结果为未达到则返回步骤S303,达到定时监控时间进入步骤S306。
若步骤S304和步骤S305的判断条件均不满足,则不对队列数组中的数据对象执行入库操作,若满足步骤S304和S305中的条件则进入S306的入库步骤。
步骤S306:ODBC的BULK接口通过预先配置的伪SQL,到SQL中所绑定的队列数组相应位置直接获取所有的数据对象。
步骤S307:ODBC的BULK接口对获取的所有数据对象执行入库操作。
步骤S308:所述数据库接口完成所述数据入库操作后,清除所述队列数组中的所有数据。
本发明还提供时序数据并发入库装置用以实现时序数据并发入库方法,下面给出本发明的实施例四用以说明所述装置的具体结构,如图4所示。
时序数据并发入库装置包括:
唯一标识获取单元1,用于获取所述时序数据中同类型数据的唯一标识。
时序数据中包含有不同类型的数据,也可以理解为不同设备产生的数据,可通过唯一标识的方式区分这些不同类型的数据。可有多种方式确定不同类型数据的唯一标识,只要保证数据类型的标识唯一不重复即可。
数据处理器调度单元2,用于根据预设数据处理器数量调度相应数量的数据处理器,并根据所述数据处理器数量和所述唯一标识获取单元获取的同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号。
通过多个数据处理器的设定,且每个数据处理器处理与其相应的类型的时序数据,在数据处理的初级阶段就将时序数据进行分散并行处理,由于时序数据进入数据处理器时保持了其固有的时序性,因此处理输出时也仍然保证了时序数据的时序性。
数据存储单元3,用于创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度。
队列数组即存储队列的数组,该数组的每一个存储位置,均存放着一个队列。
设定数据处理器的名称序号与数组下标相一致,即数据处理器处理过的数据存放在与其名称序号相应数组下标的队列中。
可根据数据处理器的数量设定数组长度,数组长度应大于等于数据处理器的数量,保证每个数据处理器处理的数据都有一个存储位置。
可根据应用的实际情况设定队列深度,以保证最优化的处理和存储。
数据处理器4,用于接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中。
由于数据处理器调度单元2已确定数据处理器与数据类型的关系,数据处理器则根据这种关系,接收与其数据类型一致的书序数据,通过数据解析获取时序数据中的各属性和值。
由于数据存储单元3已创建队列数组,每个数据处理器在队列数组中均有与其对应的存储位置,因此将这些解析好的属性和值依次存储队列数组相应下标的存储位置中即可。
数据入库单元5,当所述数据存储单元队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
设定了队列深度,当队列数组中的队列达到了这个值时,即可以触发开始执行入库操作。
数据库接口可以分组、批次和绑定的方式操作数据库,执行数据入库操作。
本装置的工作原理为:
数据处理器调度单元2根据唯一标识获取单元1获取的不同类型时序数据的唯一标识,结合预设数据处理器数量,给数据处理器4赋予名称序号并根据不同的时序数据类型对数据处理器4进行调度;数据处理器4接受调度后接纳时序数据进行处理,将处理的结果存入数据存储单元3中队列数组中与其名称序号相应的下标位置;当数据存储单元3以达到设定的队列深度时,则数据入库单元5触发数据库接口对数据存储单元3中的数据进行入库操作。
本发明将时序数据按照类型进行区分,将每种类型的时序数据交给与其对应的数据处理器进行处理,这些数据处理器可以同时并行处理更多的数据,而时序数据在进入数据处理器时保持了一定的时序性,经过处理后以队列的方式进行存储,亦保持其原有的时序性,因此是效率很高的时序数据并行处理装置。
为了详细说明时序数据并发入库装置各模块的具体结构,下面给出本发明的实施例五,如图5所示。
唯一标识获取单元1,用于获取所述时序数据中同类型数据的唯一标识。
唯一标识获取单元获取所述时序数据中同类型数据的唯一标识的方法具体为:
将时序数据特征属性的名称进行组合计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识。
数据处理器调度单元2进一步包括:
数据处理器数量调度模块21,用于根据预设数据处理器数量调度相应数量的数据处理器。
数据处理器名称序号确定模块22,用于根据所述唯一标识获取单元1获取的所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
数据存储单元3,用于创建下标与所述数据处理器名称序号确定模块22确定的数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度。
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9。
数据处理器4,用于接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中。
所述接收的时序数据为Protobuf时序数据。
数据入库单元5,当所述数据存储单元3队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
所述数据库入库单元采用ODBC的BULK接口,根据所述队列深度设定所述BULK接口的批量提交数量参数。
数据预装载单元6,用于配置预装载数组对象,绑定所述数据存储单元的队列数组的数组名称、数组下标和数据类型;
所述数据入库单元通过所述数据预装载单元预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
预装载数组对象是一个伪SQL,绑定了队列数组的数组名称、下标和数据类型,数据库接口通过所述预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
通过使用预装载数组对象,当前期数据处理器处理时序数据完成后,存储到队列数组中的数据,就以地址的方式被sql绑定对象获取,无须反复copy数据,执行入库动作。
定时监控单元7,用于设置所述数据存储单元队列数组的定时监控时间,对所述队列数组进行监控;若所述队列数组在所述设置的监控时间内仍未达到设定深度,则触发数据入库单元获取所述队列数组中的所有数据并进行入库操作
数据清除单元8,用于当所述数据入库单元完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
优选的装置中增加了数据预装载单元6、定时监控单元7、数据清除单元8,通过这三个单元更进一步的优化装置,数据预装载单元6使得在数据入库时能够完成批量入库,而不需要频繁反复执行数据copy操作;定时监控单元7是增加了入库操作的触发条件,即定时监控时间和队列深度,解决了时序数据产生缓慢,达到设定的队列深度需要较长时间,使得队列中的数据无法及时入库的问题;数据清除单元8在完成一次入库操作时清空所有相关数据,准备足够的空间接纳新的时序数据。
因此通过本发明提供的时序数据并发入库的装置,可实现时序数据高效、准确的入库。
本发明方法部分与装置部分的原理相似,在方法部分已进行了详细的说明,装置中各部分的工作原理和对应的实际应用举例在方法部分均已描写,不再赘述。
虽然本发明所揭露的实施方式如上,然而所述的内容并非用以直接限定本发明的保护范围。任何本发明所属技术领域中技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作些许的更动。本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (15)
1.时序数据并发入库的方法,其特征在于,所述方法包括:
获取所述时序数据中同类型数据的唯一标识,预设数据处理器数量,根据所述数据处理器数量和所述同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号;
创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度;
所述各数据处理器接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中;
当所述队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据库接口完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
3.根据权利要求1或2所述的方法,其特征在于:
将时序数据特征属性的名称进行组合,计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识;
对所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
4.根据权利要求3所述的方法,其特征在于:
配置预装载数组对象,绑定所述队列数组的数组名称、数组下标和数据类型;
所述数据库接口通过所述预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
5.根据权利要求4所述的方法,其特征在于:
设置所述队列数组定时监控时间,对所述队列数组进行监控;
若所述队列数组在所述设置的监控时间内仍未达到设定深度,则触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
6.根据权利要求5所述的方法,其特征在于:
所述数据库接口为ODBC的BULK接口,根据所述队列深度设定所述BULK接口的批量提交数量参数。
7.根据权利要求6所述的方法,其特征在于:
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9;
所述接收的时序数据为Protobuf时序数据。
8.时序数据并发入库的装置,其特征在于,所述装置包括:
唯一标识获取单元,用于获取所述时序数据中同类型数据的唯一标识;
数据处理器调度单元,用于根据预设数据处理器数量调度相应数量的数据处理器,并根据所述数据处理器数量和所述唯一标识获取单元获取的同类型数据唯一标识确定与该类型数据对应的所述数据处理器的名称序号;
数据存储单元,用于创建下标与所述数据处理器名称序号相应的队列数组存储空间,分别设定队列深度与数组长度;
数据处理器,用于接收与其数据类型一致的时序数据,解析获取所述时序数据中的各属性和值,并将所述属性和值依次存入所述队列数组相应下标的存储位置中;
数据入库单元,当所述数据存储单元队列数组中的队列达到设定深度时,触发数据库接口获取所述队列数组中的所有数据并进行入库操作。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
数据清除单元,用于当所述数据入库单元完成所述数据入库操作后,清除所述队列数组中的所有数据,清除所述数据处理器的名称序号。
10.根据权利要求9所述的装置,其特征在于,唯一标识获取单元获取所述时序数据中同类型数据的唯一标识的方法具体为:
将时序数据特征属性的名称进行组合计算其消息摘要码,所述消息摘要码相同的时序数据为同类型数据,所述消息摘要码为同类型数据的唯一标识。
11.根据权利要求10所述的装置,其特征在于,所述数据处理器调度单元进一步包括:
数据处理器数量调度模块,用于根据预设数据处理器数量调度相应数量的数据处理器;
数据处理器名称序号确定模块,用于对所述各类型数据消息摘要码取模,模数为所述数据处理器数量,取模的余数做为各类型数据对应的数据处理器名称序号。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
数据预装载单元,用于配置预装载数组对象,绑定所述数据存储单元的队列数组的数组名称、数组下标和数据类型;
所述数据入库单元通过所述数据预装载单元预装载数组对象绑定的数组下标,直接获取所述队列数组相应下标存储位置中的所有数据。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
定时监控单元,用于设置所述数据存储单元队列数组的定时监控时间,对所述队列数组进行监控;若所述队列数组在所述设置的监控时间内仍未达到设定深度,则触发数据入库单元获取所述队列数组中的所有数据并进行入库操作。
14.根据权利要求13所述的装置,其特征在于:
所述数据库入库单元采用ODBC的BULK接口,根据所述队列深度设定所述BULK接口的批量提交数量参数。
15.根据权利要求14所述的装置,其特征在于:
将所述队列数组中队列的深度设定为存储1200条数据对象,将所述队列数组的长度设定为10,数组下标为0~9;
所述接收的时序数据为Protobuf时序数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410828696.7A CN105786917B (zh) | 2014-12-26 | 2014-12-26 | 时序数据并发入库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410828696.7A CN105786917B (zh) | 2014-12-26 | 2014-12-26 | 时序数据并发入库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105786917A true CN105786917A (zh) | 2016-07-20 |
CN105786917B CN105786917B (zh) | 2020-01-14 |
Family
ID=56388602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410828696.7A Active CN105786917B (zh) | 2014-12-26 | 2014-12-26 | 时序数据并发入库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105786917B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107612761A (zh) * | 2017-11-06 | 2018-01-19 | 成都西加云杉科技有限公司 | 网络设备告警方法及告警管理装置 |
CN107766408A (zh) * | 2017-08-31 | 2018-03-06 | 西安交大捷普网络科技有限公司 | 审计日志的存储方法 |
CN111013133A (zh) * | 2019-11-29 | 2020-04-17 | 北京奇艺世纪科技有限公司 | 数据处理方法及装置 |
CN112347062A (zh) * | 2019-08-07 | 2021-02-09 | 中国石油化工股份有限公司 | 一种实现地震数据共享的方法及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515291A (zh) * | 2009-03-26 | 2009-08-26 | 北京泰合佳通信息技术有限公司 | 一种将数据批量导入数据库的方法及系统 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
CN103281383A (zh) * | 2013-05-31 | 2013-09-04 | 重庆大学 | 一种面向分布式数据源的时序信息记录方法 |
-
2014
- 2014-12-26 CN CN201410828696.7A patent/CN105786917B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515291A (zh) * | 2009-03-26 | 2009-08-26 | 北京泰合佳通信息技术有限公司 | 一种将数据批量导入数据库的方法及系统 |
CN102566979A (zh) * | 2011-12-02 | 2012-07-11 | 华为技术有限公司 | 实现自适应锁的方法和装置以及多核处理器系统 |
CN103281383A (zh) * | 2013-05-31 | 2013-09-04 | 重庆大学 | 一种面向分布式数据源的时序信息记录方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766408A (zh) * | 2017-08-31 | 2018-03-06 | 西安交大捷普网络科技有限公司 | 审计日志的存储方法 |
CN107612761A (zh) * | 2017-11-06 | 2018-01-19 | 成都西加云杉科技有限公司 | 网络设备告警方法及告警管理装置 |
CN112347062A (zh) * | 2019-08-07 | 2021-02-09 | 中国石油化工股份有限公司 | 一种实现地震数据共享的方法及存储介质 |
CN111013133A (zh) * | 2019-11-29 | 2020-04-17 | 北京奇艺世纪科技有限公司 | 数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105786917B (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2581560C2 (ru) | Способ сканирования файлов, клиентский компьютер и сервер | |
US9710503B2 (en) | Tunable hardware sort engine for performing composite sorting algorithms | |
CN105786917A (zh) | 时序数据并发入库的方法和装置 | |
CN110069557B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN109828790B (zh) | 一种基于申威异构众核处理器的数据处理方法和系统 | |
JP2006260056A (ja) | 統合運用管理サーバ、統合的な運用管理のためのメッセージの抽出方法、及び、プログラム | |
CN113612705A (zh) | 基于哈希算法分片及重组的电网监控系统数据传输方法 | |
CN102385536A (zh) | 一种实现并行计算的方法及系统 | |
CN114244536A (zh) | 一种区块链的业务处理方法、装置、设备及存储介质 | |
CN110851419B (zh) | 一种数据迁移的方法和装置 | |
US20160203032A1 (en) | Series data parallel analysis infrastructure and parallel distributed processing method therefor | |
CN112559482B (zh) | 一种基于分布式的二进制数据分类处理方法和系统 | |
CN110442439B (zh) | 任务进程处理方法、装置和计算机设备 | |
CN110753090A (zh) | 服务器集群的任务执行方法、装置、计算机设备及存储介质 | |
CN111061557B (zh) | 均衡分布式内存数据库负载的方法和装置 | |
CN114003351A (zh) | 一种数据处理方法及装置、存储介质 | |
CN111708618A (zh) | 一种基于Java多线程的处理方法和装置 | |
CN109558222A (zh) | 批量业务进程监控方法、装置、计算机及可读存储介质 | |
CN114116710A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN113326311A (zh) | 一种数据转换方法及装置 | |
CN106528577B (zh) | 一种设置待清理文件的方法和装置 | |
US20160253287A1 (en) | Information processing device, information processing method, and recording medium | |
CN112181618A (zh) | 数据传输方法、装置、计算机设备及存储介质 | |
CN117216011B (zh) | 文件传输方法、装置及电子设备 | |
CN110213314B (zh) | 确定存储节点的方法、装置、服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |