2011-10-09 28 views
1

我正在制作一个具有社交网络功能的系统。我想知道您对持久性技术最适用于某些功能的想法。应用程序特性持久性选择 - NoSQL还是RDBMS?

让我们系统的三个基本特征:

  • 用户流 - 应用程序中所有用户活动将被记录下来,然后在用户的个人资料显示,这将是类似Facebook的墙。这将是应用程序的主要重点之一,它需要尽可能获得最佳性能。
  • 应用和安全日志 - 这里是应用程序的错误被存储,并且如其它用户相关的数据:IP,地理空间位置,历史日志等,这部分将被用作附加的安全层。
  • 显示应用程序,用户和广告的统计信息。

上述每个特征的理想持久性技术是什么?如果某些答案是关系数据库,为什么最好在NoSQL上选择关系数据库?如果答案是NoSQL,那么最推荐的NoSQL是什么?

对不起了很多问题,但我学习,我可以走了,想从那些谁已经不懂的题目,所以我不走沉淀的决定,听取选项。

注:如果你可以提高问题的标题,请随时自由地这样做。

回答

4

去之前投入使用的情况下,NoSQL的是有没有办法解决several problems。不管是什么的答案(S)你来到这里,想想这些问题:

  • 你希望你的系统依靠BigData
  • 难道被分布式受益?
  • 多少停机时间是确定的?
  • 您是否愿意在不同的数据中心支持3个大型盒子,或者300个小型盒子?

我们您的使用情况:

  • User Stream =>

的NoSQL绝对可以解决这个问题,因为这里没有100%的一致性要求。话虽如此,这是有趣的你提到的Facebook,因为它们依赖于庞大的MySQL农场来解决这个问题:)

  • Application and security logs =>

NoSQL的是存储日志很大,其实很多一些NoSQL解决方案构建在之上的数据结构是类似日志的结构:Log-Structured Merge-Tree这是/在Google BigTabe,Cassandra和其他平台中使用的。加上日志可以长到相当庞大,因此能够缩放尺寸与NoSQL的

  • Statistics of the application容易=>

你这里没有提供太多细节,但NoSQL的肯定可以解决displaying stats

现在你的问题应该你去NoSQL。真相被告知:

如果大多数的NoSQL大师带着面具了,他们会同意的,开发者解决日常问题,MOST可以和相当与一个SQL的解决方案来解决,如PostgreSQL的,MySQL等等,还有一些很酷的Redis缓存层。只有一小部分问题会从NoSQL中真正受益。

如果你决定去与NoSQL的,我会建议一个基于Erlang的解决方案(了Riak,CouchDB的),因为NoSQL的,容错数据库应该有一个非常强大的,灵活的,自然分布的基础=>如Erlang OTP。加简单是王道。当然,他们拥有大多数语言的客户端,所以如果你不想要的话,你甚至不需要知道如何拼写Erlang。

+0

+1对于一个非常非常好的答案! – Bojangles

相关问题