34

我正在研究一个正在考虑使用 Cassandra 作为数据库的项目。考虑到它的可扩展性,即使我们一开始使用 MySQL,我们也希望最终迁移到 Cassandra。我知道 Facebook、Digg 和最近的 Twitter 等大公司都在使用 Cassandra,但我不相信这些网站中的任何一个都使用 Rails。我的问题是使用 Ruby on Rails 使用 Cassandra 是否可行。需要考虑的要点:

  1. 我们严重依赖 Authlogic gem。切换到 Cassandra 会影响它的工作方式吗?
  2. Cassandra 有成熟的 ruby​​ 客户端吗?在 Github 上看,动物群的客户端(现在 twitters 的客户端)似乎是最成熟的。有人有生产经验吗?

感谢任何提示。

4

5 回答 5

17

Twitter 的大部分前端都在运行 rails。Fauna 的客户端实际上是由 twitter 构建和发布的,因此您可以非常确定它在大型工作负载上是最新的并且稳定的。查看提交的历史表明,它经常被推送改进,这很棒。

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

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

祝你好运!

于 2010-03-04T21:51:56.347 回答
10

我不认为从 MySQL 开始然后迁移到 Cassandra 是一个好主意。

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

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

如果你从 MySQL 开始,你将不得不依赖 ActiveRecord 来创建你的模型。如果您随后更改为 Cassandra,则必须将所有模型更改为与 NoSQL 兼容的中间件(例如BigRecord)。这不仅意味着更改您的模型,还意味着更改使用它们的控制器(因为它们的界面会有所不同)。

这就是说,Cassandra 等应该用于要求非常高的应用程序——比如 twitter。

其余的 Web 应用程序的强度要低几个数量级——你确定你仍然需要 Cassandra 吗?

PostgreSQL 和一个设计良好的数据库,在 98% 的情况下都足够好。

于 2010-03-04T22:38:14.823 回答
7

如果您随后更改为 Cassandra,则必须将所有模型更改为 NoSQL

这根本不是真的。如果您的编程方式是让您的 MySQL 数据库执行大量连接,那么是的,您可能会遇到问题。当我们开始 MySQL 路由时,我们从一开始就尽可能地避免连接。然后当我们开始迁移到 Casandra 时,这相当容易,我们一开始只使用 1 个模型。然后一口气说4个模型。等效果很好。事实上,当你阅读 twitter 的采访时,你会注意到他们为同一模型并行运行 MySQL 和 Casandra 一段时间: http: //nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview -与瑞安国王

至于 Authlogic,您可以将这部分保留在 mySQL 中,只要您愿意,只需将其与您的 Cassandra 数据松散耦合即可。

于 2010-03-21T23:48:41.157 回答
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 阶段,因此我认为它的扩展性如何仍有待观察。

我刚刚开始了解所有这些东西,所以如果其他人有见识,请分享。

于 2010-03-20T06:04:30.670 回答
1

还有http://github.com/NZKoz/cassandra_object,IIANM 在动物群客户端之上构建。“Cassandra Object 为使用 Cassandra 提供了一个很好的 API。CassandraObjects 大多与 ActiveRecord 对象兼容,因此您的大多数控制器代码应该可以正常工作......仅当您希望帮助开发时才在生产中使用它,现在有一堆毛边。”

于 2010-03-05T14:02:26.130 回答