内存数据库技术简述

简介: 随着内存价格的持续降低和内存容量的不断扩大,在某些场景之内,以内存作为存放数据的主力方式成为可能。相对比于硬盘数据库、闪存数据库,内存数据库的发展经历了哪些阶段?我们应该如何重新审视内存数据库?本文将进行探讨。

(一)数据库处理速度之痛
最近发现数据库系统的书上很多内容还是基于以辅助存储器作为主要读写阵地,以内存作为缓存来辅助数据库的读写。我们在学习计算机组成原理的时候知道:内存和辅助存储器的读写速度是不匹配的,内存远远快于辅助存储器的读写速度。在主要基于辅助存储器的数据库系统中,我们通过各种算法优化不断的提高数据库处理数据的能力,然而无论速度如何提高,数据库的处理速度始终无法逾越内存与辅助存储器I/O操作速度的瓶颈。虽然经过若干年的发展,辅助存储器从磁带到机械硬盘到固态硬盘在容量、性价比、读写速度等方面都有不小的提升,但与内存在速度上还是难以匹配。幸运的是,计算机硬件的发展中内存的发展是遵循“摩尔定律”的。内存如今越来越大、价格也越来越便宜,使得我们应该重新审视基于辅助存储器的数据库。
(二)数据库发展阶段
如果将数据库发展按照内存和外存(辅助存储器)来进行划分,目前可以将数据库的发展分为如下三个主要阶段。
一、外部存储器磁盘为主的阶段:数据库的大部分内容都只是放在辅助存储器上,内存一般作为缓存来加快数据读写速度。我们的数据库实现书籍大多都是叙述这一阶段的数据库。但在这一阶段中外部存储机械式磁盘读写速度与内存悬殊很大,磁盘的I/O操作对数据库性能的影响很大。
二、外部存储器固态硬盘(SSD)为主的阶段:随着技术的发展,固态硬盘在市场中的份额越来越多,并且它的容量性价比是符合摩尔定律的,带宽提升也非常快(如PCIE接口)。所以开始有一部分公司尝鲜,把数据库中部分或全部转移到固态硬盘上。这也确实提高了外部存储器的I/O操作的速度。但仍然未根本解决内存与外存之间速度的矛盾。
三、内存为主的阶段:这一阶段中因为内存价格持续下降、速度持续增加,数据库的主阵地变为内存,而辅助存储器只是起到辅助作用了。这一阶段有VoltDB、HANA、MemSQL等一系列内存数据库。它们都有一个相同的特点,就是将内存作为数据库的主阵地,并针对内存与CPU之间的存取进行算法设计、优化。除了共同点外,每个数据库又有自己所专注的方面,VoltDB就对原有数据库设计理论进行了颠覆,为了避免锁等开销,提升数据库性能,应用全局时钟和预编译进行并发控制;HANA则是通过内存存储以及内存中数据更高程度的压缩来换取对大数据分析任务的速度;为了使数据库更加贴合内存,MemSQL在Mysql的基础上对存储引擎重新进行了设计。从上面的三个方面来看,与传统数据库相比,内存数据库不失为一个提高数据库整体性能的、值得探索的新途径!
(三)内存数据库发展阶段
追本溯源,内存数据库的想法萌芽可追溯到上世纪六十年代。IBM公司在1969年研制的数据库管理系统IMS就是世界上最早的基于层次模型的数据库管理系统,IBM公司将IMS作为软件商品投放市场。IBM设计IMS时考虑到基于内存的数据管理方法,相应推出了IMS/VS Fast Path。Fast Path是一个支持内存驻留数据同时也可以很好地支持磁盘驻留数据的商业化数据库。Fast Path将需要频繁访问、高响应速度的数据直接存放在主存中进行读取管理,主存数据库的主要设计思想在该产品上已经开始得到体现。后来,D J DeWitt等人于1984年在《主存数据库系统的实现技术》中首次明确了主存数据库(Main Memory Database)的概念。他们已经能够预见,当时相当昂贵的主存价格会在将来不断下降,预测未来人们可能有能力将数据库全部放到主存中进行管理,并针对主存数据库的构想提出了哈希算法、AVL树、主存数据库恢复机制等关键理论,为如今主存数据库的发展起到了很大的推动作用。IBM在1985年推出了于IBM 370系统之上运行的主存数据库OBE。随后,检查点技术在1986年的RB Hagman应用,以实现主存数据库的恢复。解决主存数据库中并发控制问题的新方法——按区双向锁定模式,在威斯康星大学也被首次提出,并在MM-DBMS主存数据库上得以实现。以堆文件(HEAP FILE)的数据存储结构作为主存数据库存储结构的构想在1987年的ACM SIGMOD会议中被提出。1988年,TPK主存数据库在普林斯顿大学设计成功。1990年,System M主存数据库在普林斯顿大学设计完成。各种主存数据库模型像雨后春笋般不断产生,也为今天的主存数据库理论打下坚实的基础。
随着互联网的发展,越来越多的网络应用系统对数据库系统在并发访问量和响应速度上提出了前所未有的高要求。好在半导体技术也发展迅猛,半导体内存的生产规模不断提升,动态随机存取存储器(DRAM)的容量越来越大,而价格越来越低。主存硬件的发展直接推动着主存数据库市场的发展,主存数据库技术的可行性也开始逐渐成熟。Polyhedra便是美国的OSE公司在1994年推出的第一个商业化的、投放市场并实际应用的主存数据库产品。德国SoftwareAG于1998年推出了自己的主存数据库Tamino Database。日本UBIT会社1999年开发出XDB主存数据库产品。韩国Altibase推出Altibase。奥地利的QuiLogic公司2000年推出了SQL-IMDB主存数据库。美国的McObject于2001年推出eXtremeDB。加拿大Empress公司推出EmpressDB。SAP公司于2011年推出基于内存计算技术的SAP HANA(High-Performance Analytic Appliance),面向企业分析性应用的产品。在2013年OpenWorld上甲骨文推出BI Machine Exalytics也是使用的内存数据库技术。
(四)内存数据库认知
虽然在现代传统数据库技术也通过加大了内存容量,以此使缓冲区增大,最终将频繁访问的数据缓存到缓冲区以达到加快存取速度的目的。但这种方法与磁盘数据库无任何区别,只是缓冲区很大而己。数据的存取要通过缓冲区,最小化磁盘I/O仍然是算法设计的主要目标。内存数据库不仅仅只是比传统数据库加大了内存,而且因为数据库全部放到了主存,完全没有磁盘的I/O操作的系统瓶颈。既然内存数据库的主要阵地转移到了主存,所以传统数据库中主要针对磁盘I/O操作的大多数算法不再适用于内存数据库。为了更好的、高效的使用CPU和内存空间,内存数据库的数据结构、查询处理、并发控制、恢复等都必须重新设计。目前,己有大量的对内存数据库的研发,包括了内存数据库的并发控制技术、事务提交处理技术、数据访问技术、查询处理和查询优化技术、恢复处理技术、数据迁移技术、负载均衡技术等各个方面。虽然目前的理论比较丰富,但是稳定的、适用性广的产品并不多,大多数还处于实验室研究阶段,工业化应用也只局限于几个领域,比如电信和金融领域,并且多为平台相关的、应用相关的数据库系统,无法适应广泛的应用要求。
内存数据库系统的数据永久驻留在内存中,而常规的磁盘数据库系统的数据是驻留在磁盘中。因而,在访问数据时,内存数据库拥有比磁盘数据库更高的访问效率。对于需要在严格要求的时间段内完成事务请求的实时应用系统,和需要支持大数据量并发访问的高性能事务处理平台来讲,内存数据库都是一个理想的选择。
从内存数据库的发展历史来看,内存数据库产生已有三十余年。虽然早期人们对内存数据库的定义并没有形成完全的标准统一,但人们对内存数据库已经达到的共识是:内存数据库不应涉及内存大小、次数、数据何时进入及怎样留驻内存等具体的实现技术,而只包含数据库永久留驻内存,事务的数据存取只涉及内存。后来人们慢慢对内存数据库形成普遍的理解,数据库运行期间所需的数据环境不应有I/O,常驻内存是内存数据库充分必要的条件。

本文在撰写过程中,得到贵州大学李晖教授的指导,在此感谢!

参考文献:

  • 王晨,内存数据库若干关键技术研究。
  • 袁培森,内存数据库的设计与实现。
  • 宋毅,缓存敏感T树的设计与实现。
  • 史习一,在数据清洗过程中基于MMDB的数据匹配技术。
  • 靳若冰,基于商业数据库的实时数据库开发研究。
  • 石英伟,分布式实时内存数据库关键技术研究与实现。
  • 梁智兴,内存数据库恢复技术研究。
  • 张效尉,王大羽,内存数据库故障恢复策略研究。
目录
相关文章
|
1月前
|
KVM 虚拟化
KVM的热添加技术之内存
文章介绍了KVM虚拟化技术中如何通过命令行调整虚拟机内存配置,包括调小和调大内存的步骤,以及一些相关的注意事项。
59 4
KVM的热添加技术之内存
|
1月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
1月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
2天前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
23 8
|
14天前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
56 2
|
19天前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
2月前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
探索Java数据库连接的奥秘:JDBC技术全攻略
52 8
|
1月前
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
|
2月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
75 5