mongodb入門簡介

jopen 12年前發布 | 1K 次閱讀

一、基本概念

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具體的內容進行較為系統的總結和介紹,希望能幫助需要用到的朋友。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!