首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoSQL计划示例

NoSQL计划示例
EN

Stack Overflow用户
提问于 2017-02-17 09:35:19
回答 1查看 270关注 0票数 1

我在读一些关于NoSQL的东西。我知道它不是基于关系的,但是,我不知道如何做一些基本的事情。(并且我没有找到关于它的真实示例代码)。

我想存储用户,帖子和评论。

SQL版本:

代码语言:javascript
复制
user's table: user_id, username
posts's table: post_id, user_id, content
comments's table: comment_id, content

好的,很简单。

在我起草的NoSQL中( 100%功能,我现在没有使用MongoDB等任何技术):

代码语言:javascript
复制
users: 
{
    id: XX,
    username: "John"
},
{
        id: OO,
        username: "Mike"
}

posts:
{
    id: YY,
    content: "How are you all ?",
    user: {
        id: OO,
        username: "Mike"
    },
    comments: {
        id: ZZ,
        content: "Fine",
        user: {
            id: XX,
            username: "John"
        }
    }   
}

我本可以将用户的id存储在帖子和评论中,而不是整个用户,但我使用的是NoSQL,而不是SQL,所以我没有这么做。

首先?这种数据模型适用于NoSQL吗?

其次,如果上一个问题是yes,那么如果用户XX ( John )将其用户名更改为"Tony“怎么办?我可能不得不更新他的所有帖子,每个评论也是如此?!假设他在用户的生活中发布了10条000+评论,wtf。所以我猜我做错了。

你能澄清我的误解吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 17:36:08

这个问题的问题是,它假设所有的NoSQL数据库都是以相同的方式工作的,基于这个问题,您的问题看起来可能与如何在数据库中存储“文档”(JSON)相关,以便以后可以检索内容。我将从文档存储的角度回答这个问题:

正如您已经注意到的,NoSQL不提供关系,因此您需要手动处理它。在NoSQL中,反规范化通常是确保您可以在较少的往返数据库中检索文档的第一步,因此将用户名添加到帖子的方法是典型的方法。

您所说的问题是完全正确的,如果用户名更改了,会发生什么?这是有效的,但不太真实,博客中的用户名通常是一切的关键,所以改变它是一种很大的改变,通常是不允许的。

要执行这些关系,您可以稍后检索具有id的文档,并在需要时存储id,因此您可以像在SQL世界中一样规范化您的数据库,在这种情况下,如果id是用户而不是文档的内部id,您可能需要使用索引来确保良好的性能,或者使用用户名作为文档本身的id。在djondb中将类似于:

代码语言:javascript
复制
{ 
  "_id": "myuser",
  "name": "Cross"
}

然后博客就会有

代码语言:javascript
复制
{ 
   "userid": "myuser", 
   "content": "Hello world"
}

现在,如果您需要更新多个文档怎么办?在这种情况下,您将需要djondb,一个支持跨多个文档的事务的文档数据库,以保持数据库的一致性。

有关数据建模的更多信息:http://djondb.com/nosql-masterdetail-sample/

有关djondb中的事务的更多信息:http://djondb.com/section/transactions/

免责声明:我使用djondb,所以我总是有偏见的!

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42287856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档