内存数据库系统

昨天那篇 转载 《In-Memory Database Systems 》的译文

McObject的总裁Steve Graves在本文中分析了内存数据库管理系统与其它数据库管理系统的三个关键的不同之处:缓存、数据传送开销、系统事务处理,并以IP路由器为例,讲解了内存数据库的特点。

以下转自http://blog.csdn.net/iashao/,经过Terry Chu编辑,并加入了原文(英文原文)中的图片。

内存数据库系统

内存数据库系统对于嵌入式开发来说是特别有用的, IMDS 中每个保存过程缩小了覆盖区智能连接设备的增长速度正越来越快。这种装置不管是在家庭、口袋(pocket)或者是内置于工业通信和传送系统,都已经发展为包含了强大的CPU和完善的嵌入式系统软件。在这种设备中日益流行的一种软件是数据库管理系统(DBMS)。虽然对桌面电脑或者服务器来说,这种软件已经是相当成熟了,但数据库是最新才应用到达嵌入式系统的。像所有进入新环境的生物体一样,数据库也必须经历一个发展过程。一种新型的DBMS,内存数据库系统(IMDS),代表了DBMS应用到嵌入式系统的最新步伐。

为什么嵌入式系统开发人员会转向数据库呢?

市场竞争使得像机顶盒、网络开关和消费者电子产品这样的设备需要变得越来越智能。要支持扩展功能集,应用程序通常必须管理大容量的更复杂的数据。因此,许多设备开发人员发现他们正致力于自己开发数据管理方案。在应用需求增长时,普通的数据管理方案维护和扩展起来是特别困难的。

另外,标准化的趋势,商用现货(ommercial off-the-shelfCOTS)嵌入式操作系统,远离许多私有系统的不完整环境,从而增强数据库的能力。广泛使用的操作系统的出现,比如嵌入式Linux,形成了一个用户群体,他们轮留进行数据库和其他工具开发(包括商业的和非商业的),以不断增强开发平台。

因此,设备开发人员开始转向商业数据库,但已有的嵌入式DBMS软件还不理想。嵌入式数据库最初出现在10年前,当时用于支持商业系统,带有包括复杂缓存逻辑和异常终止恢复等功能。但在一个设备上,例如,在一个机顶盒或者下一代传真机中,这些能力通常毫无必要,并且应用程序容易出现超出可用内存和CPU资源的现象。另外,建立传统数据库时是将数据存储在磁盘上。作为一种机械过程,磁盘的I/O是非常昂贵的,尤其是要取得高性能的话。对于嵌入式系统来,因为需要实时执行,因此相对而言,传统数据库就太慢了。内存数据库出现的目的特别针对于满足嵌入式系统的性能需求和资源能力。正如其名字所暗示的,IMDS完全驻留在内存中,它们不会存储到磁盘上。

那么IMDS是简单地将传统数据库载入到内存中吗?

这是一个相当直接的问题,因为省去磁盘I/O是这种新技术最有名的特性。创建一个RAM磁盘,文件系统在内存中,这种能力已经内置在Linux系统中。那么,为什么不部署非常有名的数据库系统(比如MySQL或者Oracle)在这样一张磁盘上呢?这会同样受益吗?

实际上,IMDS 与其他嵌入式DBMS 有很大不同的。

与传统的数据库相比,IMDS 简单多了。除了省去磁盘I/O 外,内存数据库系统更少地移动数据或者进行交互处理。因此,相对于在内存中部署传统DBMS来说,这样做的结果是更有效地节省了RAMCPU使用,从而获得更快的响应速度。在决定一种技术是否适合于给定项目时,要理解该技术的设计目的,采用IMDS也是如此。下文描述了三个关键的不同之处。

缓存

由于对物理磁盘的访问而性能耗尽导致,事实上所有的传统DBMS软件都在内存中使用缓存来保存数据库最近使用的部分。缓存逻辑包括了缓存同步,它确保缓存中数据库页的映像与磁盘上的物理数据库页是一致的。还包括缓存查找,它决定数据是否被缓存中的应用程序所请求;如果不是,页被找到并加入到缓存中以备将来引用。不管基于磁盘DBMS 是否被部署在内存中,比如在RAM 盘中,都要执行这些过程。通过清除缓存,IMDS数据库删除一个重要的复杂性和性能开销源,并且在处理过程中减少IMDS对内存和CPU的需求。

