NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。
在現代的計算系統上每天網絡上都會產生龐大的數據量。
這些數據有很大一部分是由關係數據庫管理系統(RDMBSs)來處理。 1970年 E.F.Codd's提出的關係模型的論文 "A relational model of data for large shared data banks",這使得數據建模和應用程序編程更加簡單。
通過應用實踐證明,關係模型是非常適合於客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。
NoSQL 是一項全新的數據庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的數據存儲,相對於鋪天蓋地的關係型數據庫運用,這一概念無疑是一種全新的思維的注入。
CAP定理(CAP theorem)
在計算機科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對於一個分佈式計算系統來說,不可能同時滿足以下三點:
一致性(Consistency) (所有節點在同一時間具有相同的數據)
可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
分隔容忍(Partition tolerance) (系統中任意信息的丟失或失敗不會影響系統的繼續運作)
CAP理論的核心是:一個分佈式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求,最多隻能同時較好的滿足兩個。
因此,根據 CAP 原理將 NoSQL 數據庫分成了滿足 CA 原則、滿足 CP 原則和滿足 AP 原則三 大類:
CA - 單點集羣,滿足一致性,可用性的系統,通常在可擴展性上不太強大。
CP - 滿足一致性,分區容忍必的系統,通常性能不是特別高。
AP - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。
NoSQL的優點/缺點
優點:
- 高可擴展性
- 分佈式計算
- 低成本
- 架構的靈活性,半結構化數據
- 沒有複雜的關係
缺點:
- 沒有標準化
- 有限的查詢功能(到目前爲止)
- 最終一致是不直觀的程序
==========================================================================================
mongodb yum源
[mongodb-org-3.2]
name=MongoDB
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
(1)安裝
# yum install mongodb-org
# service mongod start
(2)常用命令
help
db.help()
db.mycoll.help()
db.stats() //數據庫狀態
db.serverStatus() //mongodb 數據庫服務器狀態
show dbs
show collections
db.getCollectionNames()
(3)查找命令
find() 命令:
$gt //大於等於 語法:{條件:{$gt : 值}}
$get //大於等於
$lt //小於
$lte // 小於等於
$ne // 不等於
$in // 在給定列表中,列表用中括號。
$nin //不在給定列表中
組合條件
$or :或運算
$and: 與運算
$not: 非運算
$nor:反運算。返回不符合條件的所有文檔
db.st.find({$or:[{age:{in:[20]}},{age:{$nin:[40]}}]})
元素查詢:根據文檔中是否存在指定的字段查詢
$exists:
$mod:取模預算
$type : 返回指的字段的值的類型爲指定的文檔,語法{field:{$type:<BSON type>}}
4:更新操作:
db.mycoll.update()
$set:修改字段的值爲指定的值,db.st.update({name:"tom"},{$set: {age:40}})
$ unset:刪除指定字段的值,
$ rename: 更改字段名
$inc
5:刪除操作:
db.st.remove({gender:"M"})