天天看點

mongodb入門簡介

一、基本概念

MongoDB 是一個高性能,開源,無模式的文檔型資料庫,是目前NoSQL 資料庫産品中最熱門的一種。它在許多場景下可用于替代傳統的關系型資料庫或鍵/值存儲方式,MongoDB 使用C++開發。MongoDB 的官方網站位址是:http://www.mongodb.org/,大家可以在此獲得更詳細的資訊。

MongoDB 是一個介于關系資料庫和非關系資料庫之間的産品,是非關系資料庫當中功能最豐富,最像關系資料庫的。他支援的資料結構非常松散,是類似json 的bjson 格式,是以可以存儲比較複雜的資料類型。MongoDB 最大的特點是他支援的查詢語言非常強大,其文法有點類似于面向對象的查詢語言,幾乎可以實作類似關系資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。它是一個面向集合的,模式自由的文檔型資料庫。

二、對比

MongoDB 關系型資料庫
資料存儲 面向集合 面向關系表
資料結構 模式自由 二維表關系模式
事務 不支援 支援
大型資料(視訊) 很好 一般
大資料量查詢(千萬條以上) 很好 較差
資料庫維護 相對簡單 相對複雜
資料及表關系、結構浏覽 困難 簡單
資料安全性 較差 很好
分布式 很好 一般
查詢 非常靈活 非常強大
主外鍵關聯 不支援 支援
索引 支援 支援
存儲過程 支援 支援

三、對比說明

1. 資料存儲

MongoDB是面向集合(collection)的,集合中又包含多個文檔(document),并支援對象型資料的存儲。其中集合和文檔的概念,在關系型資料庫中類似于表(table)和元組(row:也就是所謂的一行資料)。另外MongoDB是以bson形式存儲,而關系型資料庫是以二維關系形式存儲。

2. 資料結構

MongoDB對資料結構的支援非常靈活,從橫向到縱向的支援都很好,比如下面的資料都能存儲在同一個集合中:

① {“name”: “wangwu”, “age”: 25}

② {“name”: “lisi”}

③ {“state”: “激活”, “remark”: “無”}

④ {“name”: 6, “age”: “你猜”}

從上面的例子我們能看出,橫向方面,支援字段的動态增減(如①和②),從縱向方面,支援字段資料類型混合存儲(如①和④)。而在關系型資料庫中這種方式的存儲是絕對達不到的。

3. 事務

MongoDB本身不支援事務處理,隻能通過程式代碼來保證。

4. 大型資料

MongoDB不僅支援結構化資料,還支援非結構化資料存儲(音頻、視訊、文檔、XML、HTML等),而關系型資料庫雖然支援大型資料(如視訊)的存儲,但是不管從存儲效率上還是從擷取速度上都不及MongoDB,MongoDB可采用高效的二進制來存儲大型資料。

5. 大型資料量查詢

MongoDB對于上千萬條以上的資料,在查詢速度上非常快。而這點卻是關系型資料庫中的一大痛處。

6. 資料庫維護

MongoDB在資料庫備份和還原以及資料的導入導出的操作上是非常簡單的,通過簡單的指令即可完成,還支援主-從模式及伺服器之間的互相複制。複制的主要目标是提供備援及自動故障轉移,而關系型資料庫在操作上相對複雜一些,上手難一些。

7. 資料及表關系、結構浏覽

MongoDB因為沒什麼特别好的GUI用戶端,是以在資料浏覽和表關系、結構浏覽上是非常困難和笨拙的,關系型資料庫在這方面上優勢明顯。

8. 資料安全性

MongoDB在資料安全方面比較差,如果稍有不慎或操作不當,很容易造成資料丢失或資料錯誤,是以在資料維護和操作上,要非常小心。而關系型資料庫在這方面上的擔心卻要少很多。

9. 分布式

MongoDB非常适合由數十或數百台伺服器組成的資料庫。支援自動分片以支援雲級别的伸縮性。其中自動分片功能支援水準的資料庫叢集,可動态添加額外的機器。關系型資料庫在分布式的支援和操作上都要困難些、發雜些。

10. 查詢

MongoDB的查詢語句與關系型的sql語句有着很大的不同,或者說是兩種風格,二者表現都很不錯,MongoDB主要展現在靈活易用上,而sql則展現在功能全面強大上。

11. 主外鍵關聯

MongoDB不支援主外鍵關聯,也沒有“限制”的概念。

12. 索引

MongoDB同樣支援索引

13. 存儲過程

MongoDB同樣也支援存儲過程

四、總結

通過以上對比,我們可以看出MongoDB是以犧牲安全、事務、結構來換取簡單、高效、靈活的,是以關系型也好非關系型也好都有他們适用的場合,非關系型資料庫的出現,為我們多提供了一條選擇的道路,進而在資料維護和存儲上給予了我們很大的幫助,讓我們在軟體開發上能更加得心應手,是以傳統保守關系型資料庫觀念的人們,可以試試體驗下非關系型資料庫,也許你一下就會迷上他,在關系型資料庫大行其道今天,掌握好一門非關系型資料庫對你未來的發展也是非常有利的。

那麼關于MongoDB的入門簡介就先到這裡,筆者今後會對MongoDB具體的内容進行較為系統的總結和介紹,希望能幫助需要用到的朋友。