1. 程式人生 > >mongodb(一)——MongoDB簡介和基本概念

mongodb(一)——MongoDB簡介和基本概念

NoSQL簡介

  NoSQL(Not Only SQL ),意即“不僅僅是SQL” ,指的是非關係型的資料庫 。是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的資料儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的注入。 
  關係型資料庫中的表都是儲存一些結構化的資料,每條記錄的欄位的組成都一樣,即使不是每條記錄都需要所有的欄位,但資料庫會為每條資料分配所有的欄位。而非關係型資料庫以鍵值對(key-value)儲存,它的結構不固定,每一條記錄可以有不一樣的鍵,每條記錄可以根據需要增加一些自己的鍵值對,這樣就不會侷限於固定的結構,可以減少一些時間和空間的開銷。

常見的NoSql(非關係型資料庫)資料庫

CouchDB 
Redis 
MongoDB 
Neo4j 
HBase 
BigTable 
這裡寫圖片描述

NoSql資料庫優缺點

在優勢方面主要體現在下面幾點:- 簡單的擴充套件 
快速的讀寫 
低廉的成本 
靈活的資料模型

在不足方面主要有下面幾點: 
不提供對SQL的支援 
支援的特性不夠豐富 
現有的產品不夠成熟

MongoDB簡介

MongoDB是用C++語言編寫的非關係型資料庫。特點是高效能、易部署、易使用,儲存資料十分方便,主要特性有: 
面向集合儲存,易於儲存物件型別的資料 
模式自由 
支援動態查詢 
支援完全索引,包含內部物件 
支援複製和故障恢復 
使用高效的二進位制資料儲存,包括大型物件 
檔案儲存格式為BSON(一種JSON的擴充套件)

MongoDB和關係資料庫的對比

對比項mongoDBmysql oracle
集合二維表table
表的一行資料文件document一條記錄recoder
表字段鍵key欄位filed
欄位值值value值value
主外來鍵PK FK
靈活度擴充套件性極高

MongoDB基本概念

  • 文件(document)是MongoDB中資料的基本單元,非常類似於關係型資料庫系統中的行(但是比行要複雜的多)。
  • 集合(collection)就是一組文件,如果說MongoDB中的文件類似於關係型資料庫中的行,那麼集合就如同表。
  • MongoDB的單個計算機可以容納多個獨立的資料庫,每一個數據庫都有自己的集合和許可權。
  • MongoDB自帶簡潔但功能強大的JavaScript shell,這個工具對於管理MongoDB例項和操作資料作用非常大。
  • 每一個文件都有一個特殊的鍵”_id”,它在文件所處的集合中是唯一的,相當於關係資料庫中的表的主鍵。

MongoDB資料型別

資料型別描述舉例
null表示空值或者未定義的物件{“x”:null}
布林值真或者假:true或者false{“x”:true}
32位整數32位整數。shell是不支援該型別的,shell中預設會轉換成64位浮點數
64位整數64位整數。shell是不支援該型別的,shell中預設會轉換成64位浮點數
64位浮點數64位浮點數。shell中的數字就是這一種型別{“x”:3.14,”y”:3}
字串UTF-8字串{“foo”:”bar”}
符號shell不支援,shell會將資料庫中的符號型別的資料自動轉換成字串
物件id文件的12位元組的唯一id{“id”: ObjectId()}
日期從標準紀元開始的毫秒數{“date”:new Date()}
正則表示式文件中可以包含正則表示式,遵循JavaScript的語法{“foo”:/foobar/i}
程式碼文件中可以包含JavaScript程式碼{“x”:function() {}}
未定義undefined{“x”:undefined}
陣列值的集合或者列表{“arr”: [“a”,”b”]}
內嵌文件文件可以作為文件中某個key的value{“x”:{“foo”:”bar”}}