ruby - 选择数据库技术

标签 ruby mongodb couchdb cassandra tokyo-cabinet

我们正着手构建一个在线平台(API、服务器、数据、Wahoo!)。对于上下文,假设我们需要构建类似 twitter 的东西,但评论(推文)是围绕现场事件组织的。有关实时事件本身的信息必须尽可能快且一致地交付给客户,而有关事件的评论可能需要等待更长的时间才能交付。现场事件结束后,我们将阅读大量内容。

可扩展性非常重要。我们想从租用 VPS 切片开始,并从那里扩展。我是云的忠实粉丝,并希望尽可能长时间地呆在那里。我们可能会使用 ruby 。

我确信我想尝试使用文档存储而不是 RDBMS。我喜欢无模式存储的想法以及通过关注键值来更容易扩展的 promise 。

问题是我不知道哪种技术最适合我们的平台。我查看了 Couch、Mongo、Tokyo Cabinet、Cassandra 和带有 Blob 文档的 RDBMS。为这项特定工作选择合适的工具有什么帮助吗?

最佳答案

查看 BJ Clark 的 NO SQL 替代比较.

Scalability is very important.

那么你需要考虑他博客的摘录:

  1. Tokyo Cabinet - 无法扩展
  2. Redis - 无法扩展
  3. 伏地魔计划 - 天平
  4. MongoDB - 受限(已实现分片)
  5. Cassandra - 天平
  6. Amazon S3 - 扩展
  7. Couch - 无法扩展(Clustering 和复制)
  8. MySQL - 无法扩展

并考虑 HyperTable .这也是 No-SQL 替代方案的有力竞争者。它是 Google BigTable 概念的开源实现。 我相信它可以很好地扩展,因为它被中国搜索引擎百度和娱乐门户网站 Rediff 广泛使用。

你是说:

Information about the live event itself must be delivered to clients as fast and consistently as possible, while comments about the event can probably wait a bit longer to be delivered. We'll be read-heavy after the live event finishes.

这有点像 Twitter 的方法。您的编程语言选择也很重要,因为 Twitter 最初使用 Ruby 进行后端消息传递,但 they were saying这不是一个正确的选择,他们已将整个消息传递系统移至 Scala语言。

他们仍在使用 Ruby 作为前端。如果您想使用非常适合可扩展环境的高度可靠、容错系统,那么您应该考虑 ScalaErlang .

关于ruby - 选择数据库技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2115318/

相关文章:

ruby-on-rails - 使用 id 作为标准时的 Mongoid where vs find

android - 使用 CouchDB Android 的用户身份验证

ruby - 我如何将 Ripper 的 AST 重新编译回 Ruby 代码?

mongodb - MongoDB与Elasticsearch过滤

ruby-on-rails - 无法在 Rails 上安装 pg gem

javascript - 如何通过计算任何数组项在 mongodb 聚合中添加新字段

javascript - CouchDB - 创建或更新文档时触发代码

couchdb - 如何在不提供 "limit"字段的情况下使用 Mango 查询 couchDB 获取无限文档?

Ruby & Postgresql LIKE 用于字符串和小数

ruby-on-rails - 根据一个关联查询一个集合,然后返回整个关联