CN101901261A - 一种使用类聚簇的实时数据库存储方法 - Google Patents
一种使用类聚簇的实时数据库存储方法 Download PDFInfo
- Publication number
- CN101901261A CN101901261A CN 201010235099 CN201010235099A CN101901261A CN 101901261 A CN101901261 A CN 101901261A CN 201010235099 CN201010235099 CN 201010235099 CN 201010235099 A CN201010235099 A CN 201010235099A CN 101901261 A CN101901261 A CN 101901261A
- Authority
- CN
- China
- Prior art keywords
- data
- real
- bitmap
- time
- value
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了使用类聚簇的一种支持运行式提交的实时数据库存储技术,通过在实时数据库中使用这种类似于聚簇的数据单元来存储数据,就可以实现实时数据库的运行时增量提交。由于提交时每个操作可以独立分别进行,且时间开销与实时数据访问可比,因此可以将提交的多个操作依次穿插于各个实时数据访问之间进行,而不影响实时数据库的实时访问。因为在初次提交时分配的数据空间仅仅略多于实际数据空间需求,就避免了初次提交就预先分配大量的闲置空间造成空间资源浪费。同时在提交时只有当确实需要新的数据空间或者确实有大量的数据空间不使用时才以数据单元为单位整块申请或释放空间,避免用过的空间无法重用的问题。
Description
技术领域:
本技术发明涉及工业自动化领域,尤其涉及分布式监控***领域,本技术发明可广泛适用于工业自动化领域的电网监控、电气化铁路和城市轨道交通各专业以及综合监控等应用。
背景技术:
在工业控制领域,随着自动化技术的发展,越来越多的工程应用,如工业生产、电力调度、楼宇自动化、火灾防控等,使用监控***实现过程或应用自动化。监控***应用于某一工程时,一般先依据工程应用的需求配置需要的数据结构,然后在运行时根据配置生成对应的实时数据库内的数据,并围绕实时数据库这一***核心模块,运行人机界面、报警等***的各种上层服务。但是由于工程应用的需求往往随着现实情况的变化而改变,这经常导致需要对实时数据库内的数据进行修改,例如增添没有的数据,或者删除已有的数据等等,以适应应用的需要。这种对实时数据库中的数据进行修正,使得它可以满足变化的需求的过程称为提交。
传统的监控***的实时数据库一般采用离线式提交。即首先确定所有需要进行的修改并对配置进行相应的修正,然后停止***的运行,重新根据修正后的配置生成实时数据库中的数据,然后再次运行***。这种离线式提交的方式需要在一定时间内停止***的运行,而现代工程应用更期望监控***持续运行,因此不少现代监控***的实时数据库采用运行时提交的方式。
一种运行时提交的方式是停止实时数据库的服务,根据修改过的配置重新生成实时数据库内的数据,然后再开启实时数据库的服务。采用这种方式,虽然***仍然在运行,但是在重新生成整个实时数据库的过程中,不提供实时数据服务,那么在相当长的一段时间内***失去响应,这种运行时提交的方式相比于离线提交的方式并无太多实质性改进。
另一种运行时提交的方式是在初次配置时为将来可能增加的数据预留足够的空间,当需求发生变化时,暂停实时数据库的服务,根据配置的变化对实时数据库中的数据进行修正,然后恢复实时数据库的服务。采用这种方式,由于只是对实时数据库中的数据进行修正,而非全部重新生成,也就是增量提交,而非完全提交,因此失去响应的时间要短的多。但即使如此,相对于数据的实时访问这种实时操作而言,这种时间依然过于漫长,甚至是难以接受的。更重要的是,由于提交时实时数据库中的数据修正是由工程需求变化导致的,因此难以在初次配置时预计这种变化,同时又由于各种类型数据所占的空间不同,因此在初次配置时难以准确的预留合适的数据空间,往往造成大量的额外空间浪费,降低***的时空性能。
还有一种运行时提交的方式是对实时数据库中的每一个数据独立分配空间,当提交时,因为各个数据的空间是独立的,就可以很方便的删除已有数据,并为新的数据分配空间。而且采用这种方式,可以将提交的多个操作分别穿插于各个实时数据访问之间,从而不需要暂停实时数据服务。但是在这种情况下,由于实时数据库为每一个数据独立分配空间,在组织管理上稍显困难;而且由于各种数据类型需要的空间大小不一,伴随着多次提交中增删操作的进行,在计算机内存中会产生大量无法重用的碎片,随着***的运行。空间资源的开销将不断增加,甚至耗尽从而导致***崩溃,这是难以接受的。
发明内容:
针对现有技术中存在的不足,本发明的目的是,实时数据库的提交(除初次提交外)表现出这样一些特点:
考虑到实时数据库的提交所具有的这些特点,应当在实时数据库中采用有效的存储结构,使得实时数据库在提交时尽可能满足这样一些要求:
实时数据库中的数据所需要的空间资源应当动态分配,而不是一次性分配,从而避免过多的预分配空间资源浪费。
因此这里提供一种使用类聚簇的实时数据库存储方法,从而满足实时数据库提交时的上述一些要求。
本发明采用的技术方案是:
一种使用类聚簇的实时数据库存储方法,其特征在于,它包括:
构造步骤,采用类似于数据库中聚簇的一种数据结构作为基本数据单元,每个数据单元中包含一个同种数据类型的列表,数据列表中只存放该类型数据,因此每个数据占有的空间大小是一致的,这个数据单元同时还包含一个为这个数据列表建立的位图,位图的长度等于列表中数据的个数,位图中每一位与列表中的一个数据顺序对应,表示这一数据是可使用还是已使用;位的值为0表示可使用,即可以存放新的数据;位的值为1表示已使用,即已存放数据,不可用于新数据的存放;
存储步骤,初次提交时每一种数据类型构造一个对应的数据单元,数据单元可容纳的数据数量略大于初始时需要的这种类型数据的数量,将数据置入列表,并将位图对应的位初始化;每次提交时,均对数据进行修正,当没有可重用的数据空间,需要新的数据空间时,才分配一个新的数据单元,结构和原数据单元一致,但可容纳数据数量则仅为预先指定的较小的值,并通过链表方式和原数据单元相连;
删除步骤,在实时数据库中使用所述的数据单元存储数据,当需要对其中的某个数据进行删除时,首先定位到该数据,清空数据值,但并不释放数据对应的空间,只是将数据对应的位的值设为0,表示该数据位置可使用;只有当一个数据单元内的所有数据位置都可使用,即位图的所有位都为0时,才释放整个数据单元的空间;
增添步骤,在实时数据库中使用所述的数据单元存储数据,当需要增添一个该类型数据时,首先确定数据单元内是否都是已使用的数据位置,即在数据单元的位图中是否所有位的值都为1,如果有值为0的位,那么表示该位对应的数据位置可使用,直接使用;而如果没有,即位图中的所有位的值均为1,那么新建一个数据单元,将新建数据单元的位图清0,使用第一个数据位置即可,并将对应位图的位的值置1。
相对应的,本发明还公开了一种使用类聚簇的实时数据库存储装置,它包括:
构造模块,采用类似于数据库中聚簇的一种数据结构作为基本数据单元,每个数据单元中包含一个同种数据类型的列表,数据列表中只存放该类型数据,因此每个数据占有的空间大小是一致的,这个数据单元同时还包含一个为这个数据列表建立的位图,位图的长度等于列表中数据的个数,位图中每一位与列表中的一个数据顺序对应,表示这一数据是可使用还是已使用;位的值为0表示可使用,即可以存放新的数据;位的值为1表示已使用,即已存放数据,不可用于新数据的存放;
存储模块,初次提交时每一种数据类型构造一个对应的数据单元,数据单元可容纳的数据数量略大于初始时需要的这种类型数据的数量,将数据置入列表,并将位图对应的位初始化;每次提交时,均对数据进行修正,当没有可重用的数据空间,需要新的数据空间时,才分配一个新的数据单元,结构和原数据单元一致,但可容纳数据数量则仅为预先指定的较小的值,并通过链表方式和原数据单元相连。
删除模块,在实时数据库中使用所述的数据单元存储数据,当需要对其中的某个数据进行删除时,首先定位到该数据,清空数据值,但并不释放数据对应的空间,只是将数据对应的位的值设为0,表示该数据位置可使用;只有当一个数据单元内的所有数据位置都可使用,即位图的所有位都为0时,才释放整个数据单元的空间;
增添模块,在实时数据库中使用所述的数据单元存储数据,当需要增添一个该类型数据时,首先确定数据单元内是否都是已使用的数据位置,即在数据单元的位图中是否所有位的值都为1,如果有值为0的位,那么表示该位对应的数据位置可使用,直接使用;而如果没有,即位图中的所有位的值均为1,那么新建一个数据单元,将新建数据单元的位图清0,使用第一个数据位置即可,并将对应位图的位的值置1。
本发明具有如下的有益效果:通过在实时数据库中使用这种类似于聚簇的数据单元来存储数据,可以实现实时数据库的运行时增量提交。而在提交过程中,数据的使用和弃用依靠位图的置位动作表示,一般不作空间操作,因此具有很高的性能。
下面结合附图和具体实施方式对本发明作进一步详细的说明。附图和具体实施方式并不限制本发明要求保护的范围。
附图说明
图1是本发明采用的类聚簇的基本数据单元示意图;
图2是本发明删除操作过程示意图;
图3是本发明增添操作过程示意图;
图4是本发明实时数据库存储结构示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
这种实时数据库的存储结构采用类似于数据库中聚簇的一种数据结构作为基本数据单元,也就是将同一类型的数据集中存放。具体而言,每个数据单元中包含一个同种数据类型的列表,数据列表中只存放该类型数据,因此每个数据占有的空间大小是一致的。这个数据单元同时还包含了一个为这个数据列表建立的位图,位图的长度等于列表中数据的个数,位图中每一位与列表中的一个数据顺序对应,表示这一数据是可使用还是已使用。位的值为0表示可使用,即可以存放新的数据;为1表示已使用,即已存放数据,不可用于新数据的存放。因为每个数据只用1位表示,因此增加的额外空间资源开销很小,相比于数据本身可以忽略不计。数据单元如图1所示。
在实时数据库的提交过程中对数据存储机构产生影响的操作主要为数据的删除和增添。在实时数据库中使用上述的数据单元存放数据,当需要对其中的某个数据进行删除时,首先定位到该数据,清空数据值,但并不释放数据对应的空间,只是将数据对应的位的值设为0,表示该数据位置可使用,从而避免释放单个数据空间造成小的内存碎片无法重用。只有当一个数据单元内的所有数据位置都可使用,即位图的所有位都为0时,才释放整个数据单元的空间。这一般是一块较大的内存空间,可以重用。删除操作的过程如图2所示。由于删除时只是设定位图中一位的值,而判断是否数据单元内所有数据位置都可使用时也是通过位图操作进行,因此删除操作的时间开销很小,与实时数据访问可比。当需要增添一个该类型数据时,首先确定数据单元内是否都是已使用的数据位置,即在数据单元的位图中是否所有位的值都为1,如果有值为0的位,那么表示该位对应的数据位置可使用,直接使用;而如果没有,即位图中的所有位的值均为1,那么新建一个数据单元,将新建数据单元的位图清0,使用第一个数据位置即可。因为数据单元内的数据类型是相同的,所需的空间大小是一致的,因此添加的数据可以使用找到的可使用的数据位置,并将对应位图的位的值置1。增添操作的过程如图3所示。在添加时和删除时类似,确定数据单元内是否都是已使用的数据位置,以及查找是否存在可使用的数据位置都是对位图操作,同样时间开销很小,与实时数据访问可比。
在实时数据库中使用这种数据单元来管理数据,可以在初次提交时为每一种数据类型构造一个对应的数据单元,数据单元可容纳的数据数量可以略大于初始时需要的这种类型数据的数量,将数据置入列表,并将位图对应的位初始化。每次提交时,可以采用上述方法进行数据修正,当没有可重用的数据空间,确实需要新的数据空间时,才分配一个新的数据单元,结构和原数据单元一致,但可容纳数据数量则仅为预先指定的较小的值,并通过链表方式和原数据单元相连。每当必须申请新的数据空间时就重复这过程,产生的实时数据库的存储结构如图4所示。
通过在实时数据库中使用这种类似于聚簇的数据单元来存储数据,就可以实现实时数据库的运行时增量提交。由于提交时每个操作可以独立分别进行,且时间开销与实时数据访问可比,因此可以将提交的多个操作依次穿插于各个实时数据访问之间进行,而不影响实时数据库的实时访问。因为在初次提交时分配的数据空间仅仅略多于实际数据空间需求,就避免了初次提交就预先分配大量的闲置空间造成空间资源浪费。而在提交过程中,数据的使用和弃用依靠位图的置位动作表示,一般不作空间操作,因此具有很高的性能。同时在提交时只有当确实需要新的数据空间或者确实有大量的数据空间不使用时才以数据单元为单位整块申请或释放空间,并且可以分多次申请或释放,从而可以重用已经不用的数据空间,避免用过的空间无法重用,而每次都需要使用新的空间,最终造成空间资源耗尽的问题。可以看出,如果实时数据库使用这种类似于聚簇的数据单元来存储数据,那么在提交时可以有效地满足了文中的要求。
以上已以较佳实施例公布了本发明,然其并非用以限制本发明,凡采取等同替换或等效变换的方案所获得的技术方案,均落在本发明的保护范围内。
Claims (6)
1.一种使用类聚簇的实时数据库存储方法,其特征在于,它包括:
构造步骤,采用类似于数据库中聚簇的一种数据结构作为基本数据单元,每个数据单元中包含一个同种数据类型的列表,数据列表中只存放该类型数据,因此每个数据占有的空间大小是一致的,这个数据单元同时还包含一个为这个数据列表建立的位图,位图的长度等于列表中数据的个数,位图中每一位与列表中的一个数据顺序对应,表示这一数据是可使用还是已使用;
删除步骤,在实时数据库中使用所述的数据单元存储数据,当需要对其中的某个数据进行删除时,首先定位到该数据,清空数据值,但并不释放数据对应的空间,只是将数据对应的位的值设为0,表示该数据位置可使用;只有当一个数据单元内的所有数据位置都可使用,即位图的所有位都为0时,才释放整个数据单元的空间;
增添步骤,在实时数据库中使用所述的数据单元存储数据,当需要增添一个该类型数据时,首先确定数据单元内是否都是已使用的数据位置,即在数据单元的位图中是否所有位的值都为1,如果有值为0的位,那么表示该位对应的数据位置可使用,直接使用;而如果没有,即位图中的所有位的值均为1,那么新建一个数据单元,将新建数据单元的位图清0,使用第一个数据位置即可,并将对应位图的位的值置1。
2.根据权利要求1所述的使用类聚簇的实时数据库存储方法,其特征在于:
位的值为0表示可使用,即可以存放新的数据;位的值为1表示已使用,即已存放数据,不可用于新数据的存放。
3.根据权利要求2所述的使用类聚簇的实时数据库存储方法,其特征在于,它还包括:
存储步骤,初次提交时每一种数据类型构造一个对应的数据单元,数据单元可容纳的数据数量略大于初始时需要的这种类型数据的数量,将数据置入列表,并将位图对应的位初始化;每次提交时,均对数据进行修正,当没有可重用的数据空间,需要新的数据空间时,才分配一个新的数据单元,结构和原数据单元一致,但可容纳数据数量则仅为预先指定的较小的值,并通过链表方式和原数据单元相连。
4.一种使用类聚簇的实时数据库存储装置,其特征在于,它包括:
构造模块,采用类似于数据库中聚簇的一种数据结构作为基本数据单元,每个数据单元中包含一个同种数据类型的列表,数据列表中只存放该类型数据,因此每个数据占有的空间大小是一致的,这个数据单元同时还包含一个为这个数据列表建立的位图,位图的长度等于列表中数据的个数,位图中每一位与列表中的一个数据顺序对应,表示这一数据是可使用还是已使用;
删除模块,在实时数据库中使用所述的数据单元存储数据,当需要对其中的某个数据进行删除时,首先定位到该数据,清空数据值,但并不释放数据对应的空间,只是将数据对应的位的值设为0,表示该数据位置可使用;只有当一个数据单元内的所有数据位置都可使用,即位图的所有位都为0时,才释放整个数据单元的空间;
增添模块,在实时数据库中使用所述的数据单元存储数据,当需要增添一个该类型数据时,首先确定数据单元内是否都是已使用的数据位置,即在数据单元的位图中是否所有位的值都为1,如果有值为0的位,那么表示该位对应的数据位置可使用,直接使用;而如果没有,即位图中的所有位的值均为1,那么新建一个数据单元,将新建数据单元的位图清0,使用第一个数据位置即可,并将对应位图的位的值置1。
5.根据权利要求4所述的使用类聚簇的实时数据库存储方法,其特征在于:
位的值为0表示可使用,即可以存放新的数据;位的值为1表示已使用,即已存放数据,不可用于新数据的存放。
6.根据权利要求5所述的使用类聚簇的实时数据库存储方法,其特征在于,它还包括:
存储模块,初次提交时每一种数据类型构造一个对应的数据单元,数据单元可容纳的数据数量略大于初始时需要的这种类型数据的数量,将数据置入列表,并将位图对应的位初始化;每次提交时,均对数据进行修正,当没有可重用的数据空间,需要新的数据空间时,才分配一个新的数据单元,结构和原数据单元一致,但可容纳数据数量则仅为预先指定的较小的值,并通过链表方式和原数据单元相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010235099 CN101901261A (zh) | 2010-07-23 | 2010-07-23 | 一种使用类聚簇的实时数据库存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010235099 CN101901261A (zh) | 2010-07-23 | 2010-07-23 | 一种使用类聚簇的实时数据库存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101901261A true CN101901261A (zh) | 2010-12-01 |
Family
ID=43226795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010235099 Pending CN101901261A (zh) | 2010-07-23 | 2010-07-23 | 一种使用类聚簇的实时数据库存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101901261A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411634A (zh) * | 2011-12-27 | 2012-04-11 | 北京人大金仓信息技术股份有限公司 | 一种提升嵌入式数据库实时性的数据存储方法 |
CN103946847A (zh) * | 2011-11-04 | 2014-07-23 | 惠普发展公司,有限责任合伙企业 | 分布式事件处理 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790269A (zh) * | 2004-12-18 | 2006-06-21 | 鸿富锦精密工业(深圳)有限公司 | 管控服务使用资源的方法 |
CN101146345A (zh) * | 2006-09-13 | 2008-03-19 | 华为技术有限公司 | 一种gprs***中下行资源动态分配的***和方法 |
CN101206656A (zh) * | 2006-12-22 | 2008-06-25 | 英业达股份有限公司 | 文件安全删除***及方法 |
CN101226553A (zh) * | 2008-02-03 | 2008-07-23 | 中兴通讯股份有限公司 | 一种嵌入式数据库变长字段存储的实现方法及装置 |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
-
2010
- 2010-07-23 CN CN 201010235099 patent/CN101901261A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1790269A (zh) * | 2004-12-18 | 2006-06-21 | 鸿富锦精密工业(深圳)有限公司 | 管控服务使用资源的方法 |
CN101146345A (zh) * | 2006-09-13 | 2008-03-19 | 华为技术有限公司 | 一种gprs***中下行资源动态分配的***和方法 |
CN101206656A (zh) * | 2006-12-22 | 2008-06-25 | 英业达股份有限公司 | 文件安全删除***及方法 |
CN101226553A (zh) * | 2008-02-03 | 2008-07-23 | 中兴通讯股份有限公司 | 一种嵌入式数据库变长字段存储的实现方法及装置 |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946847A (zh) * | 2011-11-04 | 2014-07-23 | 惠普发展公司,有限责任合伙企业 | 分布式事件处理 |
CN102411634A (zh) * | 2011-12-27 | 2012-04-11 | 北京人大金仓信息技术股份有限公司 | 一种提升嵌入式数据库实时性的数据存储方法 |
CN102411634B (zh) * | 2011-12-27 | 2016-01-13 | 北京人大金仓信息技术股份有限公司 | 一种提升嵌入式数据库实时性的数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101753608B (zh) | 分布式***的调度方法及*** | |
CN104965850B (zh) | 一种基于开源技术的数据库高可用实现方法 | |
CN111106620B (zh) | 基于区块链的电动汽车充电分布式管理方案 | |
CN104731799B (zh) | 内存数据库管理装置 | |
CN103944981A (zh) | 一种基于纠删码技术改进的云存储***及实现方法 | |
TWI738037B (zh) | 分區***方法、裝置、電子設備及可讀儲存媒體 | |
CN102968438B (zh) | 综合监控***中历史数据存储控制*** | |
CN104765575A (zh) | 信息存储处理方法 | |
CN102591789A (zh) | 存储空间回收方法及装置 | |
CN103577513A (zh) | 藉延迟节点实例化以缓存xml信息集的***和/或方法 | |
CN110750372B (zh) | 基于共享内存的日志***及日志管理方法 | |
CN101226553A (zh) | 一种嵌入式数据库变长字段存储的实现方法及装置 | |
CN103793382B (zh) | 一种数据库的数据处理方法及*** | |
CN110083306A (zh) | 一种分布式对象存储***及存储方法 | |
WO2024098698A1 (zh) | 一种磁盘阵列初始化方法、装置、设备及可读存储介质 | |
CN101901261A (zh) | 一种使用类聚簇的实时数据库存储方法 | |
CN102567419A (zh) | 基于树结构的海量数据存储装置及方法 | |
CN101478567B (zh) | 基于网格划分的内存管理方法 | |
CN103631831A (zh) | 一种数据备份方法及装置 | |
CN115083538B (zh) | 一种药物数据的处理***、运行方法及数据处理方法 | |
CN110209595A (zh) | 一种用于管理内存页的方法及装置 | |
CN102262597B (zh) | 内存池管理方法和*** | |
CN103502953B (zh) | 提高分布式对象存储***的并发性能的方法和装置 | |
WO2014103386A1 (ja) | 情報処理装置、分散データベースシステム、およびバックアップ方法 | |
CN103761248B (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 | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20101201 |