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