内存数据库技术简述

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

(一)数据库处理速度之痛
最近发现数据库系统的书上很多内容还是基于以辅助存储器作为主要读写阵地,以内存作为缓存来辅助数据库的读写。我们在学习计算机组成原理的时候知道:内存和辅助存储器的读写速度是不匹配的,内存远远快于辅助存储器的读写速度。在主要基于辅助存储器的数据库系统中,我们通过各种算法优化不断的提高数据库处理数据的能力,然而无论速度如何提高,数据库的处理速度始终无法逾越内存与辅助存储器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的数据匹配技术。
  • 靳若冰,基于商业数据库的实时数据库开发研究。
  • 石英伟,分布式实时内存数据库关键技术研究与实现。
  • 梁智兴,内存数据库恢复技术研究。
  • 张效尉,王大羽,内存数据库故障恢复策略研究。
目录
相关文章
|
26天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
123 4
|
30天前
|
Cloud Native 关系型数据库 分布式数据库
开发者视角看云原生数据库一体化技术趋势
随着云原生数据库技术的不断发展,一体化数据库解决方案成为技术圈的热点,云原生数据库一体化技术是当前数据库领域的重要趋势,对于开发者而言,学习理解和应对这一趋势,对于业务开发的成功实施非常重要。比如,阿里云瑶池数据库和PolarDB-X等产品通过离在线一体化、处理分析一体化和集中分布一体化等创新理念,引领了数据库领域的新变革。那么本文就来从开发者的角度探讨云原生数据库一体化技术趋势,并分析在业务处理分析一体化、集中式与分布式数据库边界模糊和云原生一体化数据库的选择等方面的影响。
188 4
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
1月前
|
存储 数据管理 数据处理
数据之光:探索数据库技术的演进之路
数据之光:探索数据库技术的演进之路
60 1
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
74 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
2月前
|
存储 机器学习/深度学习 人工智能
打造企业智能体(AI Agent)的重要技术-向量数据库
本篇介绍的是为通用大模型增加专业业务能力的重要技术:向量数据库
打造企业智能体(AI Agent)的重要技术-向量数据库
|
12天前
|
存储 中间件 关系型数据库
数据库切片大对决:ShardingSphere与Mycat技术解析
数据库切片大对决:ShardingSphere与Mycat技术解析
21 0
|
25天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
95 0
|
25天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
67 0
|
7天前
|
存储 SQL 安全
6.数据库技术基础
6.数据库技术基础