快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

轻量级内存数据库研究

请联系QQ:1793040 索取软件

展开文字

<身体>

1 \\ n 背景

改革开放以来,随着中国各行各业信息化的飞速发展,中国的军事信息化也取得了长足的进步。随着从军事日常到战时,从后到前,从上层到基层的所有军事行动,随着信息化的深入以及命令功能的电子化和流量的增加,使用大型磁盘数据库作为存储方法的现有状态已不复存在。不再完全满足电子战,无人战和闪电战的海量数据和快速访问数据。需求。迫切需要一种实现快速数据访问的机制。

从微观上讲,当前应用程序可能根本不使用数据库,而是将数据保存在文本文件中,但是随着需求变得越来越复杂且数据越来越大,应用于数据存储的处理逻辑也变得越来越多。将会变得越来越复杂,运行效率会越来越低。因此,如果有一种数据存储机制可以快速,方便和透明地访问本地文件,则可以解决应用程序开发的问题。

本文以此为起点设计可以快速响应的轻量级内存数据库系统,并说明了系统的主要关键技术和主要链接的设计。

2 \\ n 概述

2.1 \ 轻量级内存数据库的定义

轻量级内存数据库是一个相对较新的研究领域。当前,没有针对轻量级内存数据库的权威和公认的定义。它的主要特征是其主副本或”工作版本”驻留在内存中。轻量级内存数据库是在传统磁盘数据库技术的基础上开发的。它是将数据库保留在内存中,以避免通过缓冲区管理器间接访问数据,从而使轻量级的内存数据库比传统的磁盘数据库更好。该系统具有更好的响应时间和吞吐量。当前,国外已经有轻量级内存数据库的产品,但是没有一种产品可以像Oracle,Sybase,SqlServer,DB2这样被业界认可和广泛使用。大多数轻量级内存数据库仍在实验室中在研究阶段,轻量级内存数据库技术的应用还不太广泛,原因是有许多技术问题需要进一步研究。

2.2 \ 轻量级内存数据库的优势

传统的基于磁盘的关系数据库的特性已被业界广泛接受,并且轻量级内存数据库是一种新的事务,它不能替代传统的关系数据库,但是在某些特定方面要优于传统的关系数据库。场合。该数据库具有体积小,管理成本低,效率高的特点。相对于传统的关系数据库,轻量级的内存数据库的主要优点如下所述:

1)由于内存和磁盘的访问效率之间存在较大差距,因此内存数据库的主内存的访问速度约为纳秒,磁盘的访问速度约为毫秒

2)因为省略了对磁盘访问的I/O调用,所以内存数据库主要用于内存中的指针操作,因此大大减少了对CPU指令的调用;

3)事务处理不需要I/O,大大提高了系统性能;

4)不再需要缓冲区管理器,从而消除了磁盘和内存之间的数据复制开销;

5)在数据组织和管理中,指针被广泛使用,从而简化了内存管理并减少了空间开销

3 \\ n 轻量级内存数据库的设计

轻量级内存数据库是一种数据库。它的主要功能与传统的关系数据库相同,并且还完成了数据的组织,访问和维护功能。该系统旨在有效利用CPU和内存空间,并具有常规数据库的主要管理功能,包括数据DML,DDL,数据库事务,备份,恢复等。就数据标准而言,它符合标准的SQL92标准;具有一定的安全性;支持大多数数据类型;接口和用途与普通数据库相同,可以使用ADO编程;就性能而言,内存数据库通过映射用户进程将整个数据库直接映射到其本地地址空间。直接访问数据避免了当今典型的磁盘商业数据库中昂贵的远程过程调用与缓冲区管理器之间的交互。

3.1 \ 建筑

轻量级内存数据库的系统架构如下图所示:

\

3.2 \\ n 功能模块说明

3.2.1 应用层

应用程序层主要包括所有使用轻量级内存数据库作为数据处理机制的应用程序。这些应用程序最初可能使用大型关系数据库来存储数据,但是大型数据库的运行效率可能无法满足应用程序的需求。可能是文件最初存储了,但是文件的存储方法更加复杂,并且数据存储的逻辑应由其自己处理。使用本文的轻量级内存数据库可以解决这些问题,从而可以提高效率并减少数据存储的逻辑。

