在自己工作学习的过程中,接触到了MongoDB,初步了解一番,感觉挺有趣的。而且感觉自己在数据库领域又多了一些了解,今天系统地梳理,总结一遍。
本文要点:
- 什么是MongoDB
- MongoDB的 pros 和 cons
- MongoDB scenario
- 与之相关的NOSQL
- Mongoose
- 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:
- 具有很高的扩展性,因为表字段可以自由扩展
- 取消了RDBMS(关系型数据库)的表间关系。MongoDB支持表与表的内嵌,从而在一定程度上简化了对表的操作,提高开发效率。
cons:
- MongoDB只支持单文档事物,当业务操作需要多文档的时候,MongoDB会显得有些力不从心,但是可以通过
两阶段提交
实现多文档事务,相关文章1,相关文章2 - 对模糊查询支持比较弱
- 在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分为两种:
后记:
这篇总结是在上班期间,挤出时间总结的。个人感觉不好的是里边少了很多自己的理解和分析,有许多方面的东西直接用相关的文章来替代了。不过先把自己对于MongoDB的了解、理解这个框架给搭建起来,然后再以后的开发过程中再继续去完善!** 就算时间再紧,也要挤出时间通过写一些文章来把自己了解,学习的东西给系统地梳理,总结一下。这是在帮助自己,也希望帮助他人**