Database NoSql/Raven DB实施最佳实践

Database NoSql/Raven DB实施最佳实践,database,architecture,nosql,ravendb,Database,Architecture,Nosql,Ravendb,我正在调查一个新项目,这将是一个社交网站风格的网站。我正在阅读RavenDb,我喜欢它的很多功能。我对nosql并没有太多的了解,但我想知道是否有一个适合它的利基,而老式的sql仍然是其他东西的最佳选择 我认为权限插件非常适合社交网络风格的网站——但它真的会在数据库受到冲击的环境中运行吗?或者它是为一个更具报告风格的系统而优化的,在这个系统中,它可以不断向数据库抛出新的数据结构并报告这些结构 我渴望使用合适的工具来完成这项工作——我将使用MVC3、Windsor+Nhibernate+Sql s

我正在调查一个新项目,这将是一个社交网站风格的网站。我正在阅读RavenDb,我喜欢它的很多功能。我对nosql并没有太多的了解,但我想知道是否有一个适合它的利基,而老式的sql仍然是其他东西的最佳选择

我认为权限插件非常适合社交网络风格的网站——但它真的会在数据库受到冲击的环境中运行吗?或者它是为一个更具报告风格的系统而优化的,在这个系统中,它可以不断向数据库抛出新的数据结构并报告这些结构

我渴望使用合适的工具来完成这项工作——我将使用MVC3、Windsor+Nhibernate+Sql server或RavenDb


我应该坚持老派的sql还是跟新来的ravendb一起去?

这个问题可能会变得非常主观(即使它真的不是),你谈论NoSQL就好像它只是一件事,而事实并非如此

你有

  • 图形数据库(Neo4j等)
  • 映射/缩减样式文档数据库(沙发、Raven)
  • 试图让人感觉像普通数据库(Mongo)的文档数据库
  • 键/值存储(Cassandra等)
  • 摩尔在这里
它们中的每一个都试图通过不同的方法来解决不同的问题,而您是否会在传统的关系存储中使用其中的一个则是非常困难的

  • 合适的问题
  • 个人喜好的问题
一天结束时,对于单个系统的数据存储,文档数据库或关系存储可能是您想要的,尽管对于系统的不同部分,您可能最终使用图形数据库(用于计算邻居等)或键/值存储(如Facebook用于收件箱消息)

选择文档存储作为主存储而不是关系存储的主要好处是,您不必担心试图将对象映射到表集合中,而且这样做所涉及的配置开销更少

另一个不利/有利因素是你必须学习新的东西,并在学习过程中犯错误

那么,如果我要直接回答,我的答案是什么

  • 拉文德是合适的
  • SQL将是合适的
你喜欢用哪一种?这些天,我可能会选择Raven,因为我知道我可以将数据转储到关系存储中以用于报告目的,也可能对我系统的其他部分也这样做,而不需要定义单独的读/写存储,就可以获得免费文本搜索和fastish写/快速读取,这是一个全面的胜利


但那是我,我有偏见。

这是一个很好的答案-@mikehadlow正在tardis bank中使用它,这是一个很好的学习来源,所以我将立即投入。你的评论加上几位同事足以说服我有时间在这里投资。权限方面的东西看起来很有趣——但这是否会像rhino.security一样存在可伸缩性问题?我没有使用权限方面的东西,我倾向于做一些比我使用时更粗粒度的事情。我想这完全取决于你如何使用它