我们正准备建立一个在线平台(API,服务器,数据,Wahoo!)。对于上下文,假设我们需要构建类似于twitter的东西,但是在现场活动周围组织评论(推文)。有关实况事件本身的信息必须尽可能快速且一致地提供给客户,而关于事件的评论可能需要等待一段时间才能交付。在现场活动结束后,我们会读得很重。
可扩展性非常重要。我们想开始租用VPS切片,并从那里开始扩展。我是云的忠实粉丝,并希望尽可能长时间留在那里。我们可能会使用红宝石。
我确信我想尝试文档存储而不是RDBMS。我喜欢无模式存储的想法,以及通过关注键值来实现更容易扩展的承诺。
问题是我不知道哪种技术最适合我们的平台。我看过Couch,Mongo,Tokyo Cabinet,Cassandra和带有blobbed文档的RDBMS。有没有帮助为这个特定的工作选择合适的工具?
答案 0 :(得分:7)
通过BJ Clark查看NO SQL备选方案比较。
可扩展性非常重要。
然后你需要考虑他博客的摘录:
考虑HyperTable。这也是No-SQL替代方案中的一个重要竞争者。它是Google BigTable概念的开源实现。 我相信它的扩展性很好,因为它被中国搜索引擎百度和娱乐门户Rediff广泛使用。
你在说:
有关直播活动的信息 本身必须以交付方式交付给客户 尽可能快速一致 而关于该事件的评论可以 可能要再等一会儿了 交付。之后我们会读得很重 现场活动结束。
这就像Twitter的方法。您的编程语言选择也非常重要,因为Twitter最初使用Ruby进行后端邮件传递,但they were saying这不是正确的选择,他们已将整个邮件传递系统移动到Scala语言。
他们仍在使用Ruby作为前端。如果您希望使用非常适合可扩展环境的高度可靠,容错系统,那么您应该考虑Scala或Erlang。
答案 1 :(得分:1)
Ramesh有一个很好的总结。我想补充一点,Cassandra拥有比vanilla Dynamo克隆(如Voldemort或Dynomite)更丰富的数据模型:具有命名,排序列而不仅仅是键/值的行。 Cassandra正在被Twitter,Mahalo,Ooyala,SimpleGeo,WebEx和其他人(http://n2.nabble.com/Cassandra-users-survey-td4040068.html)使用,其中至少有一些在EC2或机架式云服务器上运行Cassandra集群。
答案 2 :(得分:1)
如果要水平扩展(在多个节点上分布数据),则必须考虑CAP定理。
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem
这不是一件容易的事,但你必须选择,总会有某种折衷。