2010-12-15 71 views
0

对于初学者,我是NoSQL概念的新手。在NoSQL和SQL中使用关系

我基本上是开发一个API,允许用户创建和我们的数据库中存储对象。这将通过各种前端程序发生,并导致程序保存每个用户的私人数据,共享数据的程序和数据挖掘 - 访问许多用户的相关数据。一个用户可以有很多对象,我们并没有限制对象是什么或访问它(程序将负责确保它们之间的通信),所以可能的对象将是其他对象的阵列等。

什么对于具有不同权限的用户而言,PER OBJECT ACL非常重要。我也期待的东西,如对象等

各种查找我能想象是标签:

  • 直接 - 用户要求文件
  • 列表我的 - 因为我能看到什么
  • 用户list owned - 我创建了哪些对象
  • list tagged - 哪些对象标有'appX',我可以访问。 并且将不可避免地会有许多其他人

我包括上面显示我正在考虑的方案。虽然目前我并不关心可扩展性,但我喜欢NoSQL架构免费概念,以便应用程序可以查询我不知道的对象数据。 /用户/ obj/1/2/3我所知道的是用户有obj。

但是场景似乎很关系给我。用户有obj,obj有权限,权限有用户和attrs等。我很确定我可以在RDMS基础中构建它,只需很多序列化对象和json数据存储,但它似乎是一个主要的NoSQL项目(和我听过很多,想试试看)。

所以问题:

  • 这是对NoSQL的工作吗?
  • 我如何高效地创建对象之间的这种联系(想的MongoDB)和一般没有任何文件/关于如何在数据的NoSQL(希望从关系数据库管理系统的角度)模型来处理这样的事情没有过多查找教程。从我一直在阅读的内容来看,我无法看到存储这种数据的方式,这些数据可以轻松地让上述情况无需恢复到关系系统。
  • 如果有一个RDMS /键-VAL折衷由此芯AUTH和privlidges在RDMS被处理给人一种键关闭的键/ VAL为对象查找(不知道如何子对象/用户/ OBJ/1/2许可将在这里工作)。这应该是答案吗? :)
  • 任何其他一般建议表示赞赏。被吹捧的Facebook用例必须回答这样的关系问题,所以我确信NoSQL可以做到这一点 - 我只是还没有看到它如何做得更好。

感谢您与长期问题坚持。

回答

2

NOSQL:用户的庞大的数字,速度是至关重要的,真的不关心数据完整性(它如果它发生在一个奖金)

SQL(RDBMS):一切。

0

首先,我不能回答你的整个问题,但是从我的理解:

如果这是你查找的程度:

direct - user asks for file 
list mine - as a user what can i see 
list owned - what objects have i created 
list tagged - what objects are tagged with 'appX' that i can access. and there will inevitably be many others 

MongoDB是罚款。如果您因为任何原因需要从文件转到用户,那么您想使用SQL。

+0

我可以看到诸如撤销特权等情况,您必须知道用户对对象有何影响 – jumentous 2010-12-16 03:33:35

+1

@jumentous我的感觉是,除非您对速度有巨大需求,否则应该使用rdms。 – Mark 2010-12-16 03:51:06