利用内存技术提升性能

日期: 2014-09-23 作者:Mike Matchett 来源:TechTarget中国

内存处理(In-memory processing)可以提升数据挖掘与分析,以及其他动态数据处理性能。尽管如此,在使用内存处理技术时,还需考虑数据保护、成本与性能瓶颈。

当需要顶级的数据库性能时,内存处理可以提供极低的延迟。但事实上,企业会考虑使用内存数据库的性价比。尚无法确定投资是否能真正产生商业回报。

即使提升性能的需求合理,能否保障内存中重要实时数据安全,免受损坏或丢失?这样的内存系统规模是否能够跟得上指数级的数据增长?

厂商为解决上述问题持续努力着。他们试图通过实践体现内存处理的性能优势,提高IT市场中如分析、互动决策与其他(近)实时情况下的处理性能。

内存是最快的存储介质

使用内存来提高I/O密集型应用性能并不是新理念,它一直都存在,在内存中处理数据的速度远比那些速写速度慢的介质要快(大概10至1,000倍)——包括闪存。

在计算机的初期,性能密集型产品已经将内存作为数据缓存使用。大多数数据库都被设计为尽可能多的使用内存。也许还有人记得,早在MS-DOS时代,需要设置RAM盘来为PC存储临时数据,从系统中挤出更多速度。

现今的内存处理会把这一理念发挥到极致:采用主动内存(动态RAM)来保存当前正在运行的数据库代码和活动数据结构,并且将不变的数据库保存在内存中。这些数据库已经无须再通过主板去和外部媒体进行交互,而是优化其驻留在内存中处理的数据结构。

从历史上看,单台服务器的内存密度和内存成本是两大限制因素,但现今已可以扩展应用程序使用更大量级的内存处理技术。这包括每台服务器内存体系结构,内联/联机重复数据删除与压缩技术,使用额外的CPU计算能力(相对便宜)来榨取更多数据到内存中,而且集群和网格工具可以提升总体内存的使用效率。

内存变得更便宜、更密集。现在笔记本标配都已经比曾经的大型机内存容量还要大。今天,任何人都可以用信用卡便宜的从诸如亚马逊AWS那里买到云计算资源,它最近刚推出的R3高内存服务器拥有244GB RAM,费用为每小时2.8美元。预算充足的企业可以考虑具有4TB内存的HP ProLiant DL980 G7服务器,或6TB内存的Dell R920,还可以考虑使用具有32TB内存的Oracle M6-32。

内存中计算不但能够满足传统结构化数据应用程序的需求,也在大规模非结构化数据处理领域风靡一时。Hadoop集群可以利用商品服务器架设,每个结点的内存可高达128GB,实现内存中数据实时查询与计算。

缓存、分析与交易应用

在传统交易型数据库中,只有热数据记录因性能问题需要保存在内存中,性能更低的廉价磁盘用于提供数据存储空间。数据库引擎一直以来都按这样的目的而优化。现在,把整个数据库都载入内存已经成为可能。范围可以从网络规模,分布式键值缓存存储与分析型数据库,到实时“运营智能”网络。

大型Web应用程序,数千并发用户会连接到Web服务器,每次访问网页时,都会要求服务器提供稳定持久的“会话数据”。在这种情况下,交易集中的数据库应用将成为很大的瓶颈。可扩展的数据库产品,如Memcached和Redis提供了快速、内存中缓存的键值类型数据。

在很多数据挖掘、采集与分析场景中,整个数据库都会需要进行结构化的重复查询,将整个数据库运行在内存中有利于提升性能。专为商业智能(BI)设计的纵列分析型数据库已经优化了数据存储结果,但是经常会以某种压缩状态存在,不适合进行大规模事务性操作。在快速分析的产品竞赛中,内存中处理这一功能正在进化。

SAP的HANA就是业界领先的产品,横向扩展型内存数据库被设计用于承载关键ERP数据。其可以提供近乎实时的BI金矿,并且同样可以用于其他数据。需要花费传统数据库数小时的报表,可以在HANA中几秒完成。它还可以直接用于处理交易事务,从而进一步增加其效用。

其他列式分析数据库厂商,如Teradata与HP Vertica,力争尽可能多的使用内存,例如压缩在内存缓存中的列数据。他们同样支持因为数据量太大,考虑到性价比无法完全将所有数据放入内存的方案。Vertica为例,提供了一种混合内存技术,可以快速将数据导入内存(一般来说从硬盘中),实现近乎实时的磁盘与内存数据访问。

