1. 程式人生 > >MongoDB學習筆記(一)——MongoDB簡介

MongoDB學習筆記(一)——MongoDB簡介

MongoDB資料庫是一種可擴充套件的敏捷NoSQL資料庫,它是基於文件儲存模型。在這種模型下,資料會被儲存為文件,而不是我們熟知的例如MySQL、Oracle等的行和列的儲存。文件是以BSON物件的形式儲存。

MongoDB旨在實現一個高效能、高可用、可自動擴充套件的資料儲存,MongoDB因為速度快、可擴充套件性強、易於實現、為需要儲存使用者評論、部落格和其他內容的網站提供了極佳的後端儲存解決方案:

  • 面向文件:MongoDB的資料儲存是以文件儲存的,其資料在資料庫中的儲存格式與伺服器端指令碼和客戶端處理的格式非常接近,這避免了將資料在行和物件之間進行轉換。

  • 高效能:MongoDB是市面上效能最高的資料庫之一。

  • 高可用性:MongoDB的複製模型使其很容易保持高可用性,同時能夠提供高效能和高擴充套件性。

  • 高可擴充套件性:MongoDB的結構使得能夠將資料分佈到多臺伺服器,從而是輕鬆的實現橫向擴充套件。

  • 對SQL注入攻擊免疫:MongoDB將資料儲存為物件,而不是使用SQL字串,因此對SQL注入攻擊免疫。

NoSQL

NoSQL 簡史

NoSQL一詞最早出現於1998年,是Carlo Strozzi開發的一個輕量、開源、不提供SQL功能的關係資料庫。

2009年,Last.fm的Johan Oskarsson發起了一次關於分散式開源資料庫的討論,來自Rackspace的Eric Evans再次提出了NoSQL的概念,這時的NoSQL主要指非關係型、分散式、不提供ACID的資料庫設計模式。

2009年在亞特蘭大舉行的”no:sql(east)”討論會是一個里程碑,其口號是”select fun, profit from real_world where relational=false;”。因此,對NoSQL最普遍的解釋是”非關聯型的”,強調Key-Value Stores和文件資料庫的優點,而不是單純的反對RDBMS。

NoSQL從字面上理解:不是SQL,這個SQL一般代表的是資料庫而且是特指mysql、Oracle這種傳統的關係型資料庫,那NoSQL也就是說不是關係型資料庫。另外一種解釋則是“not only SQL”,即“不僅僅是SQL”,這旨在強調NoSQL資料庫並非SQL的替代品,它實際上也可以使用類似於SQL的查詢概念。

NoSQL是一個術語,它並不是特指哪種特定的資料庫,而是涵蓋了除傳統的關係型資料庫管理系統(RDBMS)之外的所有資料庫。NoSQL資料庫專用於儲存特定型別的資料,因此大多數情況下效率和效能都高於RDBMS。

NoSQL現在的產品有很多,其中最典型的就是Redis和MongoDB,其一般實現儲存資料的結構有以下幾種:

  • 文件儲存資料庫
    文件儲存資料庫採用面向文件的方法來儲存資料,其理念是可講單個實體的所有資料都儲存在一個文件中,而文件可儲存在集合中。其代表就是MongoDB、CouchDB。

  • 鍵/值資料庫
    該種類型的儲存是最簡單的NoSQL資料庫,這些資料庫儲存資料時不採用任何模式,鍵可指向任何資料型別,從物件到字串值,再到程式語言的函式。
    鍵/值儲存的有點是易於實現和新增資料因此非常適合用於提供基於鍵來儲存和檢索資料的簡單儲存,缺點是無法根據儲存的值來查詢元素。其代表是Redis。

  • 列儲存資料庫
    列儲存資料庫是在鍵空間內以列的方式儲存資料,其中鍵空間基於獨一無二的名稱、值和時間戳。這類似與鍵/值資料庫,但列儲存資料庫適合用於儲存根據時間戳來區分有效內容和無效內容的資料,這提供了這樣的有點,即能夠讓資料庫中儲存的資料過期。部分代表 Hbase、Cassandra、Hypertable

  • 圖儲存資料庫
    圖儲存資料庫是為能夠輕鬆將資料表示為圖,這意味著元素通過他們之間的關係相關聯,而這些關係的數量是不確定的,就像家譜、社會關係、航線拓撲圖或標準交通圖那樣。部分代表Neo4J、FlockDB

  • 物件儲存
    通過類似面嚮物件語言的語法操作資料庫,通過物件的方式存取資料。其代表為db4o、Versant

  • xml資料庫
    高效的儲存XML資料,並支援XML的內部查詢語法,比如XQuery,Xpath。其代表為Berkeley、DB

NoSQL的優點/缺點
優點:

- 高可擴充套件性
- 分散式計算
- 低成本
- 架構的靈活性,半結構化資料
- 沒有複雜的關係

缺點:

- 沒有標準化
- 有限的查詢功能(到目前為止)
- 最終一致是不直觀的程式

下面就開始MongoDB的學習,當然如果你想要直接學習MongoDB的理論只是,那麼直接從MongoDB學習筆記(十一)開始,如果你想了解如何搭建MongoDB以及MongDB shell 以及MongoDB Compass,就直接看下一篇