【IT168专稿】导读:在这个速度至上的时代里,内存与硬盘的价格差显然已经被企业抛在脑后。互联网、金融、电信、零售等数据量大、实时性要求高的行业中,硬盘数据库正逐渐被内存数据库所取代。“硬盘已死”并非传说,这一天正在向我们逼近。
内存数据库不是个新鲜的概念,但随着内存价格的下降、企业需求的增长,IT厂商纷纷进入该市场,甲骨文、微软、SAP、IBM等知名厂商加入其中。除此之外,McObject、ALTIBASE等商业数据库,以及Berkeley DB、Redis等开源数据库一直专注于内存数据库市场。本文将针对内存数据库展开,希望对企业选择内存数据库有所帮助。
一、内存数据库概述
内存数据库(IMDB,也称主内存数据库系统、MMDB或内存常驻数据库)是一个数据库管理系统,主要依赖于主内存以存储计算机的数据。与采取磁盘存储机制的数据库管理系统不同,主内存数据库的内部优化算法更简单,执行更少的CPU指令,因此比磁盘优化数据库的运行速度快。查询数据时,在内存中访问数据能够节省寻道时间,内存提供了更快速、更易预测的性能。
在响应时间至关重要的应用中,如电信网络设备、移动广告网络等,通常采用主内存数据库。自2005年起,由于RAM价格的不断降低,内存数据库获得快速发展,尤其是在数据分析领域。随着NVDIMM(非易失性DIMM)技术的引入,内存数据库不仅可以全速运行,而且不必担心电源故障时的数据丢失问题。
1. 支持ACID
在最基本的形式中,主内存数据库将数据存储在非永久性存储器设备中。当设备断电或者重置时,存储在这些设备中的信息将全部丢失。在这种情况下,主内存数据库缺乏对ACID中持久性(Durability)的支持。基于非永久性存储的主内存数据库通常情况下能够支持其他三种ACID属性,即原子性(Atomicity)、一致性(Consistency)和隔离性(Isolation)。但是,自从非易失性DIMM(NVDIMM)发挥作用以后,下一代内存数据库(IMDB)或者主内存数据库(MMDB)设备开始具备持久性,能够真正满足完整的ACID支持。
许多主内存数据库已通过以下机制增加持久性功能:
·记录数据库某一时刻状态的的快照文件或者检查点图片,通常会周期性的产生,或者在主内存数据库的控制下产生。它们提供了数据持久性的一种方式,但只是部分的持久性,即在系统崩溃的情况下并非所有数据都会丢失,只有近期的数据会丢失。如需完整的持久性,需要以下方式进行补充:
·事务日志,即在日志文件中记录数据库的更改,便于在内存数据库中自动恢复。
·非易失性DIMM,即一个含有DRAM接口的内存模块,通常结合NAND闪存完成对非易失性数据安全性的保护。第一款NVDIMM解决方案是用超级电容代替电池作为备用电源的。基于这种设计,主内存数据库或者内存数据库能够在重启后安全的恢复其状态。
·非易失性随机存取存储器(NVRAM),通常是以静态RAM的形式利用电池电源进行备份;或者采用电可擦可编程只读存储器(EEPROM)。利用该存储器,主内存数据库系统能够在重启后将数据存储恢复到最后一致的状态。
·高可用性的实现依赖于数据库复制,当主数据库发生故障时,自动故障转移功能将业务切换到另一个完全相同的备用数据库上。为了避免因为系统故障造成的数据丢失,主内存数据库的复制通常与上面列出的一种或多种机制一起使用。
有些主内存数据库允许数据库架构针对不同区域指定不同的持久性要求。如此一来,变化较快的数据能够轻松恢复,或者在系统故障后不受任何影响,不再需要为持久性保存日志(尽管还需要为高可用性进行复制),而配置信息将会标记为需要保存。
2. 与磁盘数据库融合
第一款能够在单一数据库中同时支持内存和磁盘存储的数据库引擎是WebDNA,它于1995年正式发布。这种方式的优点是具有灵活性:开发人员能够获得性能之间的平衡(与磁盘相比,完全在内存中整理、存储和检索规定数据能够使性能得到增强);低价的硬盘取代更多内存能够使成本降低;持久性;封装性(由于RAM芯片无法达到硬盘的密度)。
选择融合内存/磁盘数据库系统的另一个原因是提高生产效率。很多设备生产线,尤其是消费类电子产品,既包括一些永久存储的单元,也依赖于内存存储(如机顶盒)。如果这样的设备需要数据库系统,制造商可以采用一种混合型数据库系统,根据disk-less(少磁盘)或者disk-based(基于磁盘)两种产品分别定价。这种数据库比单独使用内存或磁盘的数据库需要更少代码定制。
3. 存储内存
另一种改变是在服务器中存在大量非易失性存储器,例如闪存芯片由可寻址内存构成,而非磁盘阵列,以这种内存构成的数据库能够将快速访问与持久性相结合。
4. 主要产品
此外,很多数据库管理系统(DBMS)也支持内存存储引擎,如MySQL、Adaptive Server Enterprise、Raima等。
5. 业界观点
@微博平台架构:内存计算时代来临?在Gartner推出的2013年10大战略性技术中,其中一项即是"In Memory Computing"。在本周,微软宣布,将在下一个SQL Server版本中实现内存技术,将允许从内存中运行整个数据库。微软预计,使用内存技术,可以使事务运行速度比标准的SQL Server快50倍。
@炎黄盈动官方微博:2012年7月底,Gartner第一次编制了大数据(Big Data)的HypeCycle。可以看到,目前整个Big Data都处于上升期(起步期),人们对之的整体期望都很高。对于大数据分析而言,NoSQL、CEP、内存数据库、内存分析都是人们的话题。
@GBase数据库:运营商逐步采用内存数据库提高并发处理能力——运营商的转型,给业界带来新的机会。目前计费系统中采用内存管理模块和内存数据库两种解决方案,而内存数据库具有事务并发处理能力和处理效率的特点,可以更好地保证系统的安全性和稳定性,越来越多地被运营商采用。
@众意网商务智能:SAP HANA等以内存计算为主的数据库对多维数据库的冲击到底有多大?首先多维数据库的发展非常成熟,包括体系结构,查询语言,聚集策略,市场定位等,历经数十年的发展。再者HANA都必须支持MDX的多维查询语言,足见多维的生命力,最后包括微软等厂商都在发力内存计算,并兼容多维,由此断言多维分析永生!