MongoDB修炼手册(一)—— 概念篇

327 阅读2分钟

MongoDB是什么

MongoDB是一个基于分布式文件存储的数据库,由C++编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json和bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 ——《百度百科》

与关系型数据库的差异

从数据结构上来说,存在着如表所示的差异。

MongoDB关系型数据库
数据库(Database)数据库(Database)
集合(Collection)表(table)
文档(Documents)行(Row)
列 (Column)字段(Field)
索引(Index)索引(Index)
主键(自动生成_id作为主键)主键(Primary key)

举个例子,SQL中有数据如下表:

iduserNameemailagecity
1yellowbird555@qq.com25shenzhen

在MongoDB中对应的文档就应该是:

[{    "_id": ObjectId("611a16ec2f5cdee36011d53e"),    "userName": "yellwobird",    "email": "555@qq.com",    "age": 25,    "city": "shenzhen"}]

对于前端人员来说,MongoDB的文档模型最接近于我们日常开发的对象模型,从理解上更加简单易懂。相较于关系型数据库,MongoDB具有更高的读写性能,由于文档模型把相关数据集中在一块,在普通机械盘上读数据到时候不用花太多的时间去定位磁头,因此在IO性能上具有得天独厚的优势。由于MongoDB对于文档的数据结构以及格式没有严格的限制,所以更容易支持异构数据的场景,可拓展性强,因此,我们可以任意的在文档中新增或者删除字段,也不会对数据库的稳定性产生影响,但也正因为如此,MongoDB的管理会比关系型数据库更加难以管理。

作为文档型的数据库,其关系能力薄弱,不能像MySQL一样使用join,union来进行联合查找,只能通过结合一些特殊语法来达到类似的结果。

综上,如果项目中使用事务和关联查询较少,或是数据相对比较不敏感的情况都可以使用MongoDB。