楼主: edeed

[参考文档] 什么是内存数据库

[复制链接]
论坛徽章:
62
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24版主2段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41现任管理团队成员
日期:2011-05-07 01:45:08
21#
发表于 2007-10-25 23:48 | 只看该作者
日志是放在硬盘上.内存数据库有两种方式,一种从硬盘上加载,一种不用加载,在共享内中,只要操作系统不关闭与机器断电.

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
22#
发表于 2007-10-30 09:18 | 只看该作者
最初由 liyongdong 发布
[B]日志是放在硬盘上.内存数据库有两种方式,一种从硬盘上加载,一种不用加载,在共享内中,只要操作系统不关闭与机器断电. [/B]

我的意思是比如insert 操作
肯定也是要写磁盘的
除了写日志,也得写数据文件

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
23#
发表于 2007-10-30 09:22 | 只看该作者
学习ing

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
24#
发表于 2007-10-30 09:29 | 只看该作者

这篇儿还说得比较清楚点儿

什么是MMDBMS ?

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

(4) 查询优化

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

(5) 日志和恢复

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

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
25#
发表于 2007-10-30 09:33 | 只看该作者
MMDB的SQL optimizer是什么样的呢?
RULE -based ,COST-based?

使用道具 举报

回复
论坛徽章:
24
授权会员
日期:2007-11-06 19:37:52管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
26#
发表于 2007-10-30 10:28 | 只看该作者
简单看看这个吧!!!

1.jpg (40.26 KB, 下载次数: 59)

1.jpg

2.jpg (23.31 KB, 下载次数: 78)

2.jpg

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
27#
发表于 2007-10-30 11:24 | 只看该作者
有分享一下资料吧,版主

使用道具 举报

回复
论坛徽章:
24
授权会员
日期:2007-11-06 19:37:52管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14
28#
发表于 2007-10-30 11:31 | 只看该作者

内存数据库技术在国内来说应用还是比较广的,但是最早、最好的内存数据库产品是altibase,鼓励大家共同学习和研究。我们每个人都是新手和初学者,大家共同努力吧!!!一起学习!一起研究!我想获得技术知识的最好方法就是实践了,但是别忘了理论啊。

使用道具 举报

回复
论坛徽章:
0
29#
发表于 2007-12-5 15:16 | 只看该作者
一个问题.
在楼主列举的电信实例中,数据是先要提交到ORACLE DB的增量表中的,然后通过对增量表的检索来实现更新内存数据库.那么除非做到每间隔很短的一段时间内来运行一下前面所说的过程,否则的话不是还是在一个时间段内无法达到实时数据吗?
当然我已经理解了内存数据库的优势,只是在这个实例中对于这个问题有所疑惑!请楼主不吝赐教!感激!
可以肯定的说一个新的技术更新时代又将来临了!!!!!!

使用道具 举报

回复
论坛徽章:
4
开发板块每日发贴之星
日期:2007-12-10 01:05:13生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
30#
发表于 2007-12-7 16:02 | 只看该作者
学习。前天刚听说有内存数据库

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表