[Logo] Terracotta Discussion Forums (LEGACY READ-ONLY ARCHIVE)
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
[Expert]
Terracotta 能否完全取代数据库?  XML
Forum Index -> Terracotta 中文社区
Author Message
tianhaoleng

neo

Joined: 11/02/2009 19:17:20
Messages: 1
Offline

想问的是Terracotta 有没有提供一种对象的持久化机制,可以取代数据库。
lima

consul
[Avatar]
Joined: 06/22/2009 10:12:31
Messages: 361
Offline

Terracotta的确有很好的对象持久化的能力,从某种意义上说跟数据库的持久化有很大交集。但是要完全替代数据库,这个要看具体项目的需求。我认为100%替代是很难。但是50%替代或者缓解对数据库的压力是有很大可能的。

Terracotta能够在集群范围内对Java对象进行持久化存储、数据共享、加锁、增删改等,并且效率非常高,使用也非常简单。这都是跟数据库相比,Terracotta的优势所在。

但是我认为用Terracotta替代数据库的困难有如下几点:
1、查询能力:Terracotta毕竟不是面向对象的数据库,对大家都非常熟悉的SQL没有任何支持。那对复杂的SQL查询也就无从谈起。比如你要从数据集中找到某几个字段的值符合某些条件的所有对象,这个在Terracotta里面是没有内置支持的。通过tim-searchable可以实现一些功能,但是离传统数据库的灵活性来说还差得远。想基于Terracotta做一个报表几乎是不可能的。

2、通用管理能力:没有通用的工具来管理Terracotta管理的Java对象。简单的信息可以从Dev-console里面获得。但是对数据的动态处理、分区、保存、优化、修改等等都没有办法。数据的可见性跟一般的数据库管理工具也差得远。

除非是特殊的应用场景,用户只需要达到数据持久化的能力,上面两个问题对业务来说不重要,那的确可以考虑使用Terracotta代替数据库。也有用户处的确这么做了。这个比例还是太少。

最佳的使用方式还应该是以传统数据库为基础,利用Terracotta分担数据库的压力。
比如通过缓存,减少对数据库的查询。这个原理大家都很清楚,也很容易应用。
另外就是仔细考察问题空间里的对象类别。并不是所有的数据都需要保存到数据库里的。比如很多临时性的数据,没有查询和统计要求的,象session数据、在线考试过程中的中间答案等等,都可以用Terracotta来保存。等到中间数据处理完毕,需要把最终结果保存用于以后的统计和报表的时候,就应该保存在数据库中了。

Terracotta还提供了一个异步存储的TIM,叫tim-async。可以通过这个插件把Terracotta管理的中间数据异步方式保存到数据库或者其它持久化平台(文件、JMS等)中去。

从技术上讲,Terracotta跟数据库之间,应该不是竞争关系,而更多的是相互依赖,互相促进。

对用户来说,数据库是目前很多大型应用中性能方面的一个瓶颈,也是成本很高的一个部分。通过Terracotta缓解数据库压力、提高整个系统的效率,实现高可用性、替用户节约成本,这是Terracotta主要的价值所在。
 
Forum Index -> Terracotta 中文社区
Go to:   
Powered by JForum 2.1.7 © JForum Team