初步了解MongoDB

在自己工作学习的过程中,接触到了MongoDB,初步了解一番,感觉挺有趣的。而且感觉自己在数据库领域又多了一些了解,今天系统地梳理,总结一遍。

本文要点:

  1. 什么是MongoDB
  2. MongoDB的 pros 和 cons
  3. MongoDB scenario
  4. 与之相关的NOSQL
  5. Mongoose
  6. MongoDB Demo

1.什么是MongoDB

MongoDB is a cross-platform, document oriented database that provides, high performance, high availability, and easy scalability. MongoDB works on concept of collection and document.

上边引用了一段MongoDB官方的英文介绍。这段其实就是在说,MongoDB是一个跨平台面向文档高度可用支持扩展的数据库。它是基于集合文档来工作的。

点击这里有一篇生动的介绍

2. MongoDB的 pros 和 cons

pros:

  1. 具有很高的扩展性,因为表字段可以自由扩展
  2. 取消了RDBMS(关系型数据库)的表间关系。MongoDB支持表与表的内嵌,从而在一定程度上简化了对表的操作,提高开发效率。

cons:

  1. MongoDB只支持单文档事物,当业务操作需要多文档的时候,MongoDB会显得有些力不从心,但是可以通过两阶段提交实现多文档事务,相关文章1,相关文章2
  2. 对模糊查询支持比较弱
  3. 在InfoQ上的一篇介绍

3.MongoDB scenario

作为系统日志的存储引擎。
相关介绍文章:
MongoDB中的日志系统
利用log4j+mongodb实现分布式系统中日志统一管理
其他可能的scenario 相关文章:
when to use MongoDB
MongoDB use case
谈MongoDB的应用场景
什么场景应该用 MongoDB ?
MongoDB 应用场景?

4.与之相关的NOSQL

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

引用一段来自Runoob教程的介绍,根据我个人理解,NOSQL指的是一种区别于传统的RDBMS的一种全新的数据库,它不像RDBMS那样对表的结构,表与表之间的关系有着强烈的限制关系,它不要求数据必须按照一定的表结构来存储,所以这也给了存储数据很大的可扩展性,而且由于它的高性能,所以可以用于存储大规模数据。感觉这种设计理念给人一种比较随意自由的感觉。
这里有几篇有关NOSQL的详细介绍:
javapoint-nosql
runoob-nosql
why use nosql
nosql vs rdbms

5.Mongoose

个人理解,Mongoose是一个基于nodejs的ODM(ORM)框架,负责与MongoDB交互。
这里有几篇有关Mongoose的介绍:
MongoDB 的 ODM:mongoose 簡單介紹
mongoosejs doucment
mongoose入门(一)
《Mongodb 与 Mongoose 的使用》

6.MongoDB Demo

MongoDB Demo分为两种:

  1. 基于MongoDB Driver,实现原生的开发
  2. 基于Spring Data MongoDB框架进行开发1
  3. 基于Spring Data MongoDB框架进行开发2

后记:

这篇总结是在上班期间,挤出时间总结的。个人感觉不好的是里边少了很多自己的理解和分析,有许多方面的东西直接用相关的文章来替代了。不过先把自己对于MongoDB的了解、理解这个框架给搭建起来,然后再以后的开发过程中再继续去完善!** 就算时间再紧,也要挤出时间通过写一些文章来把自己了解,学习的东西给系统地梳理,总结一下。这是在帮助自己,也希望帮助他人**

你可能感兴趣的:(初步了解MongoDB)