NoSql/Raven DB 实现最佳实践

12

我正在调查一个新项目,这将是一个社交网络风格的网站。我正在研究RavenDb,并且很喜欢它许多功能。我没有仔细研究过nosql,但我想知道它最适合哪些领域,以及对于其他一些东西,老派的sql是否仍然是最好的选择。

我认为权限插件非常适合社交网络风格的网站-但它是否真的能在数据库被大量访问的环境中有效运行,或者它是否优化用于更多报告式系统,其中可以不断投入新的数据结构并报告这些结构。

我渴望使用正确的工具来完成工作-我将使用MVC3、Windsor+NHibernate+SQL Server或RavenDb。

我应该坚持老派的SQL还是尝试新出现的RavenDb?

1个回答

21

这个问题可能非常主观(尽管实际上并非如此),因为你在谈论NoSQL就好像它只是一件事情,但其实不是这样。

您有:

  • 图形数据库(Neo4j等)
  • map/reduce风格的文档数据库(Couch、Raven等)
  • 试图感觉像普通数据库的文档数据库(Mongo)
  • 键/值存储(Cassandra等)
  • 还有更多。

每种数据库都试图通过不同的方式解决不同的问题,您是否会使用其中之一而不是传统关系型存储,则取决于以下两点:

  • 适用性
  • 个人偏好

归根结底,对于单个系统的主要数据存储,文档数据库或关系型存储可能是您想要的,尽管对于系统的不同部分,您可能需要利用图形数据库(例如计算邻居等)或键/值存储(像Facebook针对收件箱消息所做的一样)。

选择文档存储作为您的主要存储与关系型存储相比的主要优势在于,您不必担心将对象映射到表集合中,并且在执行此操作时涉及的配置开销较小。

另一个缺点/优点是您必须学习一些新东西并犯错误。

那么如果我要直接回答问题呢?

  • RavenDB比较适用
  • SQL也可以

您更喜欢使用哪个?现在我可能只会选择Raven,因为我知道可以将数据转储到关系型存储中用于报告目的,并且可能也会对系统的其他部分做同样的事情;同时,无需定义单独的读/写存储即可获得免费文本搜索和快速写入/读取,这是总体上的优势。

但这只代表我的个人偏好,带有一定的偏见。


1
这是一个很好的答案 - @mikehadlow 在 tardis bank 中使用它,这是一个很好的学习资源,所以我要立刻深入研究。你的评论和几个同事已经足够说服我在这里投资时间。权限相关的东西看起来很有趣 - 但是它是否会遇到 rhino.security 那样的可扩展性问题呢? - user156888
我没有使用过权限相关的东西,当我做事情时,我倾向于使用更粗略的方法。完全取决于你如何使用它,我想。 - metdos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接