楼主: liyongdong

[精华] 内存数据库数据结构分析

[复制链接]
论坛徽章:
0
41#
发表于 2009-3-24 10:22 | 只看该作者
刚接触这个东西,就能看到这么有技术含量的贴,真是对楼主敬佩万分啊

使用道具 举报

回复
论坛徽章:
0
42#
发表于 2009-3-26 10:29 | 只看该作者
GOOD GOOD STUDY
DAY DAY UP!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2009-06-19 09:38:55
43#
发表于 2009-3-30 20:03 | 只看该作者
写的非常好,学习了!

使用道具 举报

回复
论坛徽章:
0
44#
发表于 2009-5-13 14:01 | 只看该作者
弱弱的问:
内存数据库,数据的生存周期是不是就是在内存中了,机器重新启动了,数据怎么办。

使用道具 举报

回复
论坛徽章:
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
45#
 楼主| 发表于 2009-5-22 14:18 | 只看该作者
原帖由 zzq54572 于 2009-5-13 14:01 发表
弱弱的问:
内存数据库,数据的生存周期是不是就是在内存中了,机器重新启动了,数据怎么办。



数据在数据文件中与日志中。

使用道具 举报

回复
论坛徽章:
4
46#
发表于 2009-5-22 15:47 | 只看该作者
不错,学习一下

使用道具 举报

回复
论坛徽章:
1
CTO参与奖
日期:2009-01-15 11:42:46
47#
发表于 2009-8-19 22:27 | 只看该作者

一次搞定

内存数据库数据结构分析
按照目前内存芯片密度每年2倍的增长速度,在未来10年中,配置1 G或更大的内存将是很平常的事。内存容量的快速增长对数据库管理系统有着深刻的影响。在某些场合,将整个数据库放进内存是可能的,正常的查询处理可以完全脱离硬盘。另外,和传统的数据库应用相比,有大量的新兴应用,目前的内存大小已经足够了。
   在数据库系统中,有2种方法来使用大量的内存。
  (1)增大缓冲池 将一个事务所涉及的数据都放在缓冲池中。当采取这种方法的时候,算法优化的目标仍然是最小化磁盘访问。
  (2)常驻内存数据库 将整个数据库放进内存中。 这种方法需要重新设计一种数据库管理系统,需要对查询处理、并发控制与恢复的算法和数据结构进行重新设计,以更有效地使用CPU周期和内存。

1 磁盘和内存
  内存数据库的索引结构和基于磁盘系统的索引结构不同,面向磁盘的索引结构的目标是最小化磁盘访问次数和空间占用,而面向内存的索引结构全部放在内存中,因此没有磁盘访问次数的最小化。这样,内存索引的目标是减少整体的计算时间同时尽可能少地占用内存。由于关系常驻内存,在索引中没有必要存储真实的属性值,而存储指向元组的指针,当需要的时候通过这些指针能够得到属性值。这样做有4个优点:
  (1)单一元组指针便能访问元组的属性和元组本身,这就减少了索引的大小。
  (2)避免了处理在索引中的长字段、可变长字段以及压缩技术。
  (3)当更新索引操作时,移动指针将比移动属性值更廉价。
  (4)由于单个元组指针提供访问这个元组中的任何字段,采用一种特殊的机制多属性索引的需要将减少。

2 物理组织方法
  内存数据库的总体设计目标是使内存和CPU的利用率尽可能高,而内存数据库的物理组织是实现该目标的基础,其存储结构、索引结构、中间数据存储结构都必须考虑内存的直接存取这一特征,这里介绍几种适合于内存数据库的物理组织方法。
2.1 区-段式
  区-段式组织是基于关系数据模型的。他将存储空间逻辑划分为“分区”,每一个分区存储一个关系。由若干“段”组成,一个段是内存中固定长度的连续区域,相当于“页”,但比页大,是内外存I/O的单位,也是内存空间分配以及内存数据库恢复的单位
一个段中的一个数据记录就是一个关系元组。每个记录有一个惟一的标识符RID(Record Identifier),他是一个三元组<P,S,L>,其中P,S,L分别为分区号、段号、段内的记录槽号,记录槽(RecordSlots)包含了对应记录的长度和记录的首地址。这样由RID经分区表和相对应的段表找到相对应的记录槽,按槽中的地址和长度便可直接存取所要的记录。其实,对于内存数据库,存取方法返回的不必是所需的记录数据的副本,只需将其槽中的地址返回即可。
2.2 影子内存式
  按影子内存式组织的内存数据库空间可以划分为2部分:一部分是MMDB的主拷贝;另一部分为“影子拷贝”。
在事务的正常操作期间,每次查询都产生一个分别对于影子内存SM(ShadowMemory)和主拷贝PDB(Primary DataBase)的双地址,且总是先对SM试探,若不成功,再对PDB操作。所有的更新操作都在SM中进行,且都记录在活动日志中(Active Log)。每当一个事务提交时,由他所产生的在SM中的“后映像”拷贝到PDB中。使用影子内存的优点是:
  (1)减少了日志缓冲区,因为其后映像区和用户区合二为一。
  (2)省去因事务失败或系统故障时的UNDO操 作,只清除相应的影子内存即可。
  (3)减少对MMDB(PDB)存取,各事务可并行对各SM区操作。
  (4)缩短恢复过程,这是因为一方面如(2)所述,省去UNDO型操作,只需做REDO型操作;另一方面还可以就当前事务对SM做“部分恢复”以后,就先启动正常事务处理,然后按需要逐步恢复PDB。
  影子内存式和区-段式可以组合使用

使用道具 举报

回复
论坛徽章:
183
2008版在线时间
日期:2010-06-01 00:01:32奥运纪念徽章
日期:2013-07-18 13:55:12大众
日期:2013-09-29 21:57:31大众
日期:2013-11-19 14:51:47凯迪拉克
日期:2013-12-06 09:40:33奔驰
日期:2013-12-10 08:41:56优秀写手
日期:2013-12-18 09:29:122014年世界杯参赛球队:巴西
日期:2014-06-12 16:34:36
48#
发表于 2010-1-19 12:33 | 只看该作者
谢谢分享

使用道具 举报

回复
论坛徽章:
164
秀才
日期:2015-11-11 09:58:34
49#
发表于 2010-2-20 09:25 | 只看该作者

使用道具 举报

回复
论坛徽章:
0
50#
发表于 2010-2-20 14:42 | 只看该作者
不错 谢谢

使用道具 举报

回复

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

本版积分规则 发表回复

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