3.2.2 外部接口层

为了提高轻量级内存数据库的可用性,必须在外部提供C和C ++访问接口。当前,最简单,最方便的数据库访问接口是ADO接口。因此,此内存数据库必须提供基于OLE DB接口,DELPHI,Visual C ++,VB程序的OLE DB接口,VB程序也可以轻松使用内存数据库。

C/C ++和OLE DB接口下面是SQL解析器,它负责完成对SQL92的支持功能,特别是将SQL分解为可以在内存数据库中识别的标签,然后执行数据。操纵。

3.2.3 交易管理

轻量级内存数据库的事务处理包括事务预分析,并发控制,调度管理和恢复机制。内存数据库的重要特征是高效。因此,除了完成事务逻辑一致性和时序一致性外,这里的事务处理除了其功能外,还必须具有很高的效率。

(1)事务调度。内存数据库系统是用于处理高效工作负载的事务处理系统,主要表示必须满足事务的持续时间。包括各种资源的事务调度,各种事务所占用的CPU调度以及多个并发操作之间的资源调度,例如数据,I/O和内存。

(2)并发控制。像传统数据库一样,内存数据库中的事务同时运行并访问共享数据。因此,彼此之间可能会相互干扰,从而导致诸如更新丢失,数据不一致和级联回滚之类的问题。并发控制是为了控制并发事物之间的交互,以便不破坏实时数据库的一致性。

此系统的并发控制基于锁定机制。锁定对象的大小称为锁定的粒度。通常,可以锁定整个数据库,关系,页面或记录。如果锁的粒度小,则并发度高,维护锁的开销也大;锁的粒度大,并发性低,维护锁的开销小。锁的类型为共享锁S和排他锁X。某些系统引入了意图锁的概念来解决多粒度锁的问题。锁定任何节点时,必须首先向其上层节点添加意图锁,然后相应地增加意图共享锁IS和意图排他锁IX。为了易于使用,将共享锁和排他锁组合在一起以形成SIX锁。锁定应用程序应自上而下;释放锁时,应自下而上。

(3)恢复管理。指在事务失败时将数据库还原到正确状态的工作

3.2.4 数据存储层

数据存储层的主要功能是处理对数据的访问,包括内存数据库本身的状态和应用程序数据。它包括数据定义,数据访问,数据处理,日志管理,配置文件管理,T树索引等。模块。

(1) 数据定义:该模块的主要功能是管理内存数据库的数据字典,包括数据字典的插入,删除和修改;

(2) 数据访问:该模块负责快速访问用户数据,包括用户数据的添加,删除,修改和查询操作;

(3) 数据处理:该模块用于用户数据类型转换,数据合法性检测,主键唯一性检查,约束冲突等功能;

(4) 日志管理:引入日志管理的主要目的是提高轻量级内存数据库的可靠性,以便在应用程序崩溃时可以执行恢复操作,从而将内存数据库记录在日志中。和数据完成。

(5) 配置文件管理:此系统中的配置文件是保存数据库的操作策略参数的文件。

(6) T树索引管理:T树是适用于内存数据库系统的索引结构。该索引被提出以适合主存储器的存储特性。 T树是一种平衡的二叉树,结合了B树和AVL树的特征。 T树中有三种不同类型的节点。具有两个子树的节点称为内部节点。有一个孩子的节点称为半叶节点;没有子节点的节点称为叶节点。对于每个内部节点N,除了包含一些元素和一些控制信息外,还始终有一个左(右)子指针指向的左(右)子树。当T树中的节点以升序排列时,该节点中最左边的元素是最小的元素,而该节点中最右边的元素是最大的元素。左(右)子树节点中的任何元素都小于(大于或等于)该节点的最小(大)元素。该系统使用T树来管理和存储索引,因此可以大大提高内存数据库访问的效率。

3.2.5 资源管理

资源管理包括CPU管理,时间管理,内存管理和I/O调度管理。由于数据库事务是应用程序访问数据库的核心主题,因此资源管理的特定功能也将散布在事务处理的各种功能中。资源管理之所以在此处包括I/O调度管理,是因为内存数据库还包含一个操作日志文件。同时,为了防止在内存数据库处于非活动状态时丢失数据,这些文件必须存储在磁盘上,并且这些文件必须保存在物理磁盘中,因此,内存数据库也有I/O调度的问题。

