在自己工作學習的過程中,接觸到了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的了解、理解這個框架給搭建起來,然后再以后的開發過程中再繼續去完善!** 就算時間再緊,也要擠出時間通過寫一些文章來把自己了解,學習的東西給系統地梳理,總結一下。這是在幫助自己,也希望幫助他人**