5

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

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

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

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

4

3 回答 3

7

查看BJ Clark的 NO SQL 替代方案比较。

可扩展性非常重要。

然后你需要考虑他博客的摘录:

  1. 东京内阁 - 没有规模
  2. Redis - 无法扩展
  3. 伏地魔计划 - 天平
  4. MongoDB - 有限(已实现分片)
  5. Cassandra - 天平
  6. Amazon S3 - 扩展
  7. 沙发 -无法扩展集群和复制)
  8. MySQL - 无法扩展

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

你说:

有关实时事件本身的信息必须尽可能快且一致地交付给客户,而有关事件的评论可能需要等待更长的时间才能交付。现场活动结束后,我们将阅读大量内容。

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

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

于 2010-01-22T06:10:48.677 回答
1

Ramesh 有一个很好的总结。我要补充一点,Cassandra 具有比普通 Dynamo 克隆(如 Voldemort 或 Dynomite)更丰富的数据模型:具有命名、排序列的行,而不仅仅是键/值。Twitter、Mahalo、Ooyala、SimpleGeo、WebEx 和其他 ( http://n2.nabble.com/Cassandra-users-survey-td4040068.html ) 正在使用 Cassandra,其中至少有一些在 EC2 上运行 Cassandra 集群或机架空间云服务器。

于 2010-01-22T15:30:45.840 回答
1

如果您想水平扩展(将数据分布在多个节点上),则必须考虑 CAP 定理。

http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

这不是一件容易的事,但你必须选择,总有某种权衡。

于 2010-01-22T22:24:53.950 回答