mongodb簡介
MongoDB 是一個使用C++編寫的,開源的,面向文檔的NoSQL(Not Only SQL)數據庫。
NoSQL的意思是“不僅僅是SQL”,是目前流行的“非關係型數據庫”的統稱。
常見的NoSQL數據庫如:Redis、CouchDB、MongoDB、HBase、Cassandra等。
MongoDB特點
高性能、易於使用、易於擴展、功能豐富
面向集合存儲,模式自由
支持動態查詢,支持javascript表達式查詢
支持索引
支持副本集複製和自動故障恢復
自動處理分片
支持二進制和大型對象數據
文件存儲格式爲BSON(JSON的一種擴展)
NoSQL
NoSQL解決了哪些問題
1,對數據庫高併發讀寫的需求。
2,對海亮數據的高效率和訪問的需求。
3,對數據庫的高可擴展性和高可用性的需求。
NoSQL的優點
擴展簡單方便,尤其是水平橫向擴展(縱向擴展是指用更強的機器;橫向擴展是指把數據分散到多個機器)。
讀寫快速高效,多數都會映射到內存操作 。
成本低廉,用普通機器,分佈式集羣即可 。
數據模型靈活,沒有固定的數據模型。
CAP 原則
CAP原則又稱CAP定理,指的是在一個分佈式系統中,
Consistency(一致性)、 Availability(可用性)、
Partition tolerance(分區容錯性),三者不可得兼
1: 強一致性(Consistency):系統在執行過某項操作後仍然處於一致的,在分佈式系統中,更 新操作執行成功後所有的用戶都應該讀取到最新的值,這樣的系統被認爲具有強一致性。
2: 可用性(Availability): 每一個操作總是能夠在一定的時間內返回結果。
3: 分區容錯性(Partition tolerance): 系統在存在網絡分區的情況下仍然可以接受
請求並處理,這裏網絡分區是指由於某種原因網絡被分成若干個孤立區域,而區域之間互不相通
根據CAP 原理將數據庫分成了滿足CA原則,滿足CP原則和滿足AP原則三大類
CA: 單點集羣,滿足一致性,可用性,通常在可擴展上不太強大,比如關係型數據庫。
CP: 滿足一致性和分區容錯性,通常性能不是特別高,如分佈式數據庫。
AP: 滿足可用性和分區容錯性,通常可能對一致性要求低一些,如大多數的NoSQL。
與BASE的關係
BASE就是爲了解決關係數據庫強一致性引起的問題而引起的可用性降低而提出的解決方案。
BASE(Basically Available,Soft-state,Eventual consistency )
1: 基本可用(Basically Available): 系統能夠基本運行,一直提供服務。
2: 軟狀態(Soft-state): 系統不要求一直保持強一致狀態。
3: 最終一致性(Eventual consistency):系統需要在某一時刻後達到一致性要求。
MongoDB安裝
1,下載https://www.mongodb.com/download-center#community。
2,然後tar zvxf 解壓。
3,拷貝到相應的文件夾即可。
啓動
1,新建一個文件 指定數據庫 日誌 存儲位置
mdb.conf
dbpath=../dbs
logpath=../logs/log
fork=true
nojournal = true
./mongod -f mdb.conf
可選參數:
port 指定服務端口號,默認端口27017。
bind_ip 綁定服務IP,若綁定127.0.0.1,則只能本機訪問,不指定默認本地所有IP。
logpath 指定MongoDB日誌文件,注意是指定文件不是目錄。
fork 以守護進程的方式運行MongoDB,創建服務器進程。
auth 啓用驗證。
dbpath 指定數據庫路徑。
journal 啓用日誌選項,MongoDB的數據操作將會寫入到journal文件夾的文件裏。
maxConns 最大同時連接數 默認2000 。
./mongod -help 查看更多配置。
關閉
1:如果是在Shell裏面啓動的,ctrl+c退出shell就關閉了。
2:如果是在後臺啓動的,運行 pkill mongod。
3:也可以進入javascript shell,切換到admin數據庫,運行db.shutdownServer()。