【IT168技术分析评论】
目前对于许多的Web应用程序来说,数据库仍旧是一个重要的瓶颈,Terracotta的开源Java群集方案或许能缓解这个问题的。通过Terracotta的开源Java群集方案除了可以增加Web应用程序的可扩展性和可靠性之外,还能“转储数据库”, “转储数据库”并非通常所指的转储数据库,指的是转储事务中间数据,提高Web站点抗压能力。
如今数据库的性能是越来越好,速度是越来越快。但是,对于许多Web应用程序和Web站点来说,它们仍是一个瓶颈。
为什么会这样?主要由于现在用的还是机械硬盘驱动;受物理性质所限制,使得关系数据库对硬盘读写操作速度减慢。
有什么解决方案吗?一种解决方案通过读写速度更快的固态硬盘(使用闪存颗粒(flash disk)制作而成,因而其外观和传统硬盘有很大区别。固态硬盘是未来硬盘发展的趋势),增加I/O速度。接着使用一个内存数据库,高速缓存内存中的大量访问数据。
另外一种解决方案与第一种方案不同,采用另外一种方式,其支持者说该方案要能得使基于Java的Web应用程的性能具有很大的提升,而避免花费昂贵的硬件费用和对低效率的数据库升级所带来的成本。
Terracotta公司的Terracotta软件是一种开源的Java群集解决方案,或许能达到第二种方案的效果。
群集技术则可以使你免于整个系统的瘫痪以及操作系统和应用层次的故障。一台服务器群集包含多台拥有共享数据存储空间的服务器,各服务器之间通过内部局域网进行互相连接;当其中一台服务器发生故障时,它所运行的应用程序将与之相连的服务器自动接管;群集技术不仅仅能够提供更长的运行时间,它在尽可能地减少与既定停机有关的停机时间方面同样有着重要意义。例如,如果使用群集,你可以在关闭一台服务器的同时,不用与用户断开即可进行应用,硬件,操作系统的"流动升级"。集群系统通过功能整合和故障过渡技术实现系统的高可用性和高可靠性,集群技术还能够提供相对低廉的总体拥有成本和强大灵活的系统扩充能力。
据Terracotta公司的首席执行官Amit Pandey声称,该软件通过绑定多JVM(Java虚拟机)来支撑基于Java的Web应用程序,形成一个大的群集。允许用户增加更多的应用服务器来,在应用程序的级别上向外扩展(向外扩展是指企业可以根据需求增加不同的服务器应用,依靠多部服务器协同运算,借负载平衡及容错等功能)。通过Java应用程序的所有事务产生的数据直接写入到磁盘,与数据库隔离,而在写入的过程中将所有的事务高速缓存。
通过这种方式,在处理事务过程中的生成的数据能够很快地存储,如果某个应用程序发生故障,事务就会很快的回滚,不必将每个中间结果写回到数据库本身,减少了数据库的访问写入量。
在处理事务过程中,这种方式是至关重要的,也是非常完美的,也就是说,数据在事务处理没有完成的情况下,就不需要写入到磁盘中。
Pandey说Terracotta已经有大约50个付费客户,其中大部分是企业,付费用户使免费用户的2倍多。付费客户中的公司有:Adobe Systems、Comcast、JP Morgan、 和 MapQuest.
客户中大部分将Terracotta和Oracle数据库一起使用。据Pandey声称,有一个公司是做在线测试的,通过使用Terracotta,增加了10个开源应用服务器,该公司能够服务的客户数量从10000增加到20000。该公司付给Terracotta和购买服务器的费用大约是$300,000。如果增加更多的Oracle数据库的话,公司得到的报价是$210万。
为什么Oracle不提供一个更便宜的解决方案呢?为什么不用Oracle TimesTen In-Memory 来作为Oracle数据库前端的高速缓存呢?
据Pandey声称,使用TimesTen会有“一些中断,不像我们的解决方案,具有同样数据的连续性,因为我们是将数据并行写入到磁盘的。”另外,Terracotta是在Java环境下运行的,意味着将Java对象变化到关系数据格式不会有性能损失。
Terracotta发布了2.6版本。新版本具备可视化、监视Java群集的活动、更好的性能,通过Apache 软件基金会(Apache Software Foundation),官方正式支持开源Tomcat 6.0应用服务器。
具有讽刺意味的是,Terracotta使用的是SleepyCat数据库(私人控股公司,成立于1996年,其核心产品是开源数据库伯克利DB(Berkeley DB),而该数据库已被Oracle收购,作为其永久存储库。在永久存储库中的数据在用户方便的时候能够转储到另外一个数据库中,用于以后的商业智能类型的查询。
从理论上说,Terracotta也能用于构建在Microsoft .net平台上的Web应用程序。因为我们没有看到这样的需求,所以对Microsoft .net平台上的Web应用程序支持还不够充分。Terracotta不能支持基于PHP的应用程序,但是PHP代码能够通过Quercus technology转换成Java代码。
Pandey 说erracotta通过用户现有的网络和安全软件来保护数据。另外,本身就没有API,想从Terracotta取出数据是相当难的。
那么你现在真的就可以用Terracotta来转储你的数据库吗?不是现在,根据Current Analysis的分析师Brad Shimmin说,无论什么时候,你都需要一个数据库来支持你的应用程序。但是,Terracotta只是扮演着与数据库同等地位的角色,这种组合(数据库和Terracotta服务器的组合)结果具备内存数据库的性能,但目前还不能用用Terracotta来转储你的数据库。
Pandey还说公司或许有一天构建一个组件,或许是面向对象的数据库,这样最终就能取代用户的惯用的关系数据库了。