3.2.6 数据实体层

数据实体是所有数据信息的存在形式,包括存储在内存中的内存数据字典和内存数据,以及存储在磁盘上的日志文件,数据文件和内存数据库配置文件。

3.2.7 操作控制

操作控制是指为了使内存数据库正常运行所必须具有的功能,包括内存数据库的加载,卸载和线程管理。

(1) 数据库加载:内存数据库不需要将所有数据都放置在内存中,而仅要求数据的”工作版本在内存中。数据加载是为了满足事务的正常操作。它也是必须根据一些参数进行判断。

(2) 数据库卸载:此模块的功能是在完成内存数据库的任务后,将内存数据固化到磁盘存储中。

(3) 线程管理:内存数据库中的线程包括全局状态监视线程,用户事务线程,日志线程等。由于内存中数据库通常以组件和动态链接库的形式存在,而不是作为单独的进程运行,因此它们被嵌入并在其他应用程序中运行。因此,有必要根据事件管理内存数据库的线程。

4 \ 轻量级内存数据库的关键技术

由于轻型内存数据库的研究和实现涉及许多技术,包括数据组织,数据保护,内存数据库中的索引,日志记录策略,日志I/O瓶颈,检查点策略和数据库重新启动加载,并发控制,SQL解析和汇编等。由于篇幅和布局的原因,在此不再赘述。下面我们将仅说明内存数据库和T树索引的加载。

4.1 \ 轻量级内存数据库加载技术

该系统使用同步加载技术来使事务处理和大多数数据加载同步。这样可以大大减少内存数据库的启动等待时间。

同步加载策略将传统数据库技术与内存数据库技术相结合。目的是使内存数据库能够尽快响应事务请求,减少等待数据库加载而无需事务处理的时间,并使系统的行为类似于基于磁盘的数据库系统。加载部分数据后,它可以响应用户的请求。同步加载整个数据库后,可以有效访问内存数据库的内存。也就是说,该技术继承了更快的加载特性。基于磁盘的数据库,并保留了内存数据库对事务的快速响应的优点。

这是加载线程的算法。

1)申请锁定数据库加载位图。

2)顺序检查数据库加载位图。如果发现(某些连续的)页面不在内存中,请重复以下操作,直到这些连续的页面在内存中为止。

释放数据库加载位图的锁。

b。获取负载锁定。

c。对于这些连续的页面,当仍然有未加载的页面时。

a)申请锁定数据库加载位图。

b)重新检查连续页面的加载状态,以获取未实际加载的页面范围

c)释放数据库加载位图的锁定。

d)如果仍有页面尚未加载,请按顺序加载它们。

d。申请锁定数据库加载位图。

e。更新数据库加载位图以反映最新的加载情况。

f。释放数据库加载位图的锁。

g。释放负载锁

h。申请锁定数据库的加载位图

3)释放数据库加载位图锁。

4.2 \ T树索引结构实现技术

如前所述,该系统使用T树来管理轻量级内存数据库的存储空间。

我们定义了一个类TTree来管理轻量级内存数据库的空间。它的管理范围包括第32个数据库页面之后的所有数据库空间。该区域中的每个可用空间都是T树(fTtreeNode类)的某个节点内的元素。根据可用空间的起始地址,整个TTree的元素按升序排列。另外,每个fTtreeNode中的控制信息还包含当前节点的左子树,右子树和最长的可用空间。这些信息用于方便的空间分配。 fTtreeNode的成员变量如下:

离开offs_t; //指向左侧子树

offs_t leftMaxLength; //左侧子树中最大可用空间的大小

offs_t对; \汤匙//指向右侧子树的指针。

offs_t rightMaxLength;//右侧子树中的最大可用空间

offs_t currMaxLength; //此节点所有元素之间的最大空间大小

nat2 nItems; //此节点的有效元素数

int1余额; //此节点作为根的余额是右子树中的层数比左子树中的层数/p>

