MongoDB实战-面向文档的数据(找到最合适的数据建模方式)

本文介绍了MongoDB的schema设计,对比了RDBMS和MongoDB在数据模型上的区别,并通过电子商务案例展示了如何在MongoDB中建模产品、分类、用户订单和评论信息,强调了去正规化在解决MongoDB无联结查询问题中的作用。
摘要由CSDN通过智能技术生成

  前一段时间一直研究通过Ruby操作MongoDB数据库,在学习的过程中也分享了自己学习成长的过程,撰写了包含两篇入门操作文章和十二篇进阶文章。本篇文章开始,我们将进入MongoDB的实战操作流程,MongoDB这一非关系型数据库-是一个文档型数据库,存储的是面向文档的数据。

  1. 如何在MongoDB数据库中使用schema

  设计数据库schema是在已知数据库系统特性、数据本质以及应用程序需求的情况下为数据集选择最佳表述的过程。传统的关系型数据库RDBMS中鼓励使用正规化的数据模型,从而确保数据的可查询性和解决数据更新带来的不一致问题。但是schema的设计不是一门精确的科学。当出现要应用程序处理非结构化数据,或者应用程序对性能要求很高时,就可能会要求一个通用的数据模型。MongoDB中缺乏硬性Schema设计规则。

  为了能够参考传统RDBMS的schema设计规则,我们首先需要清楚RDBMS和MongoDB在如下三个方面的对应关系和相应区别:

  • 数据的基本单元分别是什么?

    在RDBMS中,数据的基本单元指的是带有列和行的数据表;

    在键值存储中指向不定类型值的键;

    在MongoDB中,数据的基本类型是BSON文档

  • 如何查询和更新数据?

    数据查询操作中:

     RDBMS支持即时查询和联结操作查询;

     MongoDB支持即时查询,但是不支持联结操作;

     简单的键值存储只能根据单个键来获取值

    数据更新操作中:

     RDBMS中,可以使用SQL以复杂的方式来更新文档,将多条更新封装在一个事务中可以获得原子性,还可以回滚;

     MongoDB不支持事务,但支持多种原子操作,这些操作可以作用于复杂文档的内部结构;

     简单的键值存储中,可以更新一个值,通常每次更新都是将值完全替换掉。

  • 应用程序的访问模式是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值