MongoDB應用實踐思考,mongodb實踐思考

來源:互聯網
上載者:User

MongoDB應用實踐思考,mongodb實踐思考
最近研究MongoDB,利用其可以簡單快速地搭建一套靈活的no schema儲存系統。本文通過論證和分析需求,利用MongoDB快速搭建了一套具有良好效能及可用性滿足上億規模的儲存系統。在關於NoSQL資料庫的選型上,需要結合自身資料模型訪問方式以及成本等方面的考慮作一個權衡(trade off)。
那麼經過研究MongoDB(2.6.4版本)有如下特點:可用性:
1.支援高可用靈活的服務叢集配置,有主從、複本集、自動分區模式。
2.基於文檔的查詢,高效能,簡單查詢上萬的QPS。
3.支援全文檢索索引。

一致性:
1.支援文檔內更新模式,效率高。
2.當前最新的2.6版本採用讀寫鎖、寫鎖優先,鎖的粒度為collection層級。

易用性:
1.近似傳統關係型資料庫的SQL使用。
2.豐富的管理組態工具。
3.支援基於使用者角色的許可權管理體系。

儲存機制:
採用mmap file + 記憶體索引的方式。記憶體與緩衝管理由作業系統負責,當使用資料集大小超出時,效能下降。Linux下記憶體控制可以通過配置使用者ulimit -u 實現。
現實需求:1. 需要儲存欄位靈活的半結構化資料。2. 1~2億條記錄的儲存規模,平均每條記錄20k上限。3. 讀需求遠大於寫(以8:2計算),寫以批量寫入的方式,讀需支援靈活複雜的查詢方式。4. 寫效能:5000qps 讀效能:2W qps
由於MongoDB靈活的儲存和訪問方式,以及良好的查詢效能與伸縮性及維護成本,故想到利用MongoDB來儲存這約2億的資料量。根據需求分析如下:1. 以2億規模計算,總儲存量約4TB。現在市面上伺服器硬碟最大有2TB規格的,部署時可以考慮以LVM方式,先安裝1~2TB磁碟,待容量增長時根據需求方便地做擴容。2. 在已存在1億資料量的情況下插入1000W條記錄,每次寫入4條索引,qps能達到8000滿足寫效能的5000 qps需求。3. 單線程簡單讀情況下qps能達到8W qps,換做多線程並發讀取總效能也接近8W qps可滿足2W qps的查詢效能,後續若對讀效能有增長需求可考慮從節點開啟讀許可權分攤讀壓力。在測試中,讀延遲 < 1ms。
根據需求論證的結果,利用MongoDB來儲存這2億條記錄的方案是可行的。在實際部署當中,MongoDB支援多種方式有主從、複本集、分區。其中複本集相對於主從模式有自動故障遷移的優勢,但是其也帶來了複雜性和機器成本增加的劣勢。故綜合考慮後,選用主從模式進行部署,選用伺服器配置為16物理核 + 256G記憶體 + 2TB硬碟的機器兩台搭建主備節點。其中,從節點開啟讀許可權,一方面應用程式層在主不可讀時可向從節點發起讀請求,另一方面前端可根據負載把部分讀請求分攤到從節點上。由於資料的寫入求屬於離線操作,故只需監控好主從節點的狀態,能夠及時恢複好服務狀態即可。
通過以上實踐,即完成了利用MongoDB快速搭建滿足上億層級儲存的需求。

mongodb學習資料與視頻

可以買本《MongoDB權威指南》,這是目前僅有的比較好的翻譯成中文的mongodb教程了。

至於驅動,可以去www.mongodb.org上找到。mongodb支援很多種語言的驅動程式,但是文檔都是英文的,需要你有一定的英文閱讀能力,因為使用驅動的過程中肯定會遇到很多問題,不查文檔肯定抓瞎了。
 
深入淺出MongoDB應用實戰開發(基礎,開發指南,系統管理,叢集及系統架構)誰有這樣的視頻?

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.