MongoDB筆記
轉載請註明出處:http://blog.csdn.net/zbf8441372
MongoDB是現今最火的NoSQL之一,暑假終於有時間把《MongoDB權威指南》和NoSQL Fan上關於它的一些文章瀏覽了一些,下面我簡單總結幾點MongoDB吸引人的地方。關於MongoDB的基本操作,運維,使用,大家可以自己去看書或者學習資料。
1. 較之別的NoSQL
《MongoDB: The Definition Guide》一書中說,“要是不能用的話,再牛的技術也是空談,MongoDB致力於容易上手、便於使用”。前段時間,阿里的一位搞HBase的師兄,春輝,花了兩個多小時,深入淺出講解了HBase的一些東西,感觸很深。相比於HBase這樣一個基於HDFS的Big Data的實現,它的架構和層次更復雜。而對於Facebook一手捧紅而今又不再維護了的Cassandra,難免讓人覺得不太promising了。
MongoDB的社群還是相當活躍的。MongoDB是一個面向文件的資料庫,目前由10gen開發並維護,它的功能豐富,齊全。
MongoDB使用JSON的變種BSON作為內部儲存的格式和語法。針對MongoDB的操作都使用JSON風格語法,客戶端提交或接收的資料都使用JSON形式來展現。相對於SQL來說,更加直觀,容易理解和掌握。
Schema-less,支援嵌入子文件:MongoDB是一個Schema-free的文件資料庫。一個資料庫可以有多個Collection,每個 Collection是Documents的集合。Collection和Document和傳統資料庫的Table和Row並不對等。無需事先定義 Collection,隨時可以建立。
CRUD更加簡單,支援in-place update:只要定義一個陣列,然後傳遞給MongoDB的insert/update方法就可自動插入或更 新;對於更新模式,MongoDB支援一個upsert選項,即:“如果記錄存在那麼更新,否則插入”。MongoDB的update方法還支援 Modifier,通過Modifier可實現在服務端即時更新,省去客戶端和服務端的通訊。這些modifer可以讓MongoDB具有和Redis、 Memcached等KV類似的功能:較之MySQL,MonoDB更加簡單快速。Modifier也是MongoDB可以作為對使用者行為跟蹤的容器。在實際中使用Modifier來將使用者的互動行為快速儲存到MongoDB中以便後期進行統計分析和個性化定製。
效能高效,速度快: MongoDB使用c++/boost編寫,在多數場合,其查詢速度對比MySQL要快的多,對於CPU佔用非常小。部署也很簡單,對大多數系統,只需下載後二進位制包解壓就可以直接執行,幾乎是零配置。
2. 支援多種複製模式
MongoDB支援不同的伺服器間進行復制,包括雙機互備的容錯方案。Master-Slave是最常見的。通過Master-Slave可以實現資料的備份。在我們的實踐中,我們使用的是Master-Slave模式,Slave只用於後備,實際的讀寫都是從Master節點執行。Replica Pairs/Replica Sets允許2個MongoDB相互監聽,實現雙機互備的容錯。
3. MongoDB內融合的一些東西
MongoDB的shell命令全面支援js,甚至比js多一些型別,而且可以儲存js函式和變數。MongoDB自帶Mapreduce的功能,只是這個MapReduce功能只支援js語法(函式map和reduce是js寫的),且js引擎的實現導致一個例項只能執行一個map/reduce執行緒。MongoDB允許在服務端執行指令碼,可以用Javascript編寫某個函式,直接在服務端執行,也可以把函式的定義儲存在服務端,下次直接呼叫即可。MongoDB不支援事務級別的鎖定,對於某些需要自定義的“原子性”操作,可以使用Server side指令碼來實
現,此時整個MongoDB處於鎖定狀態。Map/Reduce也是MongoDB中比較吸引人的特性。Map/Reduce可以對大資料量的表進行統 計、分類、合併的工作,完成原先SQL的GroupBy等聚合函式的功能。並且Mapper和Reducer的定義都是用Javascript來定義服務 端指令碼。此外,MongoDB shell下支援的正規表示式是Perl相容的PCRE。MongoDB支援java驅動,可以結合Python,PHP,Ruby這些指令碼語言使用,如PyMongo。
4. GridFS
GridFS用於MongoDB中儲存大二檔案,基本思想是將將檔案文成很多塊,每塊作為一個單獨的文件儲存。只要使用./mongofile put filename,檔案就會被存在GridFS內,經md5處理,存在MongoDB的fs.files資料庫內。GridFS可以應用於存視訊,圖片,而MongoDB有Sharding和Replica Set的支援,還順便解決了分佈儲存的問題,所以很誘惑人。附上一個應用例子:
基於MongoDB GridFS的圖片儲存
5. 產品的代替和演變
LAMP(linux+apache+mysql+php)是以前web開發中的一盞明燈。而隨著web應用規模的擴大,越來越多的Nginx開始取代apache,快取層將mysql的功能逐漸弱化,越來越多的NoSQL產品以其簡單靈活和高效能向MySQL的地位發起挑戰,由全新的組合:Unix系列系統,加node.js,再加上MongoDB組成一個新的web開發框架。
相關文章
- MongoDB 學習筆記MongoDB筆記
- MongoDB的聚合筆記MongoDB筆記
- MongoDB學習筆記MongoDB筆記
- MONGODB 讀書筆記MongoDB筆記
- 【MongoDB學習筆記】MongoDB 快速入門MongoDB筆記
- MongoDB的學習筆記MongoDB筆記
- mongodb學習筆記一MongoDB筆記
- 【MongoDB學習筆記】MongoDB索引那點事MongoDB筆記索引
- mongoDB研究筆記:寫關注MongoDB筆記
- MongoDB叢集運維筆記MongoDB運維筆記
- 【MongoDB學習筆記】-使用 MongoDB 進行 CRUD 操作(上)MongoDB筆記
- 【MongoDB學習筆記】-使用 MongoDB 進行 CRUD 操作(下)MongoDB筆記
- Node學習筆記 Mongodb 和 Mongoose筆記MongoDB
- mongoDB研究筆記:分片叢集部署MongoDB筆記
- mongoDB研究筆記:複製集概述MongoDB筆記
- MongoDB 學習筆記之常用 shell 命令MongoDB筆記
- MongoDB權威指南學習筆記03MongoDB筆記
- 【MongoDB學習筆記】手把手教你配置Python操作MongoDBMongoDB筆記Python
- 基於docker 初學 MongoDb 學習筆記DockerMongoDB筆記
- mongoDB研究筆記:複製集故障轉移機制MongoDB筆記
- MongoDB學習筆記之索引用法和效率分析MongoDB筆記索引
- mongoDB研究筆記:分片叢集的工作機制MongoDB筆記
- mongoDB研究筆記:複製集資料同步機制MongoDB筆記
- MongoDB 記錄MongoDB
- 爬蟲學習筆記(2)使用MongoDB儲存拉鉤資料爬蟲筆記MongoDB
- MongoDB命令--自用記錄MongoDB
- mongodb聚合操作記錄MongoDB
- MongoDB編輯小記MongoDB
- mongodb 報錯記錄MongoDB
- Yosemite安裝Mongodb小記MITMongoDB
- spring-boot快速入門學習筆記-整合JPA mybatis rabbitmq mongodb redisSpringboot筆記MyBatisMQMongoDBRedis
- MongoDB University課程M103 Basic Cluster Administration 學習筆記MongoDB筆記
- node筆記1:vue+node+mongodb+studio 3T建立登入模組筆記VueMongoDB
- 分散式監控系統Zabbix3.4-針對MongoDB效能監控操作筆記分散式MongoDB筆記
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- 印象筆記 --- 方法分享筆記筆記
- mongoDB研究筆記:journaling保證意外故障下的資料完整性MongoDB筆記
- Mongodb原始碼分析--刪除記錄MongoDB原始碼