我可以/我应该使用面向文档的数据库作为用户数据库吗?

时间:2012-02-06 04:26:27

标签: mongodb couchdb nosql

我正处于建立博客网站的早期阶段,用户可以在其中拥有多个博客。我决定为博客条目使用基于文档的存储(MongoDBCouchDB)。

但是,我需要管理我的用户 - 主要用于身份验证。这可以在面向文档的数据库中完成吗?我该如何设置?列出所有用户的一个文档似乎是一个坏主意。或者,我是否应该回到关系数据库(很可能是MySQL)?

2 个答案:

答案 0 :(得分:3)

在大多数情况下,它完全可能,甚至比RDBMS更实用。 RDBMS需要模式定义,而文档数据库往往在概念上是无模式的。这对用户数据库特别有用,因为您可以随时添加用户信息而无需任何迁移。例如,这是完全有效的:

{
    id: <your UUID>,
    name: "Willy",
    email: "willy@won.ca"
},

{
    id: <your UUID>,
    name: "John",
    facebookId: 10029823,
    avatarUrl: "http:\\graph.facebook.com\picture\10029823
}

换句话说,它提供了相当大的灵活性。我没有明显的缺点。

就CouchDB与MongoDB而言,选择取决于您的个人喜好。 CouchDB社区和支持有所下降,而MongoDB继续增长。我个人更喜欢MongoDB,但可以肯定地说CouchDB的API和整体设计更加清晰。

祝你好运。

答案 1 :(得分:0)

这是完全可能的,而且在我看来,这是一个好主意。像Remon说的那样,文档数据库的无模式设计对灵活性来说是一个好主意。

要回答关于如何建模的问题,我建议(在mongodb中)一组称为用户的文档,每个用户在集合中有一个文档。按用户名收集的唯一索引是个好主意。