【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的多维查询语言,足见多维的生命力,最后包括微软等厂商都在发力内存计算,并兼容多维,由此断言多维分析永生!
二、内存数据库优劣势分析
1. TimesTen
TimesTen目前已经被甲骨文收购,它原本是一家私有的实时数据管理软件供应商,主要为电信、网络、证券交易等行业提供基础架构软件,并用这种软件进行事件管理、交易和数据的工作。目前TimesTen支持的系统包括实时计费系统、股票交易系统、呼叫中心系统、航线运营系统等。
TimesTen是内存数据库中非常优秀的产品,在全球的客户包括Amdocs、亚斯贝克通信公司、爱立信、JP摩根、nec、诺基亚、斯普林特、美国航空等。TimesTen中的这个Ten据说就是指速度能达到基于磁盘的RDBMS 10倍,作为大事务数据库的前端数据库会是一个不错的选择。
TimesTen优势
·能够和Oracle后台数据库做无缝集成,数据可以在TimesTen和Oracle直接双向流动,可以做到实时;
·TimesTen可以做成多节点并行提供服务的模式,数据在多个TimesTen之间直接实现实时或者非实时的传输, 进一步提高了系统的扩展性和可靠性;
·符合RDBMS标准的独立内存数据库服务;
·支持SQL92;
·支持 ODBC & JDBC;
·高性能;
·可以作为Oracle数据库的前端Cache,目前不支持其他数据库;
·支持本地的高速访问和网络访问方式可靠性高。支持完整日志,支持镜像复制功能。
TimesTen劣势
·不是开源代码,需要较高费用;
·目前不支持存储过程和触发器。
2. SAP HANA
SAP HANA是由SAP创始人之一哈索博士在2009年主持研发的创新项目,它摒弃硬盘而采用内存,将交易型数据库和分析型数据库合二为一,打造真正意义上的实时数据平台。哈索博士对SAP HANA的定义是——使用列式和行式混合存储的内存计算技术,实现OLTP和OLAP的通用数据库平台。
SAP HANA是专门为支持运营应用和分析应用而设计的一款内存计算平台,它能够对大量多结构数据进行实时分析,并将分析结果嵌入业务应用中。SAP HANA使企业在开展业务的同时,能够通过实时分析海量运营数据及时了解企业运营情况。通过内存实时采集数据进行分析,避免从业务应用中获取数据、在报表系统中分析数据产生的滞后,打通从生产数据库直接了解业务运营情况的渠道。
SAP HANA是一个可部署为企业预置型解决方案或者可在云部署的内存计算数据平台,它不仅适用于执行实时分析处理及实施事务处理功能,还可用于开发和部署实时应用软件。SAP亚太及日本区企业应用事业部高级副总裁柯德泰曾表示,SAP HANA绝不仅仅是一个数据库,而是交易引擎、分析引擎和预测引擎,它可以对非结构性数据进行分析,可以基于现在已经获得的数据和信息对未来进行预测和判断。
SAP HANA优势
·秒级处理实时决策:行、列存储,完全存于内存 - 快
·大规模数据运算:内存排序,无需考虑优化 - 易
·并行处理:低成本运行,普通PC服务器 - 省
SAP HANA劣势
SAP HANA只能运行在Suse Linux企业版(SLES)上,软件硬件平台较贵。
3. SolidDB
IBM SolidDB产品系列的特点在于使用了内存型关系数据库技术。这种技术能够提供非常快的运行速度,比基于磁盘的传统数据库的运行速度快十倍。IBM SolidDB(或者简写为 SolidDB)使用熟悉的SQL语句,使应用程序能够在每秒钟内获得好几万个事务,而响应时间是按微秒计算的。
IBM SolidDB是一个功能全面的内存关系数据库,它提供了非常快的速度和非常高的可用性,以满足实时应用程序对性能和可靠性的要求。它可以使单个SolidDB实例中同时包含内存表和基于磁盘的表。它还具有其他特点,例如,高可用性实现和多项不同的复制技术
SolidDB优势
·内存中数据库系统一个最值得注意的不同之处在于没有大数据块结构。
·检查点和耐久性:提速之路
·IBM SolidDB还使用其他一些技术来加快数据处理,首先便是一种获得专利的检查点(checkpointing)方法, 这种方法产生一个快照一致性检查点,同时并不阻塞正常的事务处理。
除了这些性能优点外,SolidDB还带来其他好处。 它将一个完全事务性的内存中数据库和一个强大的、基于磁盘的数据库 组合到一个紧凑的解决方案中,并且可以透明地将同一个数据库的一部分 留在内存中,一部分留在磁盘上。而且,IBM SolidDB是市场上唯一一个 可以作为几乎任何其他基于磁盘的关系数据库的前端高速缓存来部署的产品。 最后,SolidDB 还提供超高的可用性,将可用时间由通常的5个9提高到99.9999%。换句话说,如果您要寻求超快的速度,那么将会找到IBM SolidDB,但这只是IBM SolidDB的开端。
SolidDB劣势
SolidDB在透明查询中,首先奖节点增加到两个,然后将模式设置为HA HotStandby模式。不支持其他方式的数据分区。
4. SQL Server
微软SQL Server数据库服务器提供了数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个数据库管理系统,用于建立、使用和维护数据库。SQL Server一开始并不是微软自己研发的产品,而是当时为了要和IBM竞争时,与Sybase合作所产生的,其最早的发展者是Sybase,同时微软也和Sybase合作过 SQL Server 4.2版本的研发,微软亦将SQL Server 4.2移植到Windows NT(当时为3.1版),在与Sybase终止合作关系后,自力开发出SQL Server 6.0版,往后的SQL Server即均由微软自行研发。
SQL Server 2014提供了众多激动人心的新功能,但其中最让人期待的特性之一就要算内存数据库了。在SQL Server的Hekaton引擎由两部分组成:内存优化表和本地编译存储过程。虽然Hekaton集成进了关系数据库引擎,但访问他们的方法对于客户端是透明的,这也意味着从客户端应用程序的角度来看,并不会知道Hekaton引擎的存在。如图所示:
SQL Server优势
首先内存优化表完全不会再存在锁的概念(虽然之前的版本有快照隔离这个乐观并发控制的概念,但快照隔离仍然需要在修改数据的时候加锁),此外内存优化表Hash-Index结构使得随机读写的速度大大提高,另外内存优化表可以设置为非持久内存优化表,从而也就没有了日志(适合于ETL中间结果操作,但存在数据丢失的危险),通过内存优化表+本地编译存储过程有接近几十倍的性能提升。
SQL Server劣势
·由创建表的语句可以看出,目前SQL Server 2014内存优化表的Hash Index只支持固定的Bucket大小,不支持动态分配Bucket大小;
·目前来说,数据库镜像和复制是无法与内存优化表兼容的,但AlwaysOn、日志传送、备份还原是完整支持。
5. eXtremeDB
实时嵌入式实时数据库公司McObject LLC总部位于美国华盛顿州,公司创建于上世纪90年代末, 是由一群嵌入式数据库和实时系统专家联合创立的,目前在美国、欧洲、中国、俄罗斯均有办事处。
该公司为多家企业级用户和嵌入式领域的客户提供实时系统开发及维护更智能,可靠的数据管理技术。公司核心产品为全球首款嵌入式内存实时数据库eXtremeDB,是专为高性能、低开销、稳定可靠的极速实时数据管理而设计的,它的性能可以达到微秒级的速度。
作为一款内存数据库系统(IMDS),eXtremeDB通过消除磁盘和文件I/O、缓存管理以及其他造成延迟的因素,实现了突破性的性能。由于直接使用主内存中的数据,eXtremeDB能够有效避免磁盘数据库管理系统(DBMS)固有的数据复制和传输开销。用户可以在共享内存中创建数据库,以支持多个进程的并发访问。
eXtremeDB优势
·进程内(嵌入式)数据库架构
eXtremeDB能够完全在应用程序进程中运行,消除了客户端和服务器模块之间的进程间通信(IPC)。相比之下,IPC消息是关系DBMS以及一些基于客户端/服务器设计的内存和面向列的数据库系统造成延迟的固有原因。
·执行路径非常短
eXtremeDB的代码路径非常短:核心数据库系统约150K的内存开销体现了McObject在不断的消除消除微小的延迟。通过减少每个数据库操作所需的CPU周期数并且提高操作所需代码位于一级/二级CPU缓存的可能性,这种短路径的特点能够有效加快代码的执行。
·安全特性
保护数据库。数据库页面级别的循环冗余检验(CRC)能够检测是否对存储的数据进行了未经授权的修改,RC4加密技术可利用用户提供的密码防止非法访问或篡改。
eXtremeDB劣势
·不支持存储过程和脚本级别的触发器;
·不支持外键;
·数据库定义(表结构)在运行的过程中不能修改表结构;
·和其他数据库同步需要一定量的二次开发。
6. ALTIBASE
ALTIBASE是一家提供内存数据库性能解决方案的韩国企业。ALTIBASE专注于研究开发,以提供实时存取、分析和任务关键环境中的大量数据分配。在 1999 年,公司创建了世界上第一个混合关系型数据库管理系统ALTIBASE HDB。经过内部技术实验室、 数百个用户站点以及国际尊崇的学术研究机构的密集试验与开发,ALTIBASE HDB已成为内存计算的领先产品。
ALTIBASE HDB第六版于2012年4月上市。该产品的混合架构式是内存数据库管理的首选解决方案,帮助企业及组织解决当前大数据和云计算方面的不断变化的挑战。ALTIBASE的根本目标是利用其内存计算的成熟技术和坚持不懈地寻找未开发的解决方案,让企业更上一层楼。ALTIBASE对积极推动性能解决方案充满热情。
ALTIBASE优势
·内存操作
为了高效管理大容量数据库,ALTIBASE被设计成高效使用每一层内存。ALTIBASE内存管理模块的设计和实现机制是使用自己的内存池管理内存。ALTIBASE的存储管理层(Storage Management Layer)管理内存中优化过的数据页,通过最大化各数据页之间的关系高效的存储和管理数据库。ALTIBASE的查询处理层(Query Processing Layer) 在处理查询时高效管理内存空间,尽量减少由于不必要的内存分配和释放导致的性能下降 。
·磁盘操作
作为大容量数据库高效管理的方案,ALTIBASE 在一个DBMS中提供内存和磁盘存储区。同内存一样,基于磁盘的存储支持 DRDBMS 的 LRU 算法的缓冲池和物理磁盘存储管理。用户将希望的数据加载到缓冲池,与高性能内存存储区的数据最小化性能最低。
·表精简
在内存数据库中,一个表可能会占用一些不必要的空间 。当大量数据被插入特定表之后频繁的发生更新和删除数据的操作时会发生这种情况。在这种情况下,DBMS 可以将不必要的内存返回给系统,提高内存空间的使用效率。ALTIBASE 提供表的精简功能,使用户高效管理表和内存 。
ALTIBASE劣势
1、不保证持久化
2、没有同步复制
3、没有和Oracle通信的cacheconnect类似的东西
三、产品功能对比表
四、总结
综上所述,几款主流的内存数据库各有优劣,企业在选择时除了考虑性价比,最重要的还是要适合自己的业务场景。内存数据库是一个不可逆转的趋势,它不仅能够大幅提升数据库的性能,还能够减轻数据库开发和管理人员的调优工作。目前,硬盘数据库仍然是无法取代的,但在不久的将来,相信内存数据库能够取代硬盘数据库,成为市场上的主流。