標籤:
一、概述
MongoDB是一個基於分布式檔案儲存體的資料庫開源項目。
由C++語言編寫,旨在為WEB應用提供可護展的高效能資料儲存解決方案。
MongoDB是一個介於關聯式資料庫和非關聯式資料庫之間的產品。
它支援的資料結構非常鬆散,是類似json的bjson格式,因此可以儲存比較複雜的資料類型。
Mongo最大的特點是他支援的查詢語言非常強大,其文法有點類似於物件導向的查詢語言,幾乎可以實作類別似關聯式資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
MongoDB主要解決的是海量資料的訪問效率問題。
根據官方的文檔,當資料量達到50GB以上的時候,Mongo的資料庫訪問速度是MySQL的10倍以上。Mongo的並發讀寫效率不是特別出色,根據官方提供的效能測試表明,大約每秒可以處理0.5萬-1.5次讀寫請求。
因為MongoDB主要是支援海量資料存放區的,所以Mongo還內建了一個出色的Distributed File SystemGridFS,可以支援海量的資料存放區,但我也看到有些評論認為GridFS效能不佳,有待驗證。
最後由於Mongo可以支援複雜的資料結構,而且帶有強大的資料查詢功能,因此非常受到歡迎,很多項目都考慮用MongoDB來替代MySQL來實現不是特別複雜的Web應用,比方說why we migrated from MySQL to MongoDB就是一個真實的從MySQL遷移到MongoDB的案例,由於資料量實在太大,所以遷移到了Mongo上面,資料查詢的速度得到了非常顯著的提升。
總結起來,monggDB的特點是高效能、易部署、易使用、儲存資料非常方便。
二、MongoDB的優點
(1) 高效能、速度非常快(如果你的記憶體足夠的話)
(2) 沒有固定的表結構,不用為了修改表結構而進行資料移轉
(3) 查詢語言簡單,容易上手
(4) 使用Sharding實現水平擴充
(5) 部署方便
三、使用MongoDB,你得記住以下幾點:
MongoDB 假設你有大磁碟空間
MongoDB 假設你的記憶體也足夠大於放下你的熱資料
MongoDB 假設你是部署在64位系統上的(32位有2G的限制,試用還可以)
MongoDB 假設你的系統是little-endian的
MongoDB 假設你有多台機器(並不專註於單機可靠性)
MongoDB 假設你希望用安全換效能,同時允許你用效能換安全
MongoDB在下面領域不太擅長
不太穩定,特別是auto-sharding目前還有很多問題
不支援SQL,這意味著你很多通過SQL介面的工具不再適用
持久化,MongoDB單機可靠性不太好,宕機可能丟失一段時間的資料
相關文檔比較少,新功能都有這個問題
相關人才比較難找,這也是新功能的問題之一
mongoDB入門必讀