標籤:
MongoDB是什麼
MongoDB是一種文檔儲存的NoSQL資料庫,NoSQL資料庫是非關係型資料庫
關係型資料庫四原則ACID
- 原子性 Atomicity
- 一致性 Consistency
- 獨立性 Isolation
- 持久性 Durability
NoSQL資料庫
不同於傳統的關係型資料庫統稱為NoSQL資料庫。適用於處理超大資料。
2009年在亞特蘭大舉行的”no:sql(east)”討論會是一個裡程碑,其口號是”select fun, profit from real_world where relational=false;”。因此,對NoSQL最普遍的解釋是”非關聯型的”,強調Key-Value Stores和文檔資料庫的優點,而不是單純的反對RDBMS。
CAP定理(CAP theorem)
在電腦科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer’s theorem), 它指出對於一個分散式運算系統來說,不可能同時滿足以下三點:
- 一致性 Consistency
- 可用性 Availability
- 分隔容忍 Partition Tolerance
CAP認為一個分布式系統最多隻能滿足以上三點鐘的兩點,因此有:
CA原則、CP原則、AP原則
- CA 單點叢集、滿足一致性、可用性的系統,一般在可擴充性上不高
- CP 滿足一致性、分隔容忍性的系統,通常在效能上不是很好
- AP 滿足可用性、分割容忍性的系統,通常可能對一致性要求低一些
BASE原則
NoSQL資料庫的原則
- Basic Available 基本可用性
- Soft-State 軟狀態/柔性事務(可理解為不需連線的)
- Eventually Consistency 最終一致性
NoSQL資料庫分類
RDBMS vs NoSQL
RDBMS
- 高度組織化結構化資料
- 結構化查詢語言 (SQL)(SQL) (SQL)
- 資料和關係都儲存在單獨的表中。
- 資料操縱語言,資料定義語言 (Data Definition Language)
- 嚴格的一致性
- 基礎事務
NoSQL
- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
- 鍵 - 值對儲存,列儲存,文檔儲存,圖形資料庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的資料
- CAP定理
- 高效能,高可用性和延展性
安裝(MacOS)1. homebrew安裝
brew update brew install mongodbbrew install mongodb --with-openssl //帶TLS/SSL支援brew install mongodb --devel //擷取最新版本的
2. 建立/data/db目錄
sudo mkdir -p /data/db
3. 啟動服務
sudo mongod //如果給/data/db加了許可權的話,可以省掉sudo
4. 後台管理shell
如果你需要進入MongoDB後台管理,你需要先開啟mongodb裝目錄的下的bin目錄,然後執行mongo命令檔案。
MongoDB Shell是MongoDB內建的互動式Javascript shell,用來對MongoDB進行操作和管理的互動式環境。
當你進入mongoDB後台後,它預設會連結到 test 文檔(資料庫)
$ cd /usr/local/bin #其實我不用開啟這個,直接用mongo也是可以的$ ./mongo> 2+24> db.runoob.insert({x:10})WriteResult({ "nInserted" : 1 })> db.runoob.find(){ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
5. MongoDb web 使用者介面
MongoDB 提供了簡單的 HTTP 使用者介面。 如果你想啟用該功能,需要在啟動的時候指定參數 –rest 。
$ mongod --rest
基本使用
見上
與python結合使用
用pymongo
import pymongo client = pymongo.MongoClient(‘127.0.0.1‘,30017)client.bigsci.authenticate(‘username‘,‘password‘) #給某個資料庫授權db = client.bigsci #選擇一個資料庫collection = db.wiki #選擇一個集合res = collection.find_one() #查詢
MongoDB配置使用 Mac OS