小熊昨天晚上做了一個非常真實的噩夢,有讀者朋友催我”怎麼又沒有發文!讓我們等的好辛苦“,今天一睜開眼眼看後臺留言,特麼,居然是真的!
我bilibili
直播申請都通過了!但是別想讓我吃粑粑!
這兩天我雖然沒有更新文章,主要因爲小熊最近的工作密度比較大,有時候爲了能夠偷懶
花一些時間主動寫一些腳本或者代碼,減少很多人力的操作,這種事情沒有人要求小熊,但是我還是會主動去,長痛不如短痛就是這個道理。
工作之餘我可沒有閒着,今天要和大家分享的是來自一位讀者的要求,他們小組馬上要用mongodb
了,但是以前從來沒有接觸過,小熊就滿足你的需求。
有道是,無巧不成書,我們也用到了mongdb
,不過對於小熊個人來說,對mongodb
的接觸僅限於維護的時候看看錶結構,更新幾行記錄什麼的,正好逮到這個契機下決心好好總結一下。
這是一篇科普文。
爲什麼用(有在哪,有什麼好處) ?
我們用 mongodb
比較感興趣的是爲什麼要用他?他有什麼好處?什麼時候該用?具體怎麼用?
mongo
相對於傳動的關係型數據庫,例如MySQL
來說,他對每一次插入的字段格式沒有要求,字段可以隨意變動。
像這張圖,各種類型的字段都存在裏面。看上去和Mysql
長的很像,但是他是去sql
的一種數據庫。就是我們常說的nosql
MongoDB
的優點/缺點
MongoDB
的優勢主要有 3 個。
-
結構靈活,表結構更改比較自由,不用因爲增減字段每次
alter
的時候付出代價,適合業務快速迭代,而且json
原生和大多數的語言有天然的契合。還支持數組,嵌套文檔等數據類型 -
自帶高可用,自動主從切換(副本集)
-
自帶水平分片(分片),內置了路由,配置管理。應用只要連接路由,對應用來說是透明的。
也具備所有NoSQL
的其他優點。
- 他可以併發插入上萬條文檔
- 高可擴展性,在負載高的情況下,只需要添加更多的節點,就可以保證服務器的性能。
- 分佈式計算
- 低成本,輕量化部署非常簡單
- 沒有複雜的關係
缺點:
- 沒有標準化
- 程序不直觀
主要記得靈活、好用、速度快、容器擴展運維方便就好了,不像MySQL
那樣,對集羣同步要求那麼高。
基本概念
mongodb
中基本的概念是文檔、集合、數據庫,讓我由外而內和大家聊聊。
和MySQL
對比來看就是
- 數據庫——>數據庫
- 表————>集合
- 行————>文檔
- 列 ————>字段
數據庫(db)?
和MySQL
一樣,一個 mongodb
中可以建立多個數據庫。
展示所有的數據庫
> show dbs
local 0.078GB
test 0.078GB
運行use
命令,可以連接到一個指定的數據庫(沒有則創建)。
> use coding3min
switched to db coding3min
執行 db
命令可以顯示當前數據庫對象或集合。
> db
coding3min
文檔(Document)?
說集合之前,要先說說集合裏所有的行記錄,也就是文檔,類似MySQL
表中一行一行的記錄。
文檔是個什麼東西呢?他長的就像 JSON
對象。
數據結構由鍵值 (key=>value)
對組成。字段值可以包含其他文檔,數組及文檔數組,簡直和json
一毛一樣。
集合(collection)?
集合類似MySQL
中的表,就是文檔的集合。
db.createCollection("coding3min", {happy:true, age:18})
查看當然庫有哪些集合
> show collections
coding3min
其實你不用刻意創建集合。在插入文檔的時候,會自動創建。
這就是Mongo
的簡單入門啦,我們先講應用,以後有機會再聊聊業務怎麼設計,怎麼真正的用起來,系統的講講有哪些比較重要的點。下次再見啦。