2010-03-04 88 views
32

我正在考虑使用Cassandra作为数据库的项目。即使我们使用MySQL开始,我们希望最终迁移到Cassandra,因为它具有可伸缩性。我知道像Facebook,Digg这样的大公司,以及最近的Twitter都在使用Cassandra,但我不相信任何这些网站都会使用Rails。我的问题是使用Ruby on Rails来使用Cassandra是否可行。要考虑的几点:Cassandra生产是否准备好了Ruby on Rails?

  1. 我们严重依赖Authlogic gem。切换到Cassandra会影响它的工作原理吗?
  2. Cassandra是否有任何成熟的Ruby客户端?在Github上看起来,fauna's client (now twitters's client)是最成熟的。有没有人有过生产经验?

欣赏任何提示。

+3

是的,但不要以为这些公司都在使用Cassandra。例如,Facebook有一个大规模的MySQL部署,并且Twitter将所有的推文存储在MySQL中。考虑你的具体用例。 – 2011-02-02 06:14:21

+0

我会说Ruby对于Cassandra来说还不够成熟。 – 2015-05-25 19:29:54

回答

16

Twitter的大部分前端都运行轨道。 Fauna的客户端实际上是由twitter构建和发布的,因此您可以非常确定它在最新的工作负载上保持稳定。看看提交历史记录显示,推动它的频繁改进非常棒。

最有可能的Authlogic需要定制才能与Cassandra正常工作。特别是,它似乎提供了基于named_scope和关系数据的某些方法。

看来有人在Authlogic中为DataMapper支持构建了一个插件:http://twitter.com/collintmiller/statuses/2064046718。您可以将其作为使其与Cassandra兼容的起点。

祝你好运!

+0

谢谢。关于Fauna的澄清是非常有用的,我一定会研究DataMapper插件。 – funkymunky 2010-03-06 11:52:03

+1

另一个值得考虑的方法是:让你的Rails应用程序使用mysql和cassandra。通过这种方式,您的用户表(等等)可以使用AuthLogic保留在MySql上,而高容量表可以使用cassandra。我还没有尝试过,但从我看到的这听起来可能。 – 2010-03-20 03:28:12

9

我不认为从MySQL开始,然后移动到卡桑德拉是一个好主意。

Cassandra是一个NoSQL解决方案,而MySQL是一个“经典”的SQL驱动的数据库。

这意味着您的模型会有所不同。

如果你从MySQL开始,你将不得不依靠ActiveRecord来创建你的模型。如果您更改为Cassandra,则必须将所有模型更改为兼容NoSQL的中间件(例如BigRecord)。这不仅意味着改变你的模型,而且也意味着使用它们的控制器(因为它们的接口会不同)。

这就是说,卡桑德拉之类的应用程序应该用于非常苛刻的应用程序 - 比如twitter。

其余的网络应用程序的强度不那么强烈 - 你确定你还需要Cassandra吗?

PostgreSQL和一个设计良好的数据库在98%的时间内已经足够好了。

+1

完全同意。 NoSQL是一个很酷且令人兴奋的技术。如果你需要大幅度降低成本。错误你需要首先扩大规模。 – 2010-03-04 22:43:11

1

还有http://github.com/NZKoz/cassandra_object,其中IIANM建立在动物群客户端之上。 “Cassandra Object为Cassandra提供了一个很好的API。CassandraObjects大多与鸭子类型的ActiveRecord对象兼容,所以你的大部分控制器代码应该可以正常工作......只有当你想要帮助开发,现在有一堆粗糙的边缘。“

5

我现在在研究Cassandra,MongoDB和CouchDB。

判断哪个开发人员支持最多的方法之一是通过检查最高级别的github项目上的每个监视器的数量。至少作为一个粗略的估计。

现在它是

852 - MongoDB的 http://github.com/jnunemaker/mongomapper

544 - CouchDB的 http://github.com/jchris/couchrest

178 - 卡桑德拉 http://github.com/fauna/cassandra

虽然,我有一堆高调的说网站(Twitter,Digg,Reddit等)最近宣布他们正在转向Cassandra,这是一个很大的问题为他们提供信心。

到目前为止,Mongo似乎拥有最多最好的文档。他们的自动分片仍然处于alpha阶段,尽管如此,它的缩放比例还有待观察,我认为。

我刚刚开始了解所有这些东西,所以如果别人有洞察请分享。

+0

由于Mongo有很多用例,而这种情况有点扭曲,而像Cassandra这样的东西只会被具有特定需求的人使用,在这种情况下,性能很高等。 – Bitterzoet 2010-06-30 21:11:41

7

如果你再改卡桑德拉,你将有你所有的机型更改为NoSQL的

这是不正确的。如果你编程的方式是你的MySQL数据库没有加载连接,那么是的,你可能会遇到问题。当我们开始MySQL路由时,我们尽可能地避免了连接。然后,当我们开始迁移到Casandra时,这很容易,我们只在一开始就使用了1个模型。然后一起说4个模型。等等。事实上,当你阅读twitter的采访时,你会注意到他们同时运行MySQL和Casandra的同一模型:http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king

对于Authlogic,只要你愿意,你可以在mySQL中保留该部分,只要保持它与Cassandra数据的松散结合。

+0

感谢您的链接,这非常有趣。我们现在坚持使用MySQL,因为我们知道它100%适用于我们的应用程序。很高兴知道,未来可能转向Cassandra。 – funkymunky 2010-03-23 04:58:10