Main Memory Database Systems: An Overview

由于现在内存价格变得越来越便宜,可以考虑将数据全部放到内存中成为内存数据库(Main Memory Database System, MMDB)。和传统的磁盘数据库相比(Disk Resident Database System,DRDB),有以下一些不同之处。

磁盘 内存
响应时间
受否易损坏
读数据成本 高,固定(以block为单位)
数据分布 要求高(顺序读的快于随机读) 要求低
接近数据的方式 间接使用数据 直接访问数据(更容易损坏)

接下来考虑一下将整个数据都装入内容是否合理。有以下的场景可以考虑内存数据库:

  • 实时的应用程序(real-time appplication),要求整个数据装入内容以提高响应时间
  • 数据的2/8分类。20%的数据是热数据。80%的数据是冷数据。
    • 将数据库分为多个逻辑的数据库,一些是MMDB,另一些是DRDB。
    • 这些数据库可以单独分离(分库分区),也可以集成到一个系统(考虑数据迁移(Data Migration))
      • 注意Data Cache和Data Migration的区别,Data Cache指的是缓存值,比如Redis-MySQL,而迁移指的是从一种介质到另一种介质,可能伴随着数据结构和访问方式的变化。

MMDB和具有大缓存的DRDB的区别:

大缓存的DRDB MMDB
索引 面向磁盘的B+ TREE 面向内存的索引
访问record方式 根据record计算读取的页面,加载到bufferpool中读取,还涉及到操作系统内存到数据库内存的内存拷贝 内存地址(swizzling)
指针交换(Swizzling) 是一种优化技术,用于在数据从磁盘加载到内存后,将磁盘地址或逻辑表示转换为内存指针(直接引用)。通过这种方式,应用程序可以直接访问内存中的数据,而不需要每次通过缓冲区管理器或磁盘地址间接访问

内存数据库需要频繁备份:

  • 由于数据在内容中,其它错误(操作系统)可能导致数据丢失
  • 内存与磁盘故障的恢复差异
    • 磁盘故障后,仅需恢复该磁盘上的部分数据,而不影响其他磁盘。恢复期间,系统中的其他数据仍然可访问。
    • 但内存板的故障通常需要关闭整个系统,导致整个数据库丢失。内存数据恢复时间更长,因此需要提供最新的备份(备份越旧,日志恢复时间越长)。

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵的大大大大王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值