MongoDB

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 - 滿足可用性,分區容忍性的系統,通常可能對一致性要求低一些。

    wKioL1cSbFrzHTU_AADZyzXdI0g456.jpg

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()

wKiom1cTlomBYahnAAESzVjsrkg732.jpg


(3)查找命令

find() 命令:

    $gt    //大於等於             語法:{條件:{$gt : 值}}

     $get //大於等於

     $lt    //小於

     $lte // 小於等於

     $ne   // 不等於

     $in      // 在給定列表中,列表用中括號。

    $nin      //不在給定列表中

wKiom1cTmovh1zO-AAJNQTexBQc673.jpg

 組合條件

$or :或運算

$and: 與運算

$not: 非運算

$nor:反運算。返回不符合條件的所有文檔

db.st.find({$or:[{age:{in:[20]}},{age:{$nin:[40]}}]})


元素查詢:根據文檔中是否存在指定的字段查詢

$exists:

wKioL1cTodLimcqeAAJjrTHqZLw954.jpg

$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"})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章