CN101706801A - 一种内存数据库数据的管理方法及系统 - Google Patents
一种内存数据库数据的管理方法及系统 Download PDFInfo
- Publication number
- CN101706801A CN101706801A CN200910224772A CN200910224772A CN101706801A CN 101706801 A CN101706801 A CN 101706801A CN 200910224772 A CN200910224772 A CN 200910224772A CN 200910224772 A CN200910224772 A CN 200910224772A CN 101706801 A CN101706801 A CN 101706801A
- Authority
- CN
- China
- Prior art keywords
- memory database
- configuration file
- index
- constraint
- xml form
- 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
本发明涉及一种内存数据库数据的管理方法,所述方法包括以下步骤:1)根据业务表创建一个XML格式的文档类型定义文件和配置文件;2)创建所述XML格式的配置文件中的内存数据库对象表;3)将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中;4)对所述内存数据库进行约束校验。本发明提供一种内存数据库数据的管理方法及系统,用于统一管理内存数据库,实现数据库对象的存放。
Description
技术领域
本发明涉及数据库领域,特别是涉及一种内存数据库数据的管理方法及系统。
背景技术
在传统典型的内存数据库中,为了保证性能,对于数据库业务逻辑要求,都需要开发人员自己实现。传统的方式是采用硬编码的方式进行各种数据的装载和数据装载时的校验,带来了大量的工作量。一种折中方式是,用重复的逻辑流程来创建数据库的一些逻辑对象,如所有的表以及索引,重复的逻辑流程对数据库的一些重要的逻辑对象进行约束检查,比如主、外键和索引等。即使这种折中方式,也同样需要编写大量重复的代码。而对于表的每个字段的检查约束,由于其代码量非常大,一般在数据库装载时并不进行检查,而是由外部使用者来保证。显而易见这种数据库的装载方法不但工作量大,而且也不能对装载的数据进行完整的校验,数据库的完整性和合法性仍不能得到强有力的保证。
在通讯行业,随着3G时代的到来,迅速实时处理数据成为普遍的需求,这么高速的数据的存放都要使用内存数据库。而目前,不论是商用的内存数据库还是自行研发的内存数据库,对数据库中逻辑对象的创建和管理都没有一套统一的方法。
现有一种内存数据库抛弃了磁盘数据管理的传统方式,基于全部数据都在内存中重新设计体系结构,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,所以数据处理速度比传统数据库的数据处理速度要快很多,一般都在10倍以上。内存数据库的最大特点是其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。显然,这种数据库要求较大的内存量,但并非任何时刻整个数据库都存放在内存,即内存数据库系统还是要处理I/O。尽管这种内存数据库已不是传统磁盘数据库的概念,但是内存数据库本质上还是数据库,也具有一般数据库的基本功能:完成各种数据操作,如查询处理、存取、完整性检查;对存取的控制和安全性检验;永久数据的管理,包括数据库的定义、存储、维护等。
在传统的内存数据库中,数据库对象的存储一般都是采用数据字典存放在数据库的一组基本表中,这样不仅会给数据库的开发带来大量的工作量,而且同时也会给数据库的管理带来很大麻烦。另外内存数据库不存储数据库对象,这样就更不方便对数据库的管理。
发明内容
本发明的目的是提供一种内存数据库数据的管理方法及系统,用于统一管理内存数据库,实现数据库对象的存放。
本发明提供一种内存数据库数据的管理方法,所述方法包括以下步骤:
1)根据业务表创建一个XML格式的文档类型定义文件和配置文件;
2)创建所述XML格式的配置文件中的内存数据库对象表;
3)将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中;
4)对所述内存数据库进行约束校验。
优选地,所述步骤4为:对所述内存数据库进行检查约束和索引约束的检查。
优选地,所述检查约束包括:循环所述内存数据库中检查约束结构中的记录,根据保存的所述业务表的句柄查到所述内存数据库对象表相关的检查约束字段名及范围值;根据查询到的所述约束字段名,在所述内存数据库对象表具体列描述结构中查询约束具体的列,和所述约束具体的列在所在所述业务表中的值;与解析后的描述约束相比较确定检查约束是否通过。
优选地,所述索引约束的检查包括:循环所述内存数据库中索引约束结构,根据保存的所述业务表的句柄查到所述内存数据库对象表相关索引约束和具体列;所述内存数据库对象表中具体列中的元素组合成索引字符串;检查所述业务表的具体列中记录是否存在。
优选地,所述步骤3前还包括:
进行外键约束和序列号生成器上下限检查。
优选地,所述步骤1为:
根据业务表创建一个XML格式的配置文件,在所述XML格式的配置文件中描述所述业务表的数据字典。
优选地,所述步骤2后还包括:
利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
优选地,所述步骤1具体为:
根据业务表创建一个XML格式的配置文件和文档类型定义文件;在所述XML格式的配置文件中描述所述业务表的数据字典;所述文档类型定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
优选地,所述约束条件通过各个节点的属性描述实现。
优选地,所述数据字典包括表、字段、索引、主外键。
优选地,在所述XML格式的配置文件中还包括数据库必要描述信息:存储空间、数据文件存在路径、数据库字符集。
本发明还提供一种内存数据库数据的管理系统,所述系统包括:
配置文件创建单元,用于根据业务表创建一个XML格式的配置文件;
内存数据库对象表创建单元,用于创建所述配置文件创建单元创建的XML格式的配置文件中的内存数据库对象表;
保存单元,用于将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中;
校验单元,用于对所述内存数据库进行约束校验。
优选地,所述配置文件创建单元包括与内存数据库对象表创建单元相连的第一描述单元,用于在所述XML格式的配置文件中描述所述业务表的数据字典。
优选地,所述系统还包括与内存数据库对象表创建单元和保存单元相连的索引更新单元;
索引更新单元,用于利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
优选地,所述配置文件创建单元包括与内存数据库对象表创建单元相连的文档类型定义文件;
所述文档类型定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
与现有技术相比,本发明具有以下优点:
本发明实施例所述一种内存数据库数据的管理方法,将业务表的数据库对象都存放在创建的XML格式配置文件中,可以很容易实现数据库对象的存放,并且可以将业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中。再对所述内存数据库进行约束校验。利用本发明实施里所述方法可以很容易实现数据库对象的存储,并且可以充分地对传入数据库的数据进行完整校验。从内存数据库中获取内存数据库对象不再需要连接内存数据库,而是通过解释这个XML文件,就可以得到所有的内存数据库对象。
本发明实施例所述提供一种内存数据库数据的管理方法,对内存数据库对象进行统一配置管理,将原来重复的创建内存数据库、重复的数据装载的过程进行统一处理。
附图说明
图1为本发明第一实施例所述内存数据库数据的管理方法流程图;
图2为本发明实施例所述文档类型文件的树形结构图;
图3为本发明第二实施例所述内存数据库数据的管理方法流程图;
图4为本发明第一实施例所述内存数据库数据的管理系统结构图;
图5为本发明第二实施例所述内存数据库数据的管理系统结构图。
具体实施方式
本发明的目的是提供一种内存数据库数据的管理方法,用于统一管理内存数据库,实现数据库对象的存放。
XML自1998年由互联网协会提出后,得到广泛应用,已成为数据交换的事实标准及Web Service等众多新兴技术的基础。XML数据是结构化的,这一特点对于大型和复杂的文档来说是很理想的。用户不仅可以指定一个定义文档中元素的词汇表,而且还可以指定元素之间的关系。XML也提供客户端的包括机制,可以根据多种来源集成数据并将其作为一个文档来显示。数据还可以马上进行重新排列。数据的各个部分可以根据用户的操作进行显示或隐藏。当处理大型的信息仓库,比如关系型数据库时是极为有用的。因此,XML技术在数据库中得到广泛的应用。XML数据的存储与访问功能的一种实现技术是将XML数据存储为普通文件,而后通过DOM操作接口进行解析与访问。通过DOM接口可以方便灵活地实现对文档节点级的操作。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明所述内存数据库数据的管理方法作进一步详细的说明。
参见图1,该图为本发明第一实施例所述内存数据库数据的管理方法流程图。
本发明第一实施例所述内存数据库数据的管理方法,包括以下步骤:
S100、根据业务表创建一个XML格式的DTD定义文件和配置文件。
根据业务表创建一个XML格式的配置文件,在所述XML格式的配置文件中描述所述业务表的数据字典。
在所述XML格式的配置文件中还包括数据库必要描述信息:数据库的存储空间、数据文件存在路径、数据库字符集。
为了确保XML格式正确,需要为语法分析器提供DTD(Document TypeDefinition,文档类型定义)。DTD指定可以在文档中存在的元素、哪些元素可以具有的属性、在元素内部元素的层次结构以及元素在整个文档中出现的顺序。
虽然DTD不是必须的,DTD有三个基本用途:对标记进行编制文档;加强标记参数内部的一致性;使XML语法分析器能够确认文档。
如果不对XML文档进行DTD定义,文档就无法由XML语法分析器进行确认。
对于解释XML格式文件的Xerces-C++是一种非常健壮的XML解析器,可以提供验证,以及SAX和DOM API。XML验证在文档类型定义(DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema的基本完整的开放标准。
因此,步骤S100具体应为根据业务表先创建一个DTD定义文件,再创建一个XML格式的配置文件。
在所述XML格式的配置文件中描述所述业务表的数据字典。所述数据字典包括表、字段、索引、主外键等。
所述DTD定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
所述约束条件可以通过各个节点的属性描述实现。对于数据库属性用ID描述其名称标志,表明必须填入的唯一标志,例如用“#REQUIRED”表示。这样,就不会存在两个相同名称的数据库。同样对于表、触发器和存储过程等,也需要进行唯一性约束。
数据库所包含的元素有:table*,user+,trigger*,Process*等,星号(*)表示有零个或多个描述元素;加号(+)表示所描述的元素至少有一个;问号(?)表示有零个或一个元素。
相应的表(table)下一级包括的元素可以有:columnt+,index*,PrimaryKey?,ForeignKey*等。字段(columnt)的下一级可以包括元素有:DataType,length?,IsNull?,default?等。其余的元素就可以类似的进行定义。表1是一个DTD定义的简单例子。
表1
<?xml encoding=″UTF-8″?><!--@version:--><!ELEMENT test(dadabase)+><!ELEMENT dadabase(table*,user?,DataFile?,CharacterSet?)><!ATTLIST dadabase name ID#REQUIRED><!ELEMENT table(columnt+,index*,PrimaryKey?,ForeignKey*)><!ATTLIST table name ID#REQUIRED><!ELEMENT columnt(DataType,length?,IsNull?,default?,CHECK?)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT DataType(#PCDATA)><!ELEMENT length(#PCDATA)><!ELEMENT IsNull(#PCDATA)><!ELEMENT default(#PCDATA)> |
<!ELEMENT CHECK(#PCDATA)><!ELEMENT index(columnt+)><!ATTLIST index name ID#REQUIRED><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT PrimaryKey(columnt+)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT ForeignKey(table,columnt+)><!ATTLIST ForeignKey columnt CDATA#IMPLIED><!ELEMENT table(#PCDATA)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT user(role+)><!ATTLIST user name CDATA#IMPLIED><!ELEMENT role(#PCDATA)><!ATTLIST DataFile dir ID#REQUIRED><!ATTLIST CharacterSet CharacterSet CDATA#IMPLIED> |
<?xml encoding=″UTF-8″?><!--@version:--><!ELEMENT test(dadabase)+><!ELEMENT dadabase(table*,user?,DataFile?,CharacterSet?)><!ATTLIST dadabase name ID#REQUIRED><!ELEMENT table(columnt+,index*,PrimaryKey?,ForeignKey*)><!ATTLIST table name ID#REQUIRED><!ELEMENT columnt(DataType,length?,IsNull?,default?,CHECK?)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT DataType(#PCDATA)> |
<!ELEMENT length(#PCDATA)><!ELEMENT IsNull(#PCDATA)><!ELEMENT default(#PCDATA)><!ELEMENT CHECK(#PCDATA)><!ELEMENT index(columnt+)><!ATTLIST index name ID#REQUIRED><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT PrimaryKey(columnt+)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT ForeignKey(table,columnt+)><!ATTLIST ForeignKey columnt CDATA#IMPLIED><!ELEMENT table(#PCDATA)><!ATTLIST columnt name CDATA#IMPLIED><!ELEMENT user(role+)><!ATTLIST user name CDATA#IMPLIED><!ELEMENT role(#PCDATA)><!ATTLIST DataFile dir ID#REQUIRED><!ATTLIST CharacterSet CharacterSet CDATA#IMPLIED> |
首先,根据业务表中的所有数据库对象及其约束条件,创建一个DTD定义文件。DTD文件的树形结构描述如图2所示。DTD文件定义XML格式的配置文件中的所有数据库对象名、数据库对象的属性、各数据库对象的排列方式和顺序、数据库对象能够包含的内容。
然后,根据业务表需要,创建相符合的XML格式的配置文件,在XML格式的配置文件中以XML格式配置并存储各种数据库内存数据库对象的描述和内存数据库相关信息描述.所述内存数据库对象至少包括一个业务表,该业务表结构描述至少包括业务表属性描述结构、列描述结构;内存数据库相关信息可以有数据文件路径,数据库使用者和数据库字符集.这个XML格式的配置文件可以利用以上创建的DTD文件,通过Xerces-XML的相关接口和业务数据来创建;也可以通过相关编辑器(如UltraEdit)来直接编辑创建.
对应以上的DTD文件可以创建如表2所示的一个简单的XML格式配置文件。
表2
<?×ml version=″1.0″encoding=″UTF-8″standalone=″no″?><!DOCTYPE Ora_MDB SYSTEM″Conf.dtd″><test><dadabase name=″my_database″><table name=″student″><Columnt name=″ID″><DataType>number</DataType><length>8</length><IsNull>0</IsNull></Columnt><Columnt name=″fullname″><DataType>varchar2</Data Type><length>128</length><IsNull>0</IsNull></Columnt><index name=″student_indx″><columnt name=″ID″></index><PrimaryKey><columnt name=″ID″></PrimaryKey></table> |
<user name=″Lucy″><role>DBA</role></user></dadabase></test> |
S200、创建所述XML格式的配置文件中的内存数据库对象表。
利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,建立索引。
内存数据库启动时,读取XML格式的配置文件加载内存数据库描述信息,完成内存数据库描述信息加载后,通过统一的程序代码,创建XML格式的配置文件中的内存数据库对象。
内存数据库在进行最基本的启动过程,根据XML格式的配置文件分配必要的内存和其他必要的运行资源后,可以通过Xerces-XML接口读取XML配置文件,获取信息进行初始化.
首先,从XML格式的配置文件中读取表的信息,建立统一的表描述符信息,包括表的名字、存储空间、字段列表、主键信息,其中字段列表包含每个字段的名字、顺序、数据类型、数据长度、可否为空、默认值信息。统一的表描述信息将保存在系统的共享数据区供之后连接上来的客户端进行访问。
在加载完表的信息后,下一步加载主键配置信息。加载主键信息包括所属表、存储空间以及字段列表,还有判断字段列表是否不为NULL和列表的唯一性,并且同时为这个列表建立一个索引。
加载索引配置信息。加载的索引信息包括索引的名字、所属的表、存储空间以及字段列表、索引模式(HASH方式或者BTREE方式)。在加载索引信息的过程中,需要对索引关联的表的字段进行检查,确定索引的字段有效性。
加载外键配置信息。加载外键除了包括外键的名字、所属的表、存储空间和字段列表外,还要检查被引用的表列表是否为主键或者唯一键,确定字段列表的有效性。
当全部配置信息加载完成后,将所有的加载信息将保存在系统的共享数据区之后,供连接上来的客户端进行访问。系统根据配置信息加载数据,并对数据进行有效性检查。
S300、将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中。
XML格式的配置文件中所述逻辑对象即内存数据库对象,创建完成后,将所述业务表的具体内容读入到创建好的所述XML格式的配置文件中的内存数据库对象表中。
在步骤S300前,还可以包括进行外键约束和序列号生成器(序列号生成器具体指什么?)上下限检查的步骤。
S400、对所述内存数据库进行约束校验。
对所述内存数据库进行检查约束和索引约束的检查。
所述检查约束包括:循环所述内存数据库中检查约束结构中的记录,根据保存的所述业务表的句柄查到所述内存数据库对象表相关的检查约束字段名及范围值;根据查询到的所述约束字段名,在所述内存数据库对象表具体列描述结构中查询约束具体的列,和所述约束具体的列在所在所述业务表中的值;与解析后的描述约束相比较确定检查约束是否通过。
所述索引约束的检查包括:循环所述内存数据库中索引约束结构,根据保存的所述业务表的句柄查到所述内存数据库对象表相关索引约束和具体列;所述内存数据库对象表中具体列中的元素组合成索引字符串;检查所述业务表的具体列中记录是否存在。
为了便于本领域技术人员的理解,下面结合具体实施例——通过XML文件配置并创建一个逻辑对象,例如一张业务表,进行说明。
(1)、XML文件配置业务表的基本信息,如表2中配置一个业务表student的基本信息。
(2)、在数据库启动时,先将业务表基本信息参数传入创建表函数,判断数据库中是否已经存在修改的业务表,若没有则执行创建业务表的操作。
(3)、其它逻辑对象如索引、主外键的创建也如上述步骤(2)所描述。在内存数据库开始装载时,为了保证内存数据库的完整性和一致性,需要在装载前进行业务表的检查约束、业务表的索引约束检查、外健约束检查等。
检查约束的流程包括以下步骤:
查询检查约束结构数组gtsysConsChkTuPle,根据传入的表句柄查到表相关的检查约束句柄、检查约束包含的具体字段以及该检查约束的范围值,即某个字段合法取值的所属的范围,举例中为查询到student表中ID字段取值范围为最小值nMin=1,最大值1Max=99999999。
该列的输入值与描述约束相比较可检查约束是否通过,如在大于1小于99999999的范围内则为通过,反之为不通过。
索引约束检查包括以下步骤:
查询索引约束结构体CHECK_INDEX,根据传入的表句柄szTable查到表相关索引约束列或者列表szColumnt[N];
根据查询到的索引具体列的名称szColumnt[N]来定位所有列,得到所有列的具体属性;
将索引包含的具体列的值分别取出,组合成索引值;
根据索引值调用数据库原语提供的定位函数来检查相关的记录是否存在。
外健引用约束检查实现的方式类似上述索引约束,下面对其步骤进行简单描述:
数据进行装载时候,需要通过约束结构检查其是否有外键约束;如果有类似约束,根据索引定位的方式来定位该外健值是否在父表中存在。
在删除记录时查询是否有子表引用该表,定位方式类似索引定位(对于级联的可以不进行该步骤的检查)。
其它类型的约束检查,所有的逻辑约束对象都可以配置在系统约束结构中,如果某些约束是多字段约束,则可以继续在约束具体列结构中描述。传入记录时候约束的检查方法雷同其它约束检查方式。
本发明第一实施例所述一种内存数据库数据的管理方法,将业务表的数据库对象都存放在创建的XML格式配置文件中,可以很容易实现数据库对象的存放,并且可以将业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中。再对所述内存数据库进行约束校验。利用本发明实施里所述方法可以很容易实现数据库对象的存储,并且可以充分的对传入数据库的数据进行完整校验。对内存数据库数据字典的管理和维护带来方便,从内存数据库中获取内存数据库对象不再需要连接内存数据库,而是通过解释这个XML文件,就可以得到所有的内存数据库对象,使得数据库的管理更方便。
本发明实施例所述提供一种数据的保存方法,对内存数据库对象进行统一配置管理,将原来重复的创建数据库内存数据库、重复的数据装载的过程进行统一处理。
参见图3,该图为本发明第二实施例所述内存数据库数据的管理方法流程图。
本发明所述内存数据库数据的管理方法第二实施例,相对第一实施例的区别在于,增了步骤S210、利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
本发明第二实施例所述一种数据的保存方法,具体可以包括以下步骤:
S100、根据业务表创建一个XML格式的配置文件。
根据业务表创建一个XML格式的配置文件,在所述XML格式的配置文件中描述所述业务表的数据字典。
根据业务表创建一个XML格式的配置文件和DTD定义文件;在所述XML格式的配置文件中描述所述业务表的数据字典;所述DTD定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
S200、创建所述XML格式的配置文件中的内存数据库对象表。
利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,建立索引。
内存数据库启动时,读取XML格式的配置文件加载内存数据库描述信息,完成内存数据库描述信息加载后,通过统一的程序代码,创建XML格式的配置文件中的内存数据库对象。
S210、利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
利用XML格式的配置文件中所述业务表的数据字典的索引描述信息,自动建立并维护索引。
在数据库启加载完数据库表逻辑对象(内存数据库对象)后,需要根据配置信息建立或检查索引,并在一些情况下(例如唯一索引)检查数据的一致性。内存数据库为了最大化性能,根据需要检索的数据的类型,按照匹配检索使用Hash索引,范围检索使用BTREE索引的方式,判断选择必要的索引。在内存数据库启动加载业务表数据后,需要根据配置信息中描述的索引类型,建立相应的索引。
使用配置索引的另外一个功能是自动维护索引。在进行内存数据库操作(增、删、改)的过程中,系统自动根据配置的信息维护索引的变动。如果是唯一索引的,是不允许有两行相同的索引键值的;如果是聚集索引只允许一个表同时只有一个聚集索引。
S300、将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中。
XML格式的配置文件中所述逻辑对象即内存数据库对象,创建完成后,将所述业务表的具体内容读入到创建好的所述XML格式的配置文件中的内存数据库对象表中。
在步骤S300前,还可以包括进行外键约束和序列号上下限等相关表字段属性检查的步骤。
S400、对所述内存数据库进行约束校验。
对所述内存数据库进行检查约束和索引约束的检查。
所述检查约束和索引约束可以和第一实施例中的方式一样,具体不再详述。
本发明第二实施例所述一种内存数据库数据的管理方法,在进行内存数据库操作(增、删、改)的过程中,系统自动根据配置的信息维护索引的变动,并进行约束检查。
本发明的目的是提供一种内存数据库数据的管理系统,用于统一管理内存数据库,实现数据库对象的存放。
参见图4,该图为本发明第一实施例所述内存数据库数据的管理系统结构图。
本发明第一实施例所述内存数据库数据的管理系统,包括:
配置文件创建单元11,用于根据业务表创建一个XML格式的配置文件。
所述配置文件创建单元11可以包括与内存数据库对象表创建单元12相连的第一描述单元(图中未示出),用于在所述XML格式的配置文件中描述所述业务表的数据字典。
所述配置文件创建单元11还可以包括与内存数据库对象表创建单元12相连的DTD定义文件(图中未示出)。
所述DTD定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
内存数据库对象表创建单元12,用于创建所述配置文件创建单元11创建的XML格式的配置文件中的内存数据库对象表。
保存单元13,用于将所述业务表的数据保存在所述内存数据库对象表创建单元12创建的XML格式的配置文件中的内存数据库对象表中。
校验单元15,用于对所述内存数据库进行约束校验。
校验单元15具体可以对所述内存数据库进行检查约束和索引约束的检查。
校验单元15的检查约束包括:循环所述内存数据库中检查约束结构中的记录,根据保存的所述业务表的句柄查到所述内存数据库对象表相关的检查约束字段名及范围值;根据查询到的所述约束字段名,在所述内存数据库对象表具体列描述结构中查询约束具体的列,和所述约束具体的列在所在所述业务表中的值;与解析后的描述约束相比较确定检查约束是否通过。
校验单元15的索引约束的检查包括:循环所述内存数据库中索引约束结构,根据保存的所述业务表的句柄查到所述内存数据库对象表相关索引约束和具体列;所述内存数据库对象表中具体列中的元素组合成索引字符串;检查所述业务表的具体列中记录是否存在。
本发明第一实施例所述内存数据库数据的管理系统,将业务表的数据库对象都存放在配置文件创建单元11创建的XML格式配置文件中,可以很容易实现数据库对象的存放,并且可以将业务表的数据保存在所述内存数据库对象表创建单元12创建的XML格式的配置文件中的内存数据库对象表中。从内存数据库中获取内存数据库对象不再需要连接数据库,而是通过解释这个XML文件,就可以得到所有的内存数据库对象,使得内存数据库的管理更方便。
本发明实施例所述提供一种内存数据库数据的管理系统,可以对内存数据库对象进行统一配置管理,将原来重复的创建内存数据库、重复的数据装载的过程进行统一处理。
参见图5,该图为本发明第二实施例所述内存数据库数据的管理系统结构图。
本发明第二实施例所述内存数据库数据的管理系统,相对第一实施例的区别在于,所述系统还包括与内存数据库对象表创建单元11和保存单元13相连的索引更新单元14。
索引更新单元14,用于利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
索引更新单元14具体可以利用XML格式的配置文件中所述业务表的数据字典的索引描述信息,自动建立并维护索引。
在数据库启加载完数据库表逻辑对象(内存数据库对象)后,需要根据配置信息建立或检查索引,并在一些情况下(例如唯一索引)检查数据的一致性.内存数据库为了最大化性能,索引更新单元14可以根据需要检索的数据的类型,按照匹配检索使用Hash索引,范围检索使用BTREE索引的方式,判断选择必要的索引.在内存数据库启动加载业务表数据后,需要根据配置信息中描述的索引类型,建立相应的索引.
使用配置索引的另外一个功能是自动维护索引。在进行内存数据库操作(增、删、改)的过程中,系统自动根据配置的信息维护索引的变动。如果是唯一索引的,是不允许有两行相同的索引键值的;如果是聚集索引只允许一个表同时只有一个聚集索引。
以上对本发明所提供的内存数据库数据的管理方法及系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (15)
1.一种内存数据库数据的管理方法,其特征在于,所述方法包括以下步骤:
1)根据业务表创建一个XML格式的文档类型定义文件和配置文件;
2)创建所述XML格式的配置文件中的内存数据库对象表;
3)将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中;
4)对所述内存数据库进行约束校验。
2.根据权利要求1所述的方法,其特征在于,所述步骤4为:对所述内存数据库进行检查约束和索引约束的检查。
3.根据权利要求2所述的方法,其特征在于,
所述检查约束包括:循环所述内存数据库中检查约束结构中的记录,根据保存的所述业务表的句柄查到所述内存数据库对象表相关的检查约束字段名及范围值;根据查询到的所述约束字段名,在所述内存数据库对象表具体列描述结构中查询约束具体的列,和所述约束具体的列在所在所述业务表中的值;与解析后的描述约束相比较确定检查约束是否通过。
4.根据权利要求2所述的方法,其特征在于,
所述索引约束的检查包括:循环所述内存数据库中索引约束结构,根据保存的所述业务表的句柄查到所述内存数据库对象表相关索引约束和具体列;所述内存数据库对象表中具体列中的元素组合成索引字符串;检查所述业务表的具体列中记录是否存在。
5.根据权利要求1所述的方法,其特征在于,所述步骤3前还包括:
进行外键约束和序列号生成器上下限检查。
6.根据权利要求1所述的方法,其特征在于,所述步骤1为:
根据业务表创建一个XML格式的配置文件,在所述XML格式的配置文件中描述所述业务表的数据字典。
7.根据权利要求6所述的方法,其特征在于,所述步骤2后还包括:
利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
8.根据权利要求6所述的方法,其特征在于,所述步骤1具体为:
根据业务表创建一个XML格式的配置文件和文档类型定义文件;在所述XML格式的配置文件中描述所述业务表的数据字典;所述文档类型定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
9.根据权利要求8所述的方法,其特征在于,所述约束条件通过各个节点的属性描述实现。
10.根据权利要求6或8所述的方法,其特征在于,所述数据字典包括表、字段、索引、主外键。
11.根据权利要求1所述的方法,其特征在于,在所述XML格式的配置文件中还包括数据库必要描述信息:存储空间、数据文件存在路径、数据库字符集。
12.一种内存数据库数据的管理系统,其特征在于,所述系统包括:
配置文件创建单元,用于根据业务表创建一个XML格式的配置文件;
内存数据库对象表创建单元,用于创建所述配置文件创建单元创建的XML格式的配置文件中的内存数据库对象表;
保存单元,用于将所述业务表的数据保存在所述XML格式的配置文件中的内存数据库对象表中;
校验单元,用于对所述内存数据库进行约束校验。
13.根据权利要求12所述的系统,其特征在于,所述配置文件创建单元包括与内存数据库对象表创建单元相连的第一描述单元,用于在所述XML格式的配置文件中描述所述业务表的数据字典。
14.根据权利要求13所述的系统,其特征在于,所述系统还包括与内存数据库对象表创建单元和保存单元相连的索引更新单元;
索引更新单元,用于利用所述XML格式的配置文件中所述业务表的数据字典的索引描述信息,更新索引。
15.根据权利要求13所述的系统,其特征在于,所述配置文件创建单元包括与内存数据库对象表创建单元相连的文档类型定义文件;
所述文档类型定义文件中包含所述XML格式的配置文件中所述业务表各个节点的约束条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910224772A CN101706801A (zh) | 2009-11-17 | 2009-11-17 | 一种内存数据库数据的管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910224772A CN101706801A (zh) | 2009-11-17 | 2009-11-17 | 一种内存数据库数据的管理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101706801A true CN101706801A (zh) | 2010-05-12 |
Family
ID=42377026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910224772A Pending CN101706801A (zh) | 2009-11-17 | 2009-11-17 | 一种内存数据库数据的管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101706801A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142007A (zh) * | 2010-11-23 | 2011-08-03 | 北京中创信测科技股份有限公司 | 一种通用统计方法和装置 |
CN102279885A (zh) * | 2011-08-16 | 2011-12-14 | 中兴通讯股份有限公司 | 内存数据库对数据的操作方法及装置 |
CN102880550A (zh) * | 2011-07-12 | 2013-01-16 | 北京东方通科技股份有限公司 | 基于约束校验的内存格式化方法 |
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN104951565A (zh) * | 2015-07-10 | 2015-09-30 | 上海斐讯数据通信技术有限公司 | 一种基于内存数据库的xml配置维护方法及系统 |
CN106897458A (zh) * | 2017-03-10 | 2017-06-27 | 广州白云电器设备股份有限公司 | 一种面向机电设备数据的存储及检索方法 |
CN107679218A (zh) * | 2017-10-17 | 2018-02-09 | 九州通医疗信息科技(武汉)有限公司 | 基于内存的搜索方法及装置 |
CN110059078A (zh) * | 2019-04-19 | 2019-07-26 | 中国航空无线电电子研究所 | 一种导航数据库定制数据的动态配置和校验方法 |
CN110765741A (zh) * | 2019-09-09 | 2020-02-07 | 重庆金融资产交易所有限责任公司 | 数据处理的方法、装置、计算机设备和存储介质 |
CN111708580A (zh) * | 2020-05-09 | 2020-09-25 | 厦门极致互动网络技术股份有限公司 | 一种配置软件静态数据的处理方法及系统 |
CN112114961A (zh) * | 2020-08-21 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种内存分配方法和装置 |
CN112181936A (zh) * | 2019-07-03 | 2021-01-05 | 北京京东尚科信息技术有限公司 | 一种数据库检测方法和装置 |
CN112433960A (zh) * | 2020-12-08 | 2021-03-02 | 四川长虹电器股份有限公司 | 一种异步基于版本控制的刷新级联缓存的方法 |
-
2009
- 2009-11-17 CN CN200910224772A patent/CN101706801A/zh active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142007A (zh) * | 2010-11-23 | 2011-08-03 | 北京中创信测科技股份有限公司 | 一种通用统计方法和装置 |
CN102880550A (zh) * | 2011-07-12 | 2013-01-16 | 北京东方通科技股份有限公司 | 基于约束校验的内存格式化方法 |
CN102880550B (zh) * | 2011-07-12 | 2014-12-17 | 北京东方通科技股份有限公司 | 基于约束校验的内存格式化方法 |
CN102279885A (zh) * | 2011-08-16 | 2011-12-14 | 中兴通讯股份有限公司 | 内存数据库对数据的操作方法及装置 |
CN103714090A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN103714090B (zh) * | 2012-10-09 | 2018-04-10 | 阿里巴巴集团控股有限公司 | 多索引数据库事务处理方法及数据库 |
CN104951565A (zh) * | 2015-07-10 | 2015-09-30 | 上海斐讯数据通信技术有限公司 | 一种基于内存数据库的xml配置维护方法及系统 |
CN104951565B (zh) * | 2015-07-10 | 2018-07-24 | 上海斐讯数据通信技术有限公司 | 一种基于内存数据库的xml配置维护方法及系统 |
CN106897458A (zh) * | 2017-03-10 | 2017-06-27 | 广州白云电器设备股份有限公司 | 一种面向机电设备数据的存储及检索方法 |
CN107679218A (zh) * | 2017-10-17 | 2018-02-09 | 九州通医疗信息科技(武汉)有限公司 | 基于内存的搜索方法及装置 |
CN110059078A (zh) * | 2019-04-19 | 2019-07-26 | 中国航空无线电电子研究所 | 一种导航数据库定制数据的动态配置和校验方法 |
CN110059078B (zh) * | 2019-04-19 | 2022-11-15 | 中国航空无线电电子研究所 | 一种导航数据库定制数据的动态配置和校验方法 |
CN112181936A (zh) * | 2019-07-03 | 2021-01-05 | 北京京东尚科信息技术有限公司 | 一种数据库检测方法和装置 |
CN110765741A (zh) * | 2019-09-09 | 2020-02-07 | 重庆金融资产交易所有限责任公司 | 数据处理的方法、装置、计算机设备和存储介质 |
CN111708580A (zh) * | 2020-05-09 | 2020-09-25 | 厦门极致互动网络技术股份有限公司 | 一种配置软件静态数据的处理方法及系统 |
CN111708580B (zh) * | 2020-05-09 | 2022-08-23 | 厦门极致互动网络技术股份有限公司 | 一种配置软件静态数据的处理方法及系统 |
CN112114961A (zh) * | 2020-08-21 | 2020-12-22 | 苏州浪潮智能科技有限公司 | 一种内存分配方法和装置 |
CN112114961B (zh) * | 2020-08-21 | 2022-05-31 | 苏州浪潮智能科技有限公司 | 一种内存分配方法和装置 |
CN112433960A (zh) * | 2020-12-08 | 2021-03-02 | 四川长虹电器股份有限公司 | 一种异步基于版本控制的刷新级联缓存的方法 |
CN112433960B (zh) * | 2020-12-08 | 2022-06-21 | 四川长虹电器股份有限公司 | 一种异步基于版本控制的刷新级联缓存的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101706801A (zh) | 一种内存数据库数据的管理方法及系统 | |
US7275087B2 (en) | System and method providing API interface between XML and SQL while interacting with a managed object environment | |
US6636845B2 (en) | Generating one or more XML documents from a single SQL query | |
US8782017B2 (en) | Representing and manipulating RDF data in a relational database management system | |
US7844629B2 (en) | Querying markup language data sources using a relational query processor | |
US7376658B1 (en) | Managing cross-store relationships to data objects | |
US7953755B2 (en) | Semantic relational database | |
US7577642B2 (en) | Techniques of XML query optimization over static and dynamic heterogeneous XML containers | |
WO2013083793A1 (en) | Systems and methods for improving database performance | |
US20160232207A1 (en) | Hierarchy modeling and query | |
BRPI0709108A2 (pt) | arquitetura de mapeamento com manutenção de visualização incremental | |
Krijnen et al. | A SPARQL query engine for binary-formatted IFC building models | |
US20060161525A1 (en) | Method and system for supporting structured aggregation operations on semi-structured data | |
Michel et al. | Translation of Heterogeneous Databases into RDF, and Application to the Construction of a SKOS Taxonomical Reference | |
Beyer et al. | DB2 goes hybrid: Integrating native XML and XQuery with relational data and SQL | |
Liu et al. | Native JSON datatype support: maturing SQL and NoSQL convergence in Oracle database | |
EP2041679A1 (en) | Semantic aware processing of xml documents | |
Stanescu et al. | An algorithm for mapping the relational databases to mongodb-a case study | |
CN108256019A (zh) | 数据库主键生成方法、装置、设备及其存储介质 | |
Grün et al. | Pushing xpath accelerator to its limits | |
US8312030B2 (en) | Efficient evaluation of XQuery and XPath full text extension | |
Pal et al. | XML support in Microsoft SQL Server 2005 | |
El-Sayed et al. | Efficiently supporting order in XML query processing | |
Dean | xqerl_db: Database Layer in xqerl | |
Faraglia | XML document representation on the Neo solution |
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: 20100512 |