fTTreeItemitem [FREE_TREE_PAGESIZE];//存储元素的数组

其中,左和右是数据库的偏移量。根据数据库所在的内存的起始地址和偏移量,可以找到左(右)子树的根节点。 FREE_TREE_PAGESIZE是每个fTtreeNode最多具有的fTTreeItem的数量。数。

TTree是根据T-tree的思想构造的,因此也有平衡操作,但有其特殊性。首先,它存储的元素是可用空间的开始位置和可用空间的长度,而不是记录的RID(或对象标识OID);另外,由于T树仅用于数据库的可用空间管理,因此仅需要分配空间和释放空间的操作,因此没有搜索操作,仅存在插入和删除操作。它的插入和删除操作与常规T树不同。插入是因为数据库释放了一定的空间(起始位置和长度),所以在插入过程中,如果与自由空间相邻的前后区域已经在TTree中,则将该空间的相应元素插入到TTree中。自由空间树,并且这些自由区域需要合并,并且三个元素可以组合为一个,或者两个元素可以组合为一个。

5 \\ n 轻量级内存数据库的实现

由于该项目用户的特殊需要(即,绝大多数应用程序直接连接到Oracle数据库,并且绝大多数应用程序基于C/S架构,所以ADO访问Oracle’的胖客户端应用程序),以便在引入内存数据库时允许用户尽可能节省成本和时间。在设计轻量级的内存数据库时,我们必须关注以下问题:内存数据库和Oracle的便利性,内存数据库的数据类型与Oracle一致内存和SQL支持的SQL语法的一致性。 Oracle的内存数据库;内存数据库访问接口与Oracle的一致性。下面介绍这些问题的实现:

5.1 \ 数据类型实现

轻量级内存数据库实现了大多数Oracle数据类型,包括:Number,Int,Integer,Varchar,Varchar2,char,Date,Time,DateTime,Boolean,字符串。

当然,作为具有高效率要求的内存数据库,还存在不受支持的类型。这里主要指的是二进制大数据类型Blob,Long Raw,Raw,BFile的四种数据类型,因为这些二进制大对象的处理原本很耗时,并且内存数据库的物理存储容量为固定,它不适合支持二进制大对象类型,但是实际需求也相同。也就是说,如果用户使用这些类型的数据,则用户将改为使用Oracle数据库。

5.2 支持SQL92

轻量级内存数据库支持标准SQL92的大多数功能:支持的对象类型包括表,索引,触发器和视图;支持的对象类型包括表,索引,触发器和视图。支持的数据库DML数据库操作语言包括INSERT,DELETE,UPDATE,SELECT; DDL数据定义,支持Alter Table,Create Table,Drop Table,Alter View,Create View,Drop View,Alter Index,Create Index,Drop Index;支持BEGIN交易,

COMMITTransaction,ROLLBACK Transaction和其他命令;就约束而言,它支持诸如UNIQUE,NOTNULL,CHECK和Primary Key之类的关键字。

5.3; OLE DB接口的实现

轻量级内存数据库通过实现标准OLE DB提供程序(内存数据库)来实现对ADO常规功能的支持。以下是已实现的OLE DB接口和接口图:

5.4。 性能测试情况:

在测试了大量数据之后,将使用测试工具LoadRunner7.8插入,删除,查询和修改具有100,000条记录的轻量级数据库。操作结果如下:

插入操作1条记录:23微秒;

选择操作1的记录:16微秒;

更新操作1记录:10微秒;

删除操作1条记录:93微秒;

可以看出,与第二级Oracle数据库相比,此内存数据库的效率提高了许多数量级。

6 \\ n 结论

通过对轻量级内存数据库项目的研究,我们对内存数据库的原理有了更深入的了解;通过数据库的实现,我们对内存数据库的关键技术有了更全面的了解。测试和使用表明,与其他内存数据库相比,内存数据库在功能,性能和易用性方面均具有巨大优势。目前,内存数据库已在命令应用程序软件中用作数据缓冲区的核心。同时,该单元的虚拟数据库项目也以内存数据库作为虚拟数据视图的数据库来实现。

相关推荐

咨询软件
 
QQ在线咨询
售前咨询热线
QQ1793040