博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongo数据库的数据模型
阅读量:4946 次
发布时间:2019-06-11

本文共 1572 字,大约阅读时间需要 5 分钟。

  在构建数据模型时,需要考虑数据的一致性、读取速度以及更新速度等。在目前的数据模型中主要包括两种:嵌入式和引用式。

  嵌入式

    嵌入式模型也就是将子文档以字段的形式添加到文档中。以博客为例,一篇博客包括:标题、内容、标签、作者姓名和评论,评论又包括评论作者、内容以及时间。评论是一个完整的文档,并且以子文档的形式嵌入到博客中。格式如下:

    

{     "_id":"" ,             "title":"",    "body":"",     "author":"",     "tags":[               "Tag1"               "Tag2"                "Tag3"     ],      "createDate":,     "comments":[       {        "body":"",       "author":"",        "createDate":""}]}

  

    嵌入式模型可以在获取博客相关的内容时,一次获取,减少了与数据库的交互。单文档操作可以保证数据要么执行成功要么失败,对于数据的一致性来说也是一种很好的体验。

  引用式

    所谓的引用式就是只将子文档的id嵌入到文档中,并且子文档以文档的形式保存到集合中。格式如下:

    

{     "_id":"" ,             "title":"",    "body":"",     "author":"",     "tags":[               "Tag1"               "Tag2"                "Tag3"     ],     "createDate":,     "comments":[        "comment_id1",       "comment_id2",        "comment_id3"]}

  

    在读取数据时,在读取博客内容后,通过博客中保存的评论id,再次从评论集合中获取所有对该博客的评论,在更新博客的评论时,只需修改博客评论即可。或者在搜索评论时,无需通过搜索博客来筛选。这样会大大提高操作效率。

  模型使用决策

    在选择数据库的模型来说主要考虑一下几点:

    1、如果在访问数据时只通过一种方式,并且在频繁的访问,具有强烈的数据一致性。可以通过嵌入式在实现。

    2、对数据的访问形式具有多种。例如博客中有许多评论可以通过博客来搜索评论,也可以通过评论的作者进行搜索。

    3、一次修改可以实现多个文档的修改可以通过引用式实现。例如人员信息中包含住址,住址有包含多项内容。可以在人员信息中只包含地址文档的id。

    4、文档与子文档具有一对多的关系时可以使用引用式实现。因为随着数据的不断增多,内存消耗更多。如果使用嵌入式,可能没法保证将整个文档一次获取,造成缺页现象,对读取数据造成影响。在更新性能上也会出现影响,由于一个子文档可能关联多个文档,引用式可以保证一次更新多个文档得到修改。提高了数据操作效率。

    5、文档与子文档存在多对多关系时,使用引用式可以减少数据冗余。如果使用嵌入式,一篇博客具有多个标签,一个标签可能有多篇文档。随着数据的不断增加,博客中不断有大量的标签重复,这会导致出现大量的冗余标签数据。同时在更新标签信息时也会由于大量的博客文档使用了标签,需要对每个文档进行更新,降低了更新效率。使用引用式可以降低数据冗余,提高更新效率,因为只需更新标签文档信息即可。

转载于:https://www.cnblogs.com/youzhongmin/p/8390722.html

你可能感兴趣的文章
codevs——T3657 括号序列
查看>>
读书笔记1
查看>>
[spring-boot] 健康状况监控
查看>>
Android 生命周期
查看>>
B. Complete the Word(Codeforces Round #372 (Div. 2)) 尺取大法
查看>>
Codeforces Round #540 (Div. 3)题解
查看>>
css选择器,伪类和伪元素的区别
查看>>
Linux系统调优及安全设置
查看>>
页面不可编辑
查看>>
oracle安装数据库中文乱码解决办法
查看>>
Keepalived 的使用
查看>>
Zabbix-微信报警
查看>>
小学奥数 蓄水池水管问题
查看>>
牛客网编程练习之PAT乙级(Basic Level):1032 选大王
查看>>
wamp虚拟路径访问配置
查看>>
360隐私保护器直指腾讯QQ 360真的发飙了,百度旁观!
查看>>
日常学习问题博客整理
查看>>
Ecstore Linux服务器环境基本配置
查看>>
Python PEP8 编码规范 注释
查看>>
面朝大海 春暖花开
查看>>