CN106919666A - 一种面向对象的嵌入式内存数据库 - Google Patents
一种面向对象的嵌入式内存数据库 Download PDFInfo
- Publication number
- CN106919666A CN106919666A CN201710085647.2A CN201710085647A CN106919666A CN 106919666 A CN106919666 A CN 106919666A CN 201710085647 A CN201710085647 A CN 201710085647A CN 106919666 A CN106919666 A CN 106919666A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- record
- application program
- oriented
- 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
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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
Abstract
本发明公开了一种面向对象的嵌入式内存数据库,数据库启动后,将有效的数据一次性加载到内存中,外部访问数据库读取数据直接在内存中进行读取,数据库与应用程序在项目内部紧密结合,在项目启动后,数据库与应用程序处于同一个进程中,数据库与应用程序以共享内存的方式进行数据交互,数据库存储的内容为对象。有益效果:数据库启动后,数据库只访问一次硬盘一次性顺序读取所有有效数据到内存中,实现了“只写不读”,极大减少了访问硬盘的开销,应用程序与数据库以共享内存的方式进行数据交互,减少了应用程序与数据库之间的通讯开销,应用程序访问数据库,数据库直接提供对象而非未结构化的数据,避免了程序开发中阻抗不匹配的问题。
Description
技术领域
本发明涉及计算机数据库技术领域,尤其是涉及一种面向对象的嵌入式内存数据库。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
ESB:企业服务总线,从面向服务体系架构(Service-OrientedArchitecture,SOA)发展而来,是传统中间件技术与XML、Web服务等技术结合的产物,ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务级别上动态的互连互通,是一种在松散耦合的服务和应用之间标准的集成方式。
传统非面向对象型数据库中,在应用程序访问数据库获取数据时,由于数据库的持久性整体规划通常是不成套的,各种ORM(对象关系映射)工具虽然都能进行对象和数据结构之间的转换,但是都存在阻抗不匹配(ORM Impedance Mismatch)的问题,阻抗不匹配是数据库开发的难题,高达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对接,且设有存储介质对接接口。
与现有技术相比,本发明的有益效果包括:数据库启动后,数据库只访问一次硬盘一次性顺序读取所有有效数据到内存中,实现了“只写不读”,极大减少了访问硬盘的开销,应用程序与数据库以共享内存的方式进行数据交互,减少了应用程序与数据库之间的通讯开销,应用程序访问数据库,数据库直接提供对象而非未结构化的数据,避免了程序开发中阻抗不匹配的问题。
以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。
Claims (6)
1.一种面向对象的嵌入式内存数据库,其特征在于,数据库启动后,将有效的数据一次性加载到内存中,外部访问所述数据库读取数据是直接在内存中进行读取,所述数据库与应用程序在项目内部紧密结合,在项目启动后,所述数据库与所述应用程序处于同一个进程中,所述数据库与所述应用程序以共享内存的方式进行数据交互,所述应用程序访问所述数据库读取数据是直接在内存中进行读取,所述数据库存储的内容为对象。
2.如权利要求1所述的面向对象的嵌入式内存数据库,其特征在于,所述数据库的每一条record记录包括data数据和数据头,数据头包括补偿位、数据类型位、占用空间记录位,补偿位记录对象类型,数据类型位记录data数据的数据类型,占用空间记录位记录特定数据内容存储所需位数。
3.如权利要求1所述的面向对象的嵌入式内存数据库,其特征在于,所述数据库写入数据时,将内存中的对象组装成record记录,record记录通过内置对象解析协议序列化为字节流,然后将字节流写入到硬盘文件中,所述数据库读取数据时,读取硬盘文件,将字节流读取到内存,形成record记录,然后通过内置对象解析协议将record记录反序列化为对象。
4.如权利要求3所述的面向对象的嵌入式内存数据库,其特征在于,内置对象解析协议根据record记录的数据头解构或者结构数据。
5.如权利要求1所述的面向对象的嵌入式内存数据库,其特征在于,所述数据库的ESB与ESB之间热拔插连接,可根据需求随意组合ESB。
6.如权利要求1所述的面向对象的嵌入式内存数据库,其特征在于,所述数据库默认与本地文件系统、MySQL、Oracle、HDFS对接,且设有存储介质对接接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710085647.2A CN106919666A (zh) | 2017-02-17 | 2017-02-17 | 一种面向对象的嵌入式内存数据库 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710085647.2A CN106919666A (zh) | 2017-02-17 | 2017-02-17 | 一种面向对象的嵌入式内存数据库 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106919666A true CN106919666A (zh) | 2017-07-04 |
Family
ID=59454673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710085647.2A Pending CN106919666A (zh) | 2017-02-17 | 2017-02-17 | 一种面向对象的嵌入式内存数据库 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106919666A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078632A (zh) * | 2019-12-27 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | 一种文件数据的管理方法及装置 |
CN113064668A (zh) * | 2021-03-26 | 2021-07-02 | 中国航空无线电电子研究所 | 嵌入式平台可执行文件数据在线加载控制系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373474A (zh) * | 2008-09-02 | 2009-02-25 | 北京开拓天际信息技术有限公司 | 海量数据实时处理架构及用于该架构的实时随需处理平台 |
CN102880678A (zh) * | 2012-09-11 | 2013-01-16 | 哈尔滨工程大学 | 一种嵌入式实时内存数据库 |
CN104615618A (zh) * | 2014-05-21 | 2015-05-13 | 北方信息控制集团有限公司 | 一种嵌入式内存数据库的实现方法 |
-
2017
- 2017-02-17 CN CN201710085647.2A patent/CN106919666A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101373474A (zh) * | 2008-09-02 | 2009-02-25 | 北京开拓天际信息技术有限公司 | 海量数据实时处理架构及用于该架构的实时随需处理平台 |
CN102880678A (zh) * | 2012-09-11 | 2013-01-16 | 哈尔滨工程大学 | 一种嵌入式实时内存数据库 |
CN104615618A (zh) * | 2014-05-21 | 2015-05-13 | 北方信息控制集团有限公司 | 一种嵌入式内存数据库的实现方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078632A (zh) * | 2019-12-27 | 2020-04-28 | 珠海金山网络游戏科技有限公司 | 一种文件数据的管理方法及装置 |
CN113064668A (zh) * | 2021-03-26 | 2021-07-02 | 中国航空无线电电子研究所 | 嵌入式平台可执行文件数据在线加载控制系统 |
CN113064668B (zh) * | 2021-03-26 | 2024-03-15 | 中国航空无线电电子研究所 | 嵌入式平台可执行文件数据在线加载控制系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228817A (zh) | 数据处理方法、装置和系统 | |
US20180107725A1 (en) | Data Storage Method and Apparatus, and Data Read Method and Apparatus | |
EP2778972B1 (en) | Shared cache used to provide zero copy memory mapped database | |
CN102509012A (zh) | 将电子病历的内容映射电子病历标准数据库的方法 | |
US20110004638A1 (en) | Attributed key-value-store database system | |
CN107526743A (zh) | 用于压缩文件系统元数据的方法和设备 | |
CN103019689A (zh) | 通用的对象序列化的实现方法 | |
TW202025057A (zh) | 欄位更新方法及裝置、電子設備 | |
TWI724570B (zh) | 資料結構的讀取及更新方法、裝置、電子設備及儲存媒體 | |
US10579680B2 (en) | Using a B-tree to store graph information in a database | |
CN106919666A (zh) | 一种面向对象的嵌入式内存数据库 | |
WO2016188280A1 (zh) | 数据库分表的写入方法及装置 | |
CN1987775A (zh) | 用于对事件进行处理的方法和设备 | |
US20140025643A1 (en) | Maintaining object and query result consistency in a triplestore database | |
CN105847329B (zh) | 一种基于股票数据服务器的管理设备及方法 | |
CN102129468B (zh) | 一种可定制集群状态展现的方法 | |
CN101261639A (zh) | 数据库对象的共享 | |
EP2479675A1 (en) | Database management device using key-value store with attributes, and key-value-store structure caching-device therefor | |
CN115344270A (zh) | 数据处理方法及装置、存储介质及电子设备 | |
US7324994B2 (en) | Uniquely identifying an object before it is stored in a database | |
CN110297835A (zh) | 一种针对表单的关系数据库表创建方法 | |
CN116431654B (zh) | 基于湖仓一体化的数据存储方法、装置、介质和计算设备 | |
Engle et al. | The Case for NoSQL on a Single Desktop | |
CN111241042B (zh) | 一种基于Etcd的分布锁实现方法、系统及设备 | |
JP4850581B2 (ja) | データ処理システム |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170704 |