1.mongodb主要特性:
1.1文檔資料模型
不需要和關系資料庫一樣,顯示一個示
例文檔資料時,需要多張表,并且需要這些表之間通過主外鍵關聯起來。同時資料庫不需要schema。是以對那些schema經常變化,或者web應用程式
開發初期來說,mongodb有很大的優勢。所有的資料都可以存在一條記錄中,不需要為每個“列”設定資料類型。
1.2 支援即時查詢,保留的關系型資料的即時查詢的能力,不同于k-v資料庫,隻能查詢鍵。
1.3 二級索引
mongodb中的二級索引是通過b樹實作的。通過允許使用多個二級索引,mongodb讓使用者能對大量不同的查詢進行優化。并且效果非常明顯。
在mongodb中,每個集合最多可以建立64個索引。支援索引有:升序、降序、唯一性、複合鍵索引、地理空間索引。
1.4 複制
mongodb通過副本集(replica set)的拓撲結構提供複制功能。副本集将資料分布在多台機器上實作備援。在伺服器和網路故障時能提供自動故障轉移。另外複制功能還能用于擴充資料庫的讀能力。

後面可以看到mongodb在副本集和主從複制技術上的差異。
1.5 速度和持久性
寫速度:在給定時間内資料庫可以處理的插入、更新和删除操作的量。
持久性:資料庫保持這些寫操作結果不變的時間長短。
高容量、低價值的資料局(比如點選數和日志)使用fire-and-get模式寫操作
對于重要的資料,更傾向于安全模式寫操作。該模式強制要求資料庫作出應答,確定資料庫正确無誤的接收到寫操作。
1.6 資料庫擴充
磁盤的iops(input/output per second)
垂直擴充:提升單一節點的硬體配置
水準擴充:不是提升單一節點的硬體性能,而是将資料庫分布到多态機器上。因為水準擴充可以使用普通x86+linux機器,是以托管整個資料庫叢集的成本會顯著提高。同時将資料庫分布到多台機器上可以降低故障帶來的影響。
最後,我查詢了51cto上投票結果。顯示mongodb吸引開發者和dba最大的原因是:mongodb的模式自由。不需要schema。個人覺得dba最開心的是,mongodb在複制、分片上容易部署和配置,同時有良好的故障遷移機制。
(圖檔來自51cto)
作為開發者,技術日新月異,各種相關技術發展迅猛。開發者能學習和掌握以下三種資料庫是最好的了:
1.mysql--關系型資料庫
2.mongodb--面向文檔結構的資料庫(介于關系型資料和key-value資料庫之間的一種資料庫)
3.memcached--分布式的高速緩存系統。