前一段时间一直研究通过Ruby操作MongoDB数据库,在学习的过程中也分享了自己学习成长的过程,撰写了包含两篇入门操作文章和十二篇进阶文章。本篇文章开始,我们将进入MongoDB的实战操作流程,MongoDB这一非关系型数据库-是一个文档型数据库,存储的是面向文档的数据。
-
如何在MongoDB数据库中使用schema
设计数据库schema是在已知数据库系统特性、数据本质以及应用程序需求的情况下为数据集选择最佳表述的过程。传统的关系型数据库RDBMS中鼓励使用正规化的数据模型,从而确保数据的可查询性和解决数据更新带来的不一致问题。但是schema的设计不是一门精确的科学。当出现要应用程序处理非结构化数据,或者应用程序对性能要求很高时,就可能会要求一个通用的数据模型。MongoDB中缺乏硬性Schema设计规则。
为了能够参考传统RDBMS的schema设计规则,我们首先需要清楚RDBMS和MongoDB在如下三个方面的对应关系和相应区别:
-
数据的基本单元分别是什么?
在RDBMS中,数据的基本单元指的是带有列和行的数据表;
在键值存储中指向不定类型值的键;
在MongoDB中,数据的基本类型是BSON文档
-
如何查询和更新数据?
数据查询操作中:
RDBMS支持即时查询和联结操作查询;
MongoDB支持即时查询,但是不支持联结操作;
简单的键值存储只能根据单个键来获取值
数据更新操作中:
RDBMS中,可以使用SQL以复杂的方式来更新文档,将多条更新封装在一个事务中可以获得原子性,还可以回滚;
MongoDB不支持事务,但支持多种原子操作,这些操作可以作用于复杂文档的内部结构;
简单的键值存储中,可以更新一个值,通常每次更新都是将值完全替换掉。
-
应用程序的访问模式是什么?