MongoDB的認識,優缺點和使用場景,原理
MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。
MongoDB,使用記憶體對映檔案,支援副本集。
面向文件儲存的資料庫,類JSON的資料格式,自由靈活。
支援豐富的查詢表示式。查詢指令使用JSON形式的標記,可輕易查詢文件中內嵌的物件及陣列。
在高負載的情況下,新增更多的節點,可以保證伺服器效能。
記憶體對映檔案(Memory-mapped file):
是一段虛記憶體逐位元組對應於一個檔案,使得應用程式處理檔案如同訪問記憶體。
主要用處是增加I/O效能,特別是用於大檔案,訪問記憶體對映檔案比直接檔案讀寫要快幾個數量級,記憶體對映檔案可以只加載一部分內容到使用者的邏輯記憶體空間。這對非常大的檔案特別有用。
缺點:
記憶體對映檔案需要在程序的佔用一塊很大的連續邏輯地址空間
-------------------------------------------下面轉載網友的總結----------------------------------------------
更高的寫負載
預設情況下,對比事務安全,MongoDB更關注高的插入速度。如果你需要載入大量低價值的業務資料,比如日誌收集,那麼MongoDB將很適合你的用例,但是必須避免在要求高事務安全的情景下使用MongoDB,比如一個1000萬美元的交易。
處理很大的規模的單表:
資料庫擴充套件是非常有挑戰性的,當單表格大小達到5-10GB時,MySQL表格效能會毫無疑問的降低。如果你需要分片並且分割你的資料庫,MongoDB將很容易實現這一點。
不可靠環境保證高可用性
設定副本集(主-從伺服器設定)不僅方便而且很快,此外,使用MongoDB還可以快速、安全及自動化的實現節點(或資料中心)故障轉移。
使用基於位置的資料查詢,查的更快
MongoDB支援二維空間索引,比如管道,因此可以快速及精確的從指定位置獲取資料。
MongoDB在啟動後會將資料庫中的資料以檔案對映的方式載入到記憶體中。如果記憶體資源相當豐富的話,這將極大地提高資料庫的查詢速度,畢竟記憶體的I/O效率比磁碟高多了
非結構化資料的爆發增長
增加列在有些情況下可能鎖定整個資料庫,或者增加負載從而導致效能下降,這個問題通常發生在表格大於1GB的情況下。鑑於MongoDB的弱資料結構模式,新增1個新欄位不會對舊錶格有任何影響,整個過程會非常快速;因此,在應用程式發生改變時,你不需要專門的1個DBA去修改資料庫模式。
缺少專業的資料庫管理員
如果你沒有專業的DBA,同時你也不需要結構化你的資料及做join查詢,MongoDB將會是你的首選。MongoDB非常適合類的持久化,類可以被序列化成JSON並儲存在MongoDB。需要注意的是,如果期望獲得一個更大的規模,你必須要了解一些最佳實踐來避免走入誤區。