ITPub博客

首页 > 数据库 > 数据库开发技术 > 简析主存数据库系统MMDB

简析主存数据库系统MMDB

原创 数据库开发技术 作者:windyf 时间:2007-12-11 11:09:47 0 删除 编辑

简析主存数据库系统MMDB

主存数据库系统(MMDB)在主存中管理整个数据库或者数据库的一部分,所以可以直接访问数据而不用访问磁盘,这样主存数据库就具有了高性能的事务处理能力。在英语中,主存数据库可以叫做main-memory database,memory residence database或者in-memory database等等,所有这些英文名称的主要的概念都是数据库的主体保存在内存中。

另一方面,在实时应用领域对于系统相应时间的要求非常高,因此在实时系统中开发和使用了主存来管理数据,但是在这些系统中存在以下问题:

-因为现有的实时系统的开发都是针对于特定的应用(都是特别设计的系统),系统的通用性很低,同样数据库管理的概念很差。

-这样的数据库系统不能同时提供满足工业标准的编程接口,实时事务处理能力和可扩展的数据库管理结构。

-在这样的系统中很难灵活的反映客户的要求或者用于其他的应用领域,也就是说由于受特定的应用的限制,这种系统的可伸缩性、可用性和系统的效率都非常低。

这样的实时系统的开发需要很大的费用,而且这样的特定设计的实时系统很难满足完整的数据库管理的要求,为此而进行的开发的费用也是很大的。另外,Altibase之前的关系型数据库系统都是针对于磁盘数据设计的,由于在这些数据库上有很多应用,因此很难对这些数据库进行重新设计。

为什么现在用MMDB?

MMDB的理论基础是在1980年代后期通过积极的研究和开发形成的。当时,32位处理器最大支持4GB地址空间,但是由于操作系统和软件操作的限制,32位地址空间实际上只有2GB左右(现在的数据库的大小)。然而,64位的主存数据库仅受系统中配置的物理内存的数量的限制,64位系统支持最高100GB的内存容量。但由于经济和技术的限制,投入实际应用的主存数据库系统产品很少,只有一些大学和研发机构开发的试验产品。

(1) 存储器价格的下降

半导体技术的高速发展使DRAM的成本戏剧性的下降,在过去的20年中,DRAM的成本下降了10倍。1986年时1GB内存的成本是40000美元,但是现在还不到5000美元,在一些服务器上还不到2500美元。IDC预测存储器的价格还会持续下降。考虑到这种趋势,在数据库解决方案中引入主存数据库是可行的,这正被越来越多的人所接受。

(2) 64位系统的关键作用

32位系统只能访问大约2GB的内存,这限制了系统中主存数据的存储。另一方面,64位系统可以访问最多160亿GB的内存,所以在64位系统中的主存数据存储容量的限制仅仅是可以被安装到系统中的物理内存的数量。主存数据库不受地址访问空间的限制。

(3) 数据库管理技术的提高

在实际应用中用户通常会有两个考虑:主存数据库的稳定性和数据库的大小会不会有限制。商业主存数据库已经应用于各种高科技领域而且具有和传统基于磁盘数据库同样的稳定性。

为什么MMDB快?

如果磁盘数据库的内存缓冲区足够大,将整个数据库都放在缓冲区中,那么磁盘数据库的性能可以和MMDBMS一样高吗?磁盘数据库的UPDATE操作需要和磁盘同步数据,但是SELECT操作可以得到差不多的效率。但是由于磁盘数据库查询处理算法的复杂性,主要是为了优化磁盘访问,磁盘系统还不能得到我们希望的高性能。主存数据库系统高性能的秘密在于它的数据库管理技术和数据库系统的架构。

(1) 数据访问的成本

磁盘的价格低于存储器的价格,存储器的价格低于CPU CACHE的价格,换句话说,速度越快,价格越高。另一方面,在处理速度方面,磁盘的访问时间位毫秒级,而内存的方位时间为数十纳秒的数量级。要想得到高性能仅仅将数据库存储在主存中是不够的,还需要高效内存结构技术,高速缓存数据管理技术和基于主存的查询优化技术。

(2) 主存和磁盘的地址映射

假定磁盘DBMS管理的所有数据主要的存在于磁盘中,记录的访问是通过RID(record identifier)实现的。因此要访问一个记录,需要地址映射将RID转换为内存的物理地址。内存物理地址和数据库地址的地址映射时间非常短,但是在高速数据处理的情况下是不能忽略的。主存DBMS直接通过内存指针访问数据库,因为没有了地址映射的时间,可以提高数据库的性能。同样,在向磁盘中备份数据库和生成用于恢复的日志时也需要地址映射时间。根据使用的地址映射技术效率的区别和地址映射次数的多少,主存数据库的性能会有很大的不同。

(3) 内存优化的索引结构

磁盘数据库系统的典型的索引技术是B-tree索引。B-tree结构的主要目的是减少完成数据文件的索引查找所需要的磁盘IO的数量。B-tree通过控制节点内部的索引值达到这个目的,在节点中包含尽可能多的索引条目(增加一次磁盘IO可以访问的索引条目)。另一方面,T-tree是针对主存访问优化的索引技术。T-tree是一种一个节点中包含多个索引条目的平衡二叉树,T-tree的索引项无论是从大小还是算法上都比B-tree精简得多。T-tree的搜索算法不分搜索的值在当前的节点还是在内存中的其他地方,每访问到一个新的索引节点,索引的范围减少一半。

(4) 查询优化

磁盘数据库系统的查询优化算法基本上也是为了实现减少磁盘IO。DRDBMS系统优化的方针假定数据主要是存放在磁盘上的。磁盘数据库中的数据可能在磁盘上,也可能在内存缓冲中,但是磁盘IO的成本远远大于内存访问,所以磁盘数据库不得不假定最坏的情况,所有的数据都在磁盘中。另一方面,在主存数据库可以确定所有的数据都在主存中,可以在这个简单的假设(数据都在主存中)下优化器查询算法。主存数据库的查询优化不需要考虑磁盘的问题所以更简单,更精确。主存数据库系统可以实现比磁盘数据库更多的优化算法。

(5) 日志和恢复

由于主存是易失性的存储介质,所以需要进行数据库的备份。MMDBMS在磁盘上的备份数据库可以弥补主存的易失性。因而,主存数据库和备份数据库之间需要同步以保持数据的耐用性,这是数据库的基本标准,另外精确的日志和恢复能力也是事务处理中ACID标准的基本要求。现在,商业主存数据库系统已经应用于各种技术领域,保证了数据的耐用性。但是,按照怎样实现优化的同步,日志,恢复能力和数据耐用的程度不同,系统的性能有很大的不同。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11415603/viewspace-991246/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论
  • 博文量
    1
  • 访问量
    7595