標籤:mongodb nosql資料庫 分散式運算 資料存放區 可擴充
什麼是NoSQL?
NoSQL,指的是非關係型的資料庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。
NoSQL用於超大規模資料的儲存。(例如Google或Facebook每天為他們的使用者收集萬億位元的資料)。這些類型的資料存放區不需要固定的模式,無需多餘操作就可以橫向擴充。
為什麼使用NoSQL ?
今天我們可以通過第三方平台(如:Google,Facebook等)可以很容易的訪問和抓取資料。使用者的個人資訊,社交網路,地理位置,使用者產生的資料和使用者動作記錄已經成倍的增加。我們如果要對這些使用者資料進行挖掘,那SQL資料庫已經不適合這些應用了, NoSQL資料庫的發展也卻能很好的處理這些大的資料。
RDBMS vs NoSQL
RDBMS
- 高度組織化結構化資料
- 結構化查詢語言 (SQL)(SQL) (SQL)
- 資料和關係都儲存在單獨的表中。
- 資料操縱語言,資料定義語言 (Data Definition Language)
- 嚴格的一致性
- 基礎事務
NoSQL
- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
-鍵 - 值對儲存,列儲存,文檔儲存,圖形資料庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的資料
- CAP定理
- 高效能,高可用性和延展性
NoSQL的優點/缺點
優點:
- - 高可擴充性
- - 分散式運算
- - 低成本
- - 架構的靈活性,半結構化資料
- - 沒有複雜的關係
缺點:
- - 沒有標準化
- - 有限的查詢功能(到目前為止)
- - 最終一致是不直觀的程式
ACID vs BASE
| ACID |
BASE |
| 原子性(Atomicity) |
基本可用(Basically Available) |
| 一致性(Consistency) |
軟狀態/柔性事務(Soft state) |
| 隔離性(Isolation) |
最終一致性 (Eventual consistency) |
| 持久性 (Durable) |
|
什麼是MongoDB ?
MongoDB 是由C++語言編寫的開來源資料庫系統。
在高負載的情況下,添加更多的節點,可以保證伺服器效能。
MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。
MongoDB 將資料存放區為一個文檔。MongoDB是一個基於分布式檔案儲存體的資料庫。
FirstName="Arun", Address="St. Xavier‘s Road", Spouse=[{Name:"Kiran"}], Children=[{Name:"Rihit", Age:8}].
FirstName="Sameer",Address="8 Gandhi Road".
注意:以上資料有兩個不同的文檔(以"."分隔)。以這種方式儲存資料即為檔案儲存體的資料庫。 MongoDB是一個面向文檔的資料庫。
主要特點
- MongoDB的提供了一個面向文檔儲存,操作起來比較簡單和容易。
- 你可以在MongoDB記錄中設定任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
- 你可以通過本地或者網路建立資料鏡像,這使得MongoDB有更強的擴充性。
- 如果負載的增加(需要更多的儲存空間和更強的處理能力) ,它可以分布在電腦網路中的其他節點上這就是所謂的分區。
- Mongo支援豐富的查詢運算式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
- MongoDb 使用update()命令可以實現替換完成的文檔(資料)或者一些指定的資料欄位 。
- Mongodb中的Map/reduce主要是用來對資料進行批量處理和彙總操作。
- Map和Reduce。Map函數調用emit(key,value)遍曆集合中所有的記錄,將key與value傳給Reduce函數進行處理。
- Map函數和Reduce函數是使用Javascript編寫的,並可以通過db.runCommand或mapreduce命令來執行MapReduce操作。
- GridFS是MongoDB中的一個內建功能,可以用於存放大量小檔案。
- MongoDB允許在服務端執行指令碼,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義儲存在服務端,下次直接調用即可。
- MongoDB支援各種程式設計語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
- MongoDB安裝簡單。
MongoDB 下載
MongoDB提供了可用於32位和64位系統的先行編譯二進位包,你可以從MongoDB官網下載安裝,MongoDB先行編譯二進位包:
http://www.mongodb.org/downloads
具體安裝的話自我感覺還是ubuntu比較簡單,也比較方便,windows也不難,下載之後解壓雙擊安裝即可,可是還是得看一下windows下的命令列,之後的測試環境基本都是ubuntu 12.04。
直接命令列輸入sudo apt-get install mongodb。
當然你也可以安裝munin監控mongodb的運行情況,和可視化介面的rockmongo來實現簡單的操作。
菜鳥的mongoDB學習---(一)安裝與簡介