Oracle拥有完整的内存处理产品,支持分析与快速联机事务处理(OLTP),如高端的TimesTen以及Exadata一体机,而且还针对自己传统数据库软件也增加了内存处理的功能。

Oracle Hybrid Columnar Compression (HCC)是个压缩事务性数据的好例子,这样可以确实提高分析速度。就在本杂志上线之前,Oracle刚刚发布了其内存中处理的革新功能——Oracle 12c内存数据库选件,可以使用HCC模式进行快速分析并将完整事务放入内存中,提高OLTP速度。

而今年,微软也进一步加强了SQL Server功能,支持内存中的OLTP。Hekaton项目或SQL Server 2014让DBA可以指定单个数据表运行在内存当中而非传统磁盘,以充分发挥其作用,并将实现内存表与磁盘中表的透明交互传输。

内存中的数据受保护吗?

IT最关注的数据问题之一就是数据保护。DRAM虽然够快,但是如果你拔出插头,一切都完了。而且即使将其备份到持久性存储介质,如何快速恢复?毕竟投资内存增加实时计算竞争力的价值与宕机的时间相比,还是存在差距的。

一种常见的方法就是使用本地磁盘或固态硬盘作为本地存储目标,记录所有日志与最近数据更新(以防断电,重启等)。然而仅仅这样是不够的,如果服务器出现故障或硬盘损坏,数据可能完全丢失。

保护内存数据的好例子如SAP HANA,会使用HP最近发布的Data Protector与Store Once Federated Deduplication。Data Protector收集HANA数据并第三方通过管道应用程序接口的方式作为流传输。最终将目标备份到StoreOnce的全局去重存储中。

如果出现任何问题,HANA可以通过Data Protector的接口,恢复本地或远程的StoreOnce目标数据备份。

网格系统

金融行业可以说是内存技术的忠实用户,并且还建立了横向扩展的内存网络来实现实时的智能运营,承载大规模的快速流媒体数据。Tibco、ScaleOut Software、Pivotal还有GridGain提供的网格系统已经超越了内存数据库的功能,提供更宽广的计算平台,数据库运营、大数据处理和其他数据密集型任务都可以接近实时的处理。如果你正创建高性能的内存应用,那么很有可能已经使用到了上述的解决方案。

网格平台旨在确保企业数据保护、灾难恢复与高可用功能都可以内置实现。以GridGain为例,可以支撑多个节点故障,具备原始数据中心复制功能,甚至还支持零停机时间的升级。

ScaleOut对达到一定规模的企业提供了免费许可,而GridGain已经发布了开源的社区版。

你还需要注意哪些问题

在购买大内存系统提升性能之前,先要深入了解你究竟需要什么样的性能,还有目前的瓶颈在哪里。内存依然会比传统硬盘或闪存贵得多,而且还可能有其他的方法,用更少的开销和精力来获得你想要的性能。

如果你正使用MySQL或MongoDB数据库,一种快速且便宜的方法就是将数据库引擎从默认配置调整为性能优化配置,如使用Tokutek的“fractal”索引技术。这是一个相当值得考虑的免费升级,不会涉及到任何基础设施或应用程序中断。

尽管如此,内存价格将持续降低,而服务器的内存密度将继续增加。大内存配置可能很快就会成为服务器高级配置的标准,还有处理器高速缓存,甚至非易失性存储(闪存)。随着越来越多的内存选择,更多数据处理将在内存中完成。

与此同时,数据的增长远超内存的增加,所以还是需要可将大规模数据传输并保存在更廉价介质上的方法。IT的关键能力也是机遇之一,就是持续优化复杂的数据化境,动态引导数据流并管理保存在最快介质上的数据。

 “内存处理”不止在横向扩展的结构化数据中兴起,非结构化大数据环境也在发展,同样还加速了数据处理的本质转变。随着数据变得更动态,更流式,更集群也更“在线”,任务处理会被要求动态的路由到相关数据,而不是简单回到以主机为中心的计算机静态数据。

换句话说,计算也需要像数据一样流化,而数据是驻留在服务器上的。管理与智能优化将成为未来的另一个大问题。

本文首发于TechTarget电子杂志《数据库工程师》,如有对内存数据库技术感兴趣的朋友,可以免费下载本期电子杂志

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Mike Matchett
Mike Matchett

Mike Matchett is a senior analyst and consultant at Taneja Group.

相关推荐