内存数据库的结构体系

上传人:cn****1 文档编号:504423820 上传时间:2023-01-05 格式:DOC 页数:7 大小:36KB
返回 下载 相关 举报
内存数据库的结构体系_第1页
第1页 / 共7页
内存数据库的结构体系_第2页
第2页 / 共7页
内存数据库的结构体系_第3页
第3页 / 共7页
内存数据库的结构体系_第4页
第4页 / 共7页
内存数据库的结构体系_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《内存数据库的结构体系》由会员分享,可在线阅读,更多相关《内存数据库的结构体系(7页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 内存数据库的结构体系作者:林莹莹作者单位:宁波工程学院(315016)E-mail: 摘 要:本文首先简单介绍了内存数据库的发展历史,使读者了解内存数据库的发展和历史。然后详细介绍了内存数据库的结构体系,主要是它的技术原理和索引规则。最后给出了目前常见的通用内存数据库。关键词:内存数据库, 即时性, 查询效率1. 引 言传统的数据库管理系统把所有数据都放在磁盘上进行管理,所以称做磁盘数据库(DRDB: Disk-Resident Database)。磁盘数据库需要频繁地访问磁盘来进行数据的操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,

2、另一方面受到系统调用(通常通过CPU中断完成,受到CPU时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,就会暴露出很多问题。 2. 内存数据库历史和发展 从上个世纪60年代末到80年代初。在这个时期中,出现了主存数据库的雏形。1969年IBM公司研制了世界上最早的数据库管理系统基于层次模型的数据库管理系统IMS,并作为商品化软件投入市场。在设计IMS时,IBM考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Path。Fast Path是一个支持内存驻留数据的商业化数据库,但它同时也可以很好地支持磁盘驻留数据。在这个产品中体现了主存数据库的主要设计思想,也就是将需要频

3、繁访问,要求高响应速度的数据直接存放在物理内存中访问和管理。在这个阶段中,包括网状数据库、关系数据库等其他各种数据库技术也都逐渐成型。 1984年,D J DeWitt等人提出使用非易逝内存或预提交和成组提交技术作为主存 数据库的提交处理方案,使用指针实现主存数据库的存取访问。 1985年,IBM推出了IBM 370上运行的OBE主存数据库。 1986年,RB Hagman提出了使用检查点技术实现主存数据库的恢复机制。威斯康星大学提出了按区双向锁定模式解决主存数据库中的并发控制问题。并设计出MM-DBMS主存数据库。贝尔实验室推出了DALI主存数据库模型。 1987年,ACM SIGMOD会议

4、中提出了以堆文件(HEAP FILE)作为主存数据库的数据存储结构。Southern Methodist大学设计出MARS主存数据库模型。1988年普林斯顿大学设计出TPK主存数据库。1990年普林斯顿大学又设计出System M主存数据库。随着互联网的发展,越来越多的网络应用系统需要能够支持大用户量并发访问、高响应速度的的数据库系统,主存数据库市场成熟。半导体技术快速发展,半导体内存大规模生产,动态随机存取存储器(DRAM)的容量越来越大,而价格越来越低,这无疑为计算机内存的不断扩大提供了硬件基础,使得主存数据库的技术可行性逐步成熟。1994年美国OSE公司推出了第一个商业化的,开始实际应用

5、的主存数据库产品Polyhedra。1998年德国SoftwareAG推出了Tamino Database。1999年日本UBIT会社开发出XDB主存数据库产品。韩国Altibase推出Altibase。2000年奥地利的QuiLogic公司推出了SQL-IMDB。2001年美国McObject推出eXtremeDB。加拿大Empress公司推出EmpressDB。3. 内存数据库的技术原理3.1. 内存数据库与内存共享技术的区别在数据库技术中,目前主要有两种方法来使用大量的内存。一种是在传统的数据库中,增大缓冲池,将一个事务所涉及的数据都放在缓冲池中,组织成相应的数据结构来进行查询和更新处理

6、,也就是常说的共享内存技术,这种方法优化的主要目标是最小化磁盘访问。另一种就是内存数据库技术,就是干脆重新设计一种数据库管理系统,对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存,这种技术近乎把整个数据库放进内存中,因而会产生一些根本性的变化。两种技术的区别如下表:内存数据库内存共享技术成熟度成熟的商业软件单一用户定制化开发通用的商业软件,采用开放标准和通用接口专用软件,封闭系统扩展性支持IPC,TCP/IP,DOMAIN等多种的连接方式,应用可以很方便地扩展。一般只支持IPC方式,应用和内存必须严格绑定在同一台主机上,难以扩展其他应用安全性系统或主机异常

7、情况处理的数据和历史数据不会丢失,可以进行恢复,运用检查点机制进行数据备份和恢复。提供完备的日志级别保证数据的完整性和安全性。处理的数据以及历史记录会丢失,需要重新数据导入。不间断服务数据可以分布在不同的主机系统上使用,可以自动切换。数据无法自动切换,影响系统的稳定性。进程故障通过回滚和日志文件可以恢复数据。不能够恢复数据,当前处理的数据会完全丢失,为处理此故障需要手工处理,效率低。兼容性支持开放业界标准,如SQL,JDBC和ODBC,开发简单方便不支持SQL语句,不支持ODBC,代码复制,不利于软件开发和系统的稳定运行。稳定性由数据库系统提供内存的管理,降低了应用开发的复杂度,增加了系统的稳

8、定性。需要通过应用程序来处理复杂的内存管理过程,容易产生过多的内存碎片,导致系统的不稳定。开发复杂度(开发接口)提供标准应用的开发接口,大大缩短了开发周期,原来在磁盘数据库下做的运用程序可以方便移植。不提供标准开发接口,开发效率低。内存数据库系统带来的优越性能不仅仅在于对内存读写比对磁盘读写快上,更重要的是,从根本上抛弃了磁盘数据管理的许多传统方式,基于全部数据都在内存中管理进行了新的体系结构的设计,并且在数据缓存、快速算法、并行操作方面也进行了相应的改进,从而使数据处理速度一般比传统数据库的数据处理速度快很多,一般都在10倍以上,理想情况甚至可以达到1000倍。 而使用共享内存技术的实时系统

9、和使用内存数据库相比有很多不足,由于优化的目标仍然集中在最小化磁盘访问上,很难满足完整的数据库管理的要求,设计的非标准化和软件的专用性造成可伸缩性、可用性和系统的效率都非常低,对于快速部署和简化维护都是不利的。3.2. 与磁盘数据库同步把实时数据值保存到历史数据库的过程所采用的方式与实时内存数据库实时化过程所采用的方式是一个相反的过程。考虑到不同的点可以设置不同的存储周期,若单个点定义存盘,则在历史数据库中该点对应一个表,当点数较多时,数据库中的表就会很多,这样很不合理。如果所有的点对应一个表进行存储,那么将造成表的臃肿,同时由于存储数据的存储周期不同会使很多字段为空值。 因此, 应首先按照不

10、同的存储周期把点进行分组,然后每一组对应一个表来对数据进行存储。由于需要对点进行分组,所以历史数据库中数据点的表结构是不固定的,需要组态生成。随着同一存储周期的点的增加或减少,表的字段也可以动态地增加或减少。系统中同一存储周期的同一类型点存储表建立的具体实现过程为:1访问系统中的ODBC;2设定连接的数据库;3设定访问该数据库的数据源名称;4设定要生成的存储表的名称;5设定该表的存储周期;6访问实时内存数据库定义的该类型表; 7选择该类型表中与第(5)步中设定的存储周期相同的点作为第(4)步中要生成的表的字段;8生成存储表; 9生成存储表成功后,向存储管理表中添加相应的记录。3.3. 索引规则

11、数据库中的索引与书籍中的索引类似。 在一本书中, 利用索引可以快速查找所需信息,而无需阅读整本书。在数据库中,索引使数据库程序无需对整个表进行扫描便可以在其中找到所需的数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是一张表,其中注明了表中包含各个值的“行”所在的存储位置。创建索引可以大大提高应用的系统性能、可以加快数据检索速度、可以加速表与表之间的连接、可以减少分组和排序的时间。3.4.1 数据库的索引原则 索引有助于提高检索的性能,但索引的增加也有其不利的一面,过多的索引会导致系统效率的降低,这是因为创建和维护索引需要耗费时间,同时需要占用一定的物理空间;数据进

12、行正常维护(添加、删除和修改)时,索引也要动态维护,因此会降低数据的维护速度。在数据库开发过程中,若对具体的应用考虑不够周全,在设计索引时存在缺陷或索引类型选择不当,反而会影响系统的应用效率。因此,在数据库的应用过程中,从设计阶段到应用实施阶段,都要考虑索引优化问题,通过合理的设计、选择和调整索引来优化数据库性能。首先,在设计初期,应考虑在相应列上创建索引的必要性,一般应遵循以下原则:1在很少使用的列上不要创建索引;2在具有极少数量的不同值的列上不要创建索引;3在类型为text、image和bit等类型的列上不要创建索引;4在UPDATE的性能远大于SELECT性能的列上不要创建索引。其次,在

13、设计阶段还要考虑如何选择合理的索引技术。尽管索引都能提高检索和更新数据的速度,但不同的索引对于特定的任务可能有更高的效率。必须要根据数据和相关检索任务的特点来选择是采用聚集索引还是非聚集索引。在设计阶段,应根据数据库中关系表结构(数据特征)和相关应用行为(动作特征)来设计索引。但由于在数据库工程应用中,数据之间的联系往往非常复杂,实际应用也是复杂多变的,这将导致在设计阶段所设计的索引并不一定是最符合实际数据操作所需的。因此,在应用过程中,必须通过追踪、分析索引的相关信息,适当调整索引来优化索引性能,从而提高数据库应用性能。3.4.2 实时内存数据库数据的索引 普通的数据结构,其查找方法都是建立

14、在“比较”的基础上,一般都是通过比较关键字是否匹配来确定是否找到相应的记录,理想的情况是不经过任何比较,一次存取便能得到所查记录,那就必须在记录的存储位置和其关键字之间建立一个确定的对应关系 f,使每个关键字和结构中的一个唯一的存储位置相对应。因而,查找时就可以根据这个对应关系f找到给定值K的f(K)。为了查找和检索方便,采用二级索引结构的方式。第一级索引为功能块索引数据结构。按模拟量、数字量还是字符量这3种数据结构分类,功能块索引数据结构中有功能块数据结构的索引标识,有指向功能块数据结构的指针,而且存储空间固定。第二级索引以存储在实时数据库中的对象本身来建立索引,以提高定位查找速度。为了方便

15、多元化查找,可以节点号或节点名作为关键字来建立索引,因为节点号和节点名都是唯一的。4. 目前几种常见的通用内存数据库eXtremeDBeXtremeDB实时数据库是McObject公司的一款特别为实时与嵌入式系统数据管理而设计的数据库,只有50K到130K的开销,速度达到微秒级。eXtremeDB完全驻留在主内存中,不使用文件系统(包括内存盘)。eXtremeDB采用了新的磁盘融合技术,将内存拓展到磁盘,将磁盘当做虚拟内存来用,实时性能保持微秒级的同时,数据管理量在32BIT下能达到20G。Oracle TimesTenOracle TimesTen是Oracle从TimesTen公司收购的一个内存优化的关系数据库,它为应用程序提供了实时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。Oracle TimesTen可作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对完全位于物理内存中的数据存储区进行操作。SolidDBSolid Information Technology 成立于 1992 年,全球总部位于加州Cupertino,Solid数据管理平台将基于内存和磁盘的全事务处理数据库引擎、载体

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号