数据传送开销

考虑一个应用程序自动从传统的基于磁盘的数据库读取一块数据,修改它,并将该块数据写回到数据库,这个过程如图1 所示。

1. 应用程序通过数据库API请求来自数据库运行期的数据项。

2. 数据库运行期指示文件系统从物理磁盘检索数据。

3. 文件系统制作一份数据拷贝,以用于缓存,并传递另一份拷贝到数据库。

4. 数据库保留一份拷贝在其缓存中,并传递另一份拷贝到应用程序。

5. 应用程序修改它的拷贝,并通过数据库API将该拷贝传递回数据库。

6. 数据库运行期拷贝修改的数据项回到数据库缓存。

7. 数据库缓存中的拷贝最后写入到文件系统,这里它被文件系统缓存更新。

8. 最后,数据写回到物理介质。

这些步骤不能在传统数据库中进行,即使处理全部发生在内存中也不行。并且这种简化的方案不能解决更新记录所需要的附加拷贝和传送

Data flow in a traditional DBMS

 

相比较而言,内存数据库系统承担很少的或者不承担数据传送任务。应用程序可以在本地程序变量中制作多份数据拷贝,但这不是必需的。相反,IMDS 提供给应用程序一个指针,直接指向数据库中的数据项,使应用程序能够直接使用数据。数据仍然受保护,因为指针只能通过数据库API来使用,从而确保使用正确。多数据的取消过程以流水线处理方式进行传送。减少多份数据的拷贝可以减少内存消耗,同时简化设计和提高可靠性。

内存数据库系统事务处理

在灾难性故障事件中,比如掉电,基于磁盘的数据库系统在系统重启后通过从日志文件提交完整的事务或者回滚部分事务来进行恢复。基于磁盘的数据通过硬连线来保存事务日志,以在事务提交后更改事务日志文件和缓存到磁盘。主要的内存数据库也提供了事务完整性。为了做到这一点,IMDS保持已更新或者删除的对象的一个以前的映像,以及事务发生时加入的一个数据库页的列表。当应用程序提交事务时,以前映像的内存和页面引用返回到内存池(这是一个快速有效的过程)。如果一个内存数据库必须取消一个事务时(例如,如果入库数库流被中断),以前的映像被恢复到数据库,并最新插入的页会返回到内存。在灾难性故障事件发生时,内存数据库映像将会丢失。这是与基于磁盘的数据库的一个主要不同点。如果系统关闭,IMDS在重启后加载数据。因此,没有必要保存事务日志文件,并且其他复杂的、内存密集的任务也从IMDS 中取消。

这种功能可能不适合每个应用程序,但在嵌入式系统领域,例如使用数据存储的应用程序能够很容易地得到数据的实时补充。在机顶盒中包括了这样一个应用程序,它从人造卫星或者电缆头终端下载,通过上游服务器或者IP 路由表提供的无线访问点,将其作为协议发现网络拓扑。这种系统的开发人员在高级性能和较小覆盖区的交换上得益于对事务处理范围的限制。这不能排除已保存的本地数据的使用。利用IMDS,应用程序能够打开一个流(socket,管道或者文件指针),并指示数据库运行期来从流中读写数据库映像。这种功能能够用于创建和维持启动阶段的数据,例如,一个初始化的数据库启动点。其他流终端可能是到另一处理或者文件系统指针的管道(任何文件系统,不管它是magneticoptical 或者Flash.

应用案例: IP路由器

那么究竟IMDS技术有什么不同呢?

在内存数据库出现在各种应用设置中,以下案例,涉及到最常用的Internet基础设备——路由器中的嵌入式系统,并提供了这种技术的一个应用。现代IP 路由器整合了路由表管理(routing table managementRTM)软件,完成在Internet和其他网络中为数据包决定下一跳的核心任务。路由协议持续地监视可用路由和其他路由设备的状态,然后用当前数据来更新设备的路由表。这些路由表典型情况下作为RTM软件的私有产物。这个方案是开发下一代路由器的重要挑战之一。随着设备功能的增强,路由表管理入式系统的开发。

 

 

Terry的博客主站 ,以后的文章将写在这里,欢迎光临 :

www.helemi.net

 

流泪花园 | 中文情感社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值