CN108073652A - 一种事件分组优化存储方法 - Google Patents
一种事件分组优化存储方法 Download PDFInfo
- Publication number
- CN108073652A CN108073652A CN201611030439.4A CN201611030439A CN108073652A CN 108073652 A CN108073652 A CN 108073652A CN 201611030439 A CN201611030439 A CN 201611030439A CN 108073652 A CN108073652 A CN 108073652A
- Authority
- CN
- China
- Prior art keywords
- record
- queue
- event
- log table
- unused
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种事件分组优化存储方法:1、在实时数据库中创建事件记录表;2、读取事件记录表,进行数据初始化;3、当有新事件发生时,判断事件所属对象的未用记录ID队列是否为空:若为空,则:1)获取该对象已用记录ID队列中的第一个ID号,在事件记录表中删除该ID号对应的事件;2)将该ID号从已用记录ID队列删除,并添加至对象对应的未用记录ID队列中;3)将该对象未用记录ID队列中的第一个记录ID号作为新事件的记录ID,并添加新事件至事件记录表;4)添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉。依照事件所属对象进行分组优化,节省了数据存储空间,提高了事件查询的效率。
Description
技术领域
本发明涉及一种事件分组优化存储方法。
背景技术
事件存储是实时数据库存储的一项重要内容,被用于电网运行监控、能源管控和工业监控等领域,事件存储于事件记录表中,方便其他应用实时查询与展示。目前的实时数据库产品,事件记录表仅支持记录总数目的控制,并不能依照事件所属对象在表中实现分组记录数目的控制,且部分实时库产品对事件记录的管理尚不支持记录ID的动态分配,当添加事件至事件记录表时,由于缺少统一管理,常出现因ID不唯一而无法入库的问题。
近年来随着实时数据库在各领域应用需求的不断增加,事件实时查询需求也逐步多样化,部分业务应用要求事件查询时每个对象仅提供最近发生的事件记录,且事件记录的数目不超过某一预设限值。很显然,现有设计无法满足上述需求。
发明内容
针对上述问题,本发明提供一种事件分组优化存储方法,结合事件实时查询需求,依照事件所属对象进行分组优化,控制事件在实时库中存储的数目,节省了数据存储空间,提高了事件查询的效率。
为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
一种事件分组优化存储方法,其特征在于,包括如下步骤:
步骤1、在实时数据库中创建事件记录表,事件记录ID作为唯一标识,根据事件记录表的对象数目和每个对象下记录数目的预设限值,分配事件记录表的存储空间;
步骤2、读取事件记录表,进行数据初始化,建立每个对象对应的未用记录ID队列和已用记录ID队列;
步骤3、当有新事件发生时,判断事件所属对象的未用记录ID队列是否为空:
若不为空:则采用未用记录ID队列的第一个ID号作为新事件的记录ID,并添加新事件至事件记录表,添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉;
若为空,则:
1)获取该对象已用记录ID队列中的第一个ID号,在事件记录表中删除该ID号对应的事件;
2)将该ID号从已用记录ID队列删除,并添加至对象对应的未用记录ID队列中;
3)将该对象未用记录ID队列中的第一个记录ID号作为新事件的记录ID,并添加新事件至事件记录表;
4)添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉。
优选,事件记录表包括事件记录ID、对象名称、事件发生时间、事件内容和备用列。
优选,步骤2中,数据初始化包括如下步骤:
(21)根据事件记录表对象数目和每个对象下记录数目的预设限值,预先分配对象_未用记录ID映射,每个对象对应一个未用记录ID队列;
(22)读取记录表中事件记录ID、对象名称、事件发生时间三列信息,建立对象_已用记录ID映射,每个对象对应一个已用记录ID队列,事件记录ID按照事件发生时间顺序存入已用记录ID队列;
(23)将每个对象已使用过的记录ID号从未用记录ID队列中删除。
本发明的有益效果是:
(1)通过多队列和组映射模型,保证了事件记录ID的唯一性,进而实现事件在实时库的可靠存储。
(2)依照事件所属对象进行分组优化,控制事件在实时库中存储的数目,节省了数据存储空间,提高了事件查询的效率。
(3)有新的事件发生时,以所属对象下记录数目不超过预设限值为前提,动态分配新事件的记录ID并管理事件的存储。
附图说明
图1是本发明一种事件分组优化存储方法的整体流程图;
图2是本发明事件记录表的示意图;
图3是本发明多队列和多映射模型的示意图;
图4是本发明ID动态分配和事件存储管理流程图;
图5是本发明ID动态分配时模型交互示意。
具体实施方式
下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
一种事件分组优化存储方法,如图1所示,包括如下步骤:
步骤1、在实时数据库中创建事件记录表,事件记录ID作为唯一标识,根据事件记录表的对象数目和每个对象下记录数目的预设限值,分配事件记录表的存储空间。
如图2所示,事件记录表包括事件记录ID、对象名称、事件发生时间、事件内容和备用等列,其中事件记录ID作为唯一标识。根据各列类型定义可得单条事件记录的大小为204个字节,设定事件记录表中对象数目的限值为M个,每个对象下记录数目的限值为N个,则该表最多存储事件记录的数目为M×N个,则分配事件记录表的存储空间为204×M×N个字节。
步骤2、读取事件记录表,进行数据初始化,建立每个对象对应的未用记录ID队列和已用记录ID队列。
数据初始化包括多队列和多映射模型,如图3所示,本步骤定义了对象_未用记录ID映射和对象_已用记录ID映射,数据初始化的步骤为:
(21)根据事件记录表对象数目和每个对象下记录数目的预设限值,预先分配对象_未用记录ID映射,每个对象对应一个未用记录ID队列。
设定对象数目的限值为M个,每个对象下记录事件数目的限值为N个,记录表中记录ID号范围为[0,M×N),那么第x个对象的记录ID号的范围为[(x-1)×N,x×N),初始化时,将范围内的N个ID号存入该对象对应的未用记录ID队列。
(22)读取记录表中事件记录ID、对象名称、事件发生时间三列信息,建立对象_已用记录ID映射,每个对象对应一个已用记录ID队列,事件记录ID按照事件发生时间顺序存入已用记录ID队列,初始化时,已用记录ID队列为空。
(23)将每个对象已使用过的记录ID号从未用记录ID队列中删除,初始化时,此步骤一般不需要。
步骤3、当有新事件发生时,如图4所示,以所属对象下记录数目不超过预设限值为前提,动态分配新事件的记录ID并管理事件的存储。具体为:
判断事件所属对象的未用记录ID队列是否为空(也即新事件所属对象下记录数目是否已达到预设限值):
若不为空:则采用未用记录ID队列的第一个ID号作为新事件的记录ID,并添加新事件至事件记录表,添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉;
若为空,则:
1)获取该对象已用记录ID队列中的第一个ID号,在事件记录表中删除该ID号对应的事件;
2)将该ID号从已用记录ID队列删除,并添加至对象对应的未用记录ID队列中;
3)将该对象未用记录ID队列中的第一个记录ID号作为新事件的记录ID,并添加新事件至事件记录表;
4)添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉。
如图5所示,ID动态分配时,事件记录表删除记录时,已用记录ID队列头部ID号出队列,入未用记录ID队列尾部;记录表增加记录时,未用记录ID队列头部ID出队列,入已用记录ID队列尾部。
本发明的有益效果是:
(1)通过多队列和组映射模型,保证了事件记录ID的唯一性,进而实现事件在实时库的可靠存储。
(2)依照事件所属对象进行分组优化,控制事件在实时库中存储的数目,节省了数据存储空间,提高了事件查询的效率。
(3)有新的事件发生时,以所属对象下记录数目不超过预设限值为前提,动态分配新事件的记录ID并管理事件的存储。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (3)
1.一种事件分组优化存储方法,其特征在于,包括如下步骤:
步骤1、在实时数据库中创建事件记录表,事件记录ID作为唯一标识,根据事件记录表的对象数目和每个对象下记录数目的预设限值,分配事件记录表的存储空间;
步骤2、读取事件记录表,进行数据初始化,建立每个对象对应的未用记录ID队列和已用记录ID队列;
步骤3、当有新事件发生时,判断事件所属对象的未用记录ID队列是否为空:
若不为空:则采用未用记录ID队列的第一个ID号作为新事件的记录ID,并添加新事件至事件记录表,添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉;
若为空,则:
1)获取该对象已用记录ID队列中的第一个ID号,在事件记录表中删除该ID号对应的事件;
2)将该ID号从已用记录ID队列删除,并添加至对象对应的未用记录ID队列中;
3)将该对象未用记录ID队列中的第一个记录ID号作为新事件的记录ID,并添加新事件至事件记录表;
4)添加成功后,将该ID号添加至该对象已用记录ID队列中并从该对象未用记录ID队列中删掉。
2.根据权利要求1所述的一种事件分组优化存储方法,其特征在于,事件记录表包括事件记录ID、对象名称、事件发生时间、事件内容和备用列。
3.根据权利要求2所述的一种事件分组优化存储方法,其特征在于,步骤2中,数据初始化包括如下步骤:
(21)根据事件记录表对象数目和每个对象下记录数目的预设限值,预先分配对象_未用记录ID映射,每个对象对应一个未用记录ID队列;
(22)读取记录表中事件记录ID、对象名称、事件发生时间三列信息,建立对象_已用记录ID映射,每个对象对应一个已用记录ID队列,事件记录ID按照事件发生时间顺序存入已用记录ID队列;
(23)将每个对象已使用过的记录ID号从未用记录ID队列中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611030439.4A CN108073652B (zh) | 2016-11-16 | 2016-11-16 | 一种事件分组优化存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611030439.4A CN108073652B (zh) | 2016-11-16 | 2016-11-16 | 一种事件分组优化存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073652A true CN108073652A (zh) | 2018-05-25 |
CN108073652B CN108073652B (zh) | 2021-06-18 |
Family
ID=62161189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611030439.4A Active CN108073652B (zh) | 2016-11-16 | 2016-11-16 | 一种事件分组优化存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108073652B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559398A (zh) * | 2018-12-08 | 2019-04-02 | 宁波博太科智能科技有限公司 | 一种收记录处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082929A (zh) * | 2007-06-27 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种构建内存树的方法及系统 |
CN102034126A (zh) * | 2010-12-08 | 2011-04-27 | 中国科学院自动化研究所 | 面向rfid标签动态信息管理的基本事件过滤方法 |
CN102457578A (zh) * | 2011-12-16 | 2012-05-16 | 中标软件有限公司 | 一种基于事件机制的分布式网络监控方法 |
-
2016
- 2016-11-16 CN CN201611030439.4A patent/CN108073652B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101082929A (zh) * | 2007-06-27 | 2007-12-05 | 腾讯科技(深圳)有限公司 | 一种构建内存树的方法及系统 |
CN102034126A (zh) * | 2010-12-08 | 2011-04-27 | 中国科学院自动化研究所 | 面向rfid标签动态信息管理的基本事件过滤方法 |
CN102457578A (zh) * | 2011-12-16 | 2012-05-16 | 中标软件有限公司 | 一种基于事件机制的分布式网络监控方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109559398A (zh) * | 2018-12-08 | 2019-04-02 | 宁波博太科智能科技有限公司 | 一种收记录处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108073652B (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019859B (zh) | 一种对服务请求调度的方法和系统 | |
CN104978361B (zh) | 动力环境实时监控数据存储方法及装置 | |
CN103023963B (zh) | 一种用于云存储资源优化分配的方法 | |
CN101859279B (zh) | 一种内存分配、释放方法及装置 | |
CN103631873B (zh) | 一种数据压缩方法及存储系统 | |
CN106302238A (zh) | 一种队列管理方法及装置 | |
CN103617007B (zh) | 多级智能存储实现方法和系统 | |
CN106383742A (zh) | 一种基于linux的IO调度方法 | |
CN104125168A (zh) | 一种共享资源的调度方法和系统 | |
CN102946429A (zh) | 一种基于云存储的高效资源动态调度方法 | |
CN108390765B (zh) | 一种数据中心整机柜服务器的温度定位方法与装置 | |
CN106055274A (zh) | 一种数据存储方法、数据读取方法及电子设备 | |
CN108073652A (zh) | 一种事件分组优化存储方法 | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
CN202261410U (zh) | 渲染农场高性能集群系统 | |
CN108280030B (zh) | 一种寄存器地址的分配方法、系统及相关装置 | |
CN112084303B (zh) | 基于HBase的电网运行数据存储访问方法及其系统 | |
CN101587487B (zh) | 一种电网图形动态分布索引的实现方法 | |
CN102917036A (zh) | 一种基于Memcached的分布式缓存数据同步实现方法 | |
CN102103545B (zh) | 一种数据缓存的方法、装置及系统 | |
CN110286859B (zh) | 基于fat文件系统的数据存储方法及装置 | |
CN101763310B (zh) | 数据存储控制方法 | |
CN105549907A (zh) | 一种根据业务变量计算所需虚拟机磁盘iops的方法 | |
CN202367745U (zh) | 螺钉盘 | |
CN107547641A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |