一种面向对象的嵌入式内存数据库的制作方法

文档序号:12802621阅读:421来源:国知局
一种面向对象的嵌入式内存数据库的制作方法与工艺

本发明涉及计算机数据库技术领域,尤其是涉及一种面向对象的嵌入式内存数据库。



背景技术:

数据库(database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

esb:企业服务总线,从面向服务体系架构(service-orientedarchitecture,soa)发展而来,是传统中间件技术与xml、web服务等技术结合的产物,esb提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。esb采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务级别上动态的互连互通,是一种在松散耦合的服务和应用之间标准的集成方式。

传统非面向对象型数据库中,在应用程序访问数据库获取数据时,由于数据库的持久性整体规划通常是不成套的,各种orm(对象关系映射)工具虽然都能进行对象和数据结构之间的转换,但是都存在阻抗不匹配(ormimpedancemismatch)的问题,阻抗不匹配是数据库开发的难题,高达25-33%的开发时间浪费在努力将对象挤压进关系型的持久化。

传统非内存式数据库中,外部程序每次向数据库程序发送读取数据请求,数据库程序即访问一次硬盘将数据读取到内存,访问硬盘读取数据非常耗时,如果频繁的从硬盘读取数据到内存中,耗时将会很大,在非内嵌式数据库中,在数据库项目启动后,数据库与应用程序处于不同的进程中,数据库与应用程序通过通讯协议进行进程间通讯,有一定的通讯开销。



技术实现要素:

本发明的目的在于克服上述技术不足,提出一种面向对象的嵌入式内存数据库,解决上述技术问题。

为达到上述技术目的,本发明的技术方案提供一种面向对象的嵌入式内存数据库,其中:

数据库启动后,将有效的数据一次性加载到内存中,外部访问数据库读取数据是直接在内存中进行读取,数据库与应用程序在项目内部紧密结合,在项目启动后,数据库与应用程序处于同一个进程中,数据库与应用程序以共享内存的方式进行数据交互,应用程序访问数据库读取数据是直接在内存中进行读取,数据库存储的内容为对象。

与现有技术相比,本发明的有益效果包括:数据库启动后,数据库只访问一次硬盘一次性顺序读取所有有效数据到内存中,实现了“只写不读”,极大减少了访问硬盘的开销,应用程序与数据库以共享内存的方式进行数据交互,减少了应用程序与数据库之间的通讯开销,应用程序访问数据库,数据库直接提供对象而非未结构化的数据,避免了程序开发中阻抗不匹配的问题。

附图说明

图1是本发明提供的面向对象的嵌入式内存数据库中record记录数据结构图;

图2是本发明提供的一种面向对象的嵌入式内存数据库的应用程序和数据库数据交互示意图。

附图中:1、进程,2、数据库,3、应用程序,4、内存。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供了一种面向对象的嵌入式内存数据库,其中:

数据库2启动后,将有效的数据一次性加载到内存4中,数据库2与应用程序在项目内部紧密结合,在项目启动后,数据库2与应用程序3处于同一个进程1中,数据库2与应用程序3以共享内存的方式进行数据交互,应用程序3访问数据库2读取数据是直接在内存4中进行读取,数据库2存储的内容为对象;

对象包括:数据表、方法、接口等,其中数据表的数据结构形式为:list<map<key,value>>,其中,list(n)中的n就对应表中的第n行,map<key,value>表示表的一列,key对应表中列的属性名称,value对应表中某列的属性的值,数据表为对象:object{list<map<key,value>>},方法为对象:object{function},接口为对象:object{interface},总体实现的办法为object{object{list<map<key,value>>},object{function},object{interface},…,object{?}},即对象{对象{表},对象{方法},对象{接口},…,对象{?}}。

本发明所述的面向对象的嵌入式内存数据库,数据库2的每一条record记录包括data数据和数据头,data数据部分占record记录的60%~95%,数据头包括补偿位、数据类型位、占用空间记录位,补偿位记录对象类型,数据类型位记录data数据的数据类型,占用空间记录位记录特定数据内容存储所需位数;

传统非内存数据库中每一条record记录包括data数据、数据头(描述数据类型、占用空间大小等信息)、上次更新时间信息、创建时间信息以及其他信息,其中data数据部分仅仅占record记录的5%~25%,data数据部分所占比例较本发明的record记录中data数据部分占比小很多,本发明所述的数据库从最基本的数据单位record记录上节约了大量的存储空间。

本发明所述的面向对象的嵌入式内存数据库,数据库2写入数据时,将内存4中的对象组装成record记录,record记录通过内置对象解析协议序列化为字节流,然后将字节流写入到硬盘文件中,数据库读取数据时,读取硬盘文件,将字节流读取到内存,形成record记录,然后通过内置对象解析协议将record记录反序列化为对象;

进行序列化时,将对象补偿位和数据类型位标记完毕后,计算对象内容需要占用的空间,以位为单位计入数据头中占用空间记录位中,将对象内容以机器码写入data数据段中,然后顺序作为字节流输出;

进行反序列化时,将硬盘文件读取为字节流,顺序读取字节流,读取作为数据头的特定位数的字节流,依据补偿位和数据类型位确定以哪种数据结构读取,依据占用空间记录位顺序读取相应字节,然后组装成对象。

本发明所述的面向对象的嵌入式内存数据库,内置对象解析协议根据record记录的数据头解构或者结构数据。

本发明所述的面向对象的嵌入式内存数据库,数据库2的esb企业服务总线与esb企业服务总线之间热拔插连接,可根据需求随意组合esb。

本发明所述的面向对象的嵌入式内存数据库,数据库2默认与本地文件系统、mysql、oracle、hdfs对接,且设有存储介质对接接口。

与现有技术相比,本发明的有益效果包括:数据库启动后,数据库只访问一次硬盘一次性顺序读取所有有效数据到内存中,实现了“只写不读”,极大减少了访问硬盘的开销,应用程序与数据库以共享内存的方式进行数据交互,减少了应用程序与数据库之间的通讯开销,应用程序访问数据库,数据库直接提供对象而非未结构化的数据,避免了程序开发中阻抗不匹配的问题。

以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1