mongoDB下載以及如何使用

MongoDB

MongoDB


1. MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫娶靡。由 C++ 語言編寫楷拳。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案该酗。

?2. MongoDB 是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品栅螟,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富庄撮,最像關(guān)系數(shù)據(jù)庫的。

什么是MongoDB ?

1.? MongoDB 是由C++語言編寫的戳粒,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)路狮。

2.? 在高負(fù)載的情況下,添加更多的節(jié)點(diǎn)蔚约,可以保證服務(wù)器性能奄妨。

3.? MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

4.? MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔苹祟,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成砸抛。MongoDB 文檔類似于

MongoDB下載安裝

你可以在mongodb官網(wǎng)下載該安裝包评雌,地址為:https://www.mongodb.com/download-center#community。MonggoDB支持以下平臺(tái):

OS X 32-bit

OS X 64-bit

Linux 32-bit

Linux 64-bit

Windows 32-bit

Windows 64-bit

Solaris i86pc

Solaris 64

windows平臺(tái)安裝

下載地址:https://www.mongodb.com/download-center#community

根據(jù)你的系統(tǒng)下載 32 位或 64 位的 .msi 文件直焙,下載后雙擊該文件景东,按操作提示安裝即可。

安裝過程中奔誓,你可以通過點(diǎn)擊 "Custom(自定義)" 按鈕來設(shè)置你的安裝目錄

創(chuàng)建數(shù)據(jù)目錄

MongoDB將數(shù)據(jù)目錄存儲(chǔ)在 db 目錄下耐薯。但是這個(gè)數(shù)據(jù)目錄不會(huì)主動(dòng)創(chuàng)建,我們?cè)诎惭b完成后需要?jiǎng)?chuàng)建它丝里。請(qǐng)注意,數(shù)據(jù)目錄應(yīng)該放在根目錄下((如: C:\ 或者 D:\ 等 )体谒。

在本教程中杯聚,我們已經(jīng)在 C 盤安裝了 mongodb,現(xiàn)在讓我們創(chuàng)建一個(gè) data 的目錄然后在 data 目錄里創(chuàng)建 db 目錄抒痒。

命令行下運(yùn)行 MongoDB 服務(wù)器

為了從命令提示符下運(yùn)行 MongoDB 服務(wù)器幌绍,你必須從 MongoDB 目錄的 bin 目錄中執(zhí)行 mongod.exe 文件。

C:\mongodb\bin\mongod --dbpath c:\data\db


配置系統(tǒng)環(huán)境變量

找到 mongodb的安裝目錄故响,把bin目錄配置到環(huán)境變量里

啟動(dòng)mongodb 服務(wù)

在命令行 執(zhí)行 mongod

連接mongodb

再開啟一個(gè)窗口傀广,執(zhí)行 monggo

連接MongoDB

我們可以在命令窗口中運(yùn)行 mongo.exe 命令即可連接上 MongoDB,執(zhí)行如下命令:

C:\mongodb\bin\mongo.exe

配置系統(tǒng)環(huán)境變量

找到 mongodb的安裝目錄彩届,把bin目錄配置到環(huán)境變量里

啟動(dòng)mongodb 服務(wù)

在命令行 執(zhí)行 mongod

連接mongodb

再開啟一個(gè)窗口伪冰,執(zhí)行 monggo

MongoDB?概念解析



數(shù)據(jù)庫

"show dbs"?命令可以顯示所有數(shù)據(jù)的列表

執(zhí)行?"db"?命令可以顯示當(dāng)前數(shù)據(jù)庫對(duì)象或集合

運(yùn)行”use”命令,可以連接到一個(gè)指定的數(shù)據(jù)庫樟蠕。

數(shù)據(jù)庫也通過名字來標(biāo)識(shí)贮聂。數(shù)據(jù)庫名可以是滿足以下條件的任意UTF-8字符串。

不能是空字符串("")寨辩。

不得含有' '(空格)吓懈、.、$靡狞、/耻警、\和\0 (空字符)。

應(yīng)全部小寫甸怕。

最多64字節(jié)甘穿。

有一些數(shù)據(jù)庫名是保留的,可以直接訪問這些有特殊作用的數(shù)據(jù)庫梢杭。

admin: 從權(quán)限的角度來看扒磁,這是"root"數(shù)據(jù)庫。要是將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫式曲,這個(gè)用戶自動(dòng)繼承所有數(shù)據(jù)庫的權(quán)限妨托。一些特定的服務(wù)器端命令也只能從這個(gè)數(shù)據(jù)庫運(yùn)行缸榛,比如列出所有的數(shù)據(jù)庫或者關(guān)閉服務(wù)器。

local:?這個(gè)數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制兰伤,可以用來存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合

config: 當(dāng)Mongo用于分片設(shè)置時(shí)内颗,config數(shù)據(jù)庫在內(nèi)部使用,用于保存分片的相關(guān)信息敦腔。

集合

1均澳、集合就是 MongoDB 文檔組,類似于 RDBMS (關(guān)系數(shù)據(jù)庫管理系統(tǒng):Relational Database Management System)中的表格符衔。

2找前、集合存在于數(shù)據(jù)庫中,集合沒有固定的結(jié)構(gòu)判族,這意味著你在對(duì)集合可以插入不同格式和類型的數(shù)據(jù)躺盛,但通常情況下我們插入集合的數(shù)據(jù)都會(huì)有一定的關(guān)聯(lián)性。

合法的集合名

1形帮、集合名不能是空字符串""槽惫。

2、集合名不能含有\(zhòng)0字符(空字符)辩撑,這個(gè)字符表示集合名的結(jié)尾界斜。

3、集合名不能以"system."開頭合冀,這是為系統(tǒng)集合保留的前綴各薇。

4、用戶創(chuàng)建的集合名字不能含有保留字符君躺。有些驅(qū)動(dòng)程序的確支持在集合名里面包含得糜,這是因?yàn)槟承┫到y(tǒng)生成的集合中包含該字符。除非你 要訪問這種系統(tǒng)創(chuàng)建的集合晰洒,否則千萬不要在名字里出現(xiàn)$朝抖。

文檔 

文檔是一組鍵值(key-value)對(duì)(即BSON)。MongoDB 的文檔不需要設(shè)置相同的字段谍珊,并且相同的字段不需要相同的數(shù)據(jù)類型治宣,這與關(guān)系型數(shù)據(jù)庫有很大的區(qū)別,也是 MongoDB 非常突出的特點(diǎn)

需要注意的是:

1砌滞、 文檔中的鍵/值對(duì)是有序的侮邀。

2、文檔中的值不僅可以是在雙引號(hào)里面的字符串贝润,還可以是其他幾種數(shù)據(jù)類型(甚至可以是整個(gè)嵌入的文檔)绊茧。

3、 MongoDB區(qū)分類型和大小寫打掘。

.4华畏、MongoDB的文檔不能有重復(fù)的鍵鹏秋。

.5、文檔的鍵是字符串亡笑。除了少數(shù)例外情況侣夷,鍵可以使用任意UTF-8字符。

文檔鍵命名規(guī)范:

1仑乌、鍵不能含有\(zhòng)0 (空字符)百拓。這個(gè)字符用來表示鍵的結(jié)尾。

2晰甚、和$有特別的意義衙传,只有在特定環(huán)境下才能使用。

3厕九、以下劃線"_"開頭的鍵是保留的(不是嚴(yán)格要求的)蓖捶。

MongoDB 數(shù)據(jù)類型


MongoDB - 連接

mongodb://?這是固定的格式,必須要指定止剖。

username:password@?可選項(xiàng),如果設(shè)置落君,在連接數(shù)據(jù)庫服務(wù)器之后穿香,驅(qū)動(dòng)都會(huì)嘗試登陸這個(gè)數(shù)據(jù)庫

host1?必須的指定至少一個(gè)host, host1 是這個(gè)URI唯一要填寫的。它指定了要連接服務(wù)器的地址绎速。如果要連接復(fù)制集皮获,請(qǐng)指定多個(gè)主機(jī)地址。

portX?可選的指定端口纹冤,如果不填洒宝,默認(rèn)為27017

/database?如果指定username:password@,連接并驗(yàn)證登陸指定數(shù)據(jù)庫萌京。若不指定雁歌,默認(rèn)打開 test 數(shù)據(jù)庫。

?options?是連接選項(xiàng)知残。如果不使用/database靠瞎,則前面需要加上/。所有連接選項(xiàng)都是鍵值對(duì)name=value求妹,鍵值對(duì)之間通過&或;(分號(hào))隔開

例如:

使用默認(rèn)端口來連接 MongoDB 的服務(wù)乏盐。

mongodb://localhost? ?

使用用戶 admin 使用密碼 123456 連接到本地的 MongoDB 服務(wù)上

mongodb://admin:123456@localhost/

使用用戶名和密碼連接登陸到指定數(shù)據(jù)庫,格式如下:

mongodb://admin:123456@localhost/test

MongoDB 創(chuàng)建數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫 use DATABASE_NAME 如果數(shù)據(jù)庫不存在制恍,則創(chuàng)建數(shù)據(jù)庫父能,否則切換到指定數(shù)據(jù)庫

例如: use user

查看數(shù)據(jù)庫 ?show dbs

剛創(chuàng)建的數(shù)據(jù)庫看不到,是因?yàn)閿?shù)據(jù)庫中沒有數(shù)據(jù)净神,插入一條數(shù)據(jù)

db.user.insert({“name”:”zhangsan”})

MongoDB 刪除數(shù)據(jù)庫

刪除數(shù)據(jù)庫

db.dropDatabase()

刪除當(dāng)前數(shù)據(jù)庫

刪除集合

db.collection.drop()

MongoDB 插入文檔

MongoDB 使用 insert() 或 save() 方法向集合中插入文檔何吝,語法如下:

db.COLLECTION_NAME.insert(document)

例如:

db.user.insert({name:”hanmeimei”})

查看插入的文檔:

db.user.find()

還可以

document=({name:’ddddd'})

db.col.insert(document)

MongoDB 更新文檔

update() 方法用于更新已存在的文檔溉委。語法格式如下:db.collection.update(,, { upsert:, multi:, writeConcern: }

)

參數(shù)說明:

1、query?: update的查詢條件岔霸,類似sql update查詢內(nèi)where后面的薛躬。

2、update?: update的對(duì)象和一些更新的操作符(如$,$inc...)等呆细,也可以理解為sql update查詢內(nèi)set后面的

3型宝、upsert?: 可選,這個(gè)參數(shù)的意思是絮爷,如果不存在update的記錄趴酣,是否插入objNew,true為插入,默認(rèn)是false坑夯,不插入岖寞。

4、multi?: 可選柜蜈,mongodb 默認(rèn)是false,只更新找到的第一條記錄仗谆,如果這個(gè)參數(shù)為true,就把按條件查出來多條記錄全部更新。

5淑履、writeConcern?:可選隶垮,拋出異常的級(jí)別。

MongoDB 查詢文檔

語法

MongoDB 查詢數(shù)據(jù)的語法格式如下:

db.collection.find(query, projection)

query?:可選秘噪,使用查詢操作符指定查詢條件

projection?:可選狸吞,使用投影操作符指定返回的鍵。查詢時(shí)返回文檔中所有鍵值指煎, 只需省略該參數(shù)即可(默認(rèn)省略)蹋偏。

如果你需要以易讀的方式來讀取數(shù)據(jù),可以使用 pretty() 方法至壤,語法格式如下:

db.user.find().pretty()

db.user.findOne() 只返回一個(gè)文檔

MongoDB 與 RDBMS Where 語句比較


MongoDB?$type?操作符

$type操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型威始,并返回結(jié)果。




????????????????????????????????????????Nodejs + MongoDb


Mongoose是NodeJS的驅(qū)動(dòng)像街,不能作為其他語言的驅(qū)動(dòng)字逗。Mongoose有兩個(gè)特點(diǎn)

  1、通過關(guān)系型數(shù)據(jù)庫的思想來設(shè)計(jì)非關(guān)系型數(shù)據(jù)庫

  2宅广、基于mongodb驅(qū)動(dòng)葫掉,簡(jiǎn)化操作


Mongooose中,有三個(gè)比較重要的概念跟狱,分別是Schema俭厚、Model、Document驶臊。它們的關(guān)系是:Schema生成Model挪挤,Model創(chuàng)造Document叼丑,Model和Document都可對(duì)數(shù)據(jù)庫操作造成影響,但Model比Document更具操作性

  Schema用于定義數(shù)據(jù)庫的結(jié)構(gòu)扛门。類似創(chuàng)建表時(shí)的數(shù)據(jù)定義(不僅僅可以定義文檔的結(jié)構(gòu)和屬性鸠信,還可以定義文檔的實(shí)例方法、靜態(tài)模型方法论寨、復(fù)合索引等)星立,每個(gè)Schema會(huì)映射到mongodb中的一個(gè)collection,Schema不具備操作數(shù)據(jù)庫的能力

  Model是由Schema編譯而成的構(gòu)造器葬凳,具有抽象屬性和行為绰垂,可以對(duì)數(shù)據(jù)庫進(jìn)行增刪查改。Model的每一個(gè)實(shí)例(instance)就是一個(gè)文檔document

  Document是由Model創(chuàng)建的實(shí)體火焰,它的操作也會(huì)影響數(shù)據(jù)庫

Mongoose安裝:

安裝nodejs和mongodb之后 劲装,使用npm來安裝mongoose

npm install mongoose

安裝成功后,就可以通過?require('mongoose') 來使用

連接數(shù)據(jù)庫

  使用require()方法在項(xiàng)目中包含mongoose后昌简,接下來使用connect()方法連接到MongoDB數(shù)據(jù)庫

【connect()】

mongoose.connect(url);

  connect()最簡(jiǎn)單的使用方式占业,就是只要傳入url參數(shù)即可,如下所示纯赎。連接到本地localhost的db1服務(wù)器

mongoose.connect('mongodb://localhost/db1');

  如果還需要傳遞用戶名谦疾、密碼,則可以使用如下方式

mongoose.connect('mongodb://username:password@host:port/database?options...');

Robomongo

是個(gè)存儲(chǔ)數(shù)據(jù)庫的一個(gè)軟件

Robomongo 最新版本叫做Robo 3T址否,是一個(gè)可視化的MongoDb

的管理工具餐蔬,類似我們之前用過的Navicat碎紊,不過那個(gè)是用來操作Mysql這種關(guān)系型數(shù)據(jù)庫的佑附。

下載地址:https://robomongo.org/download

關(guān)系型數(shù)據(jù)庫遵循ACID規(guī)則

事務(wù)在英文中是transaction,和現(xiàn)實(shí)世界中的交易很類似仗考,它有如下四個(gè)特性:

1音同、A (Atomicity) 原子性

原子性很容易理解,也就是說事務(wù)里的所有操作要么全部做完秃嗜,要么都不做权均,事務(wù)成功的條件是事務(wù)里的所有操作都成功,只要有一個(gè)操作失敗锅锨,整個(gè)事務(wù)就失敗叽赊,需要回滾。

比如銀行轉(zhuǎn)賬必搞,從A賬戶轉(zhuǎn)100元至B賬戶必指,分為兩個(gè)步驟:1)從A賬戶取100元;2)存入100元至B賬戶恕洲。這兩步要么一起完成塔橡,要么一起不完成梅割,如果只完成第一步,第二步失敗葛家,錢會(huì)莫名其妙少了100元户辞。

2、C (Consistency) 一致性

一致性也比較容易理解癞谒,也就是說數(shù)據(jù)庫要一直處于一致的狀態(tài)底燎,事務(wù)的運(yùn)行不會(huì)改變數(shù)據(jù)庫原本的一致性約束。

例如現(xiàn)有完整性約束a+b=10扯俱,如果一個(gè)事務(wù)改變了a书蚪,那么必須得改變b,使得事務(wù)結(jié)束后依然滿足a+b=10迅栅,否則事務(wù)失敗殊校。

3、I (Isolation) 獨(dú)立性

所謂的獨(dú)立性是指并發(fā)的事務(wù)之間不會(huì)互相影響读存,如果一個(gè)事務(wù)要訪問的數(shù)據(jù)正在被另外一個(gè)事務(wù)修改为流,只要另外一個(gè)事務(wù)未提交,它所訪問的數(shù)據(jù)就不受未提交事務(wù)的影響让簿。

比如現(xiàn)在有個(gè)交易是從A賬戶轉(zhuǎn)100元至B賬戶敬察,在這個(gè)交易還未完成的情況下,如果此時(shí)B查詢自己的賬戶尔当,是看不到新增加的100元的莲祸。

4、D (Durability) 持久性

持久性是指一旦事務(wù)提交后椭迎,它所做的修改將會(huì)永久的保存在數(shù)據(jù)庫上锐帜,即使出現(xiàn)宕機(jī)也不會(huì)丟失。

分布式系統(tǒng)



分布式系統(tǒng)


1. 分布式系統(tǒng)(distributed system)由多臺(tái)計(jì)算機(jī)和通信的軟件組件通過計(jì)算機(jī)網(wǎng)絡(luò)連接(本地網(wǎng)絡(luò)或廣域網(wǎng))組成畜号。

2. 分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)缴阎。正是因?yàn)檐浖奶匦裕苑植际较到y(tǒng)具有高度的內(nèi)聚性和透明性简软。

3. 因此蛮拔,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件痹升。

4. 分布式系統(tǒng)可以應(yīng)用在不同的平臺(tái)上如:Pc建炫、工作站、局域網(wǎng)和廣域網(wǎng)上等疼蛾。

分布式計(jì)算的優(yōu)點(diǎn)

可靠性(容錯(cuò)) :

分布式計(jì)算系統(tǒng)中的一個(gè)重要的優(yōu)點(diǎn)是可靠性肛跌。一臺(tái)服務(wù)器的系統(tǒng)崩潰并不影響到其余的服務(wù)器。

可擴(kuò)展性:

在分布式計(jì)算系統(tǒng)可以根據(jù)需要增加更多的機(jī)器。

資源共享:

共享數(shù)據(jù)是必不可少的應(yīng)用惋砂,如銀行妒挎,預(yù)訂系統(tǒng)。

靈活性:

由于該系統(tǒng)是非常靈活的西饵,它很容易安裝酝掩,實(shí)施和調(diào)試新的服務(wù)。

更快的速度:

分布式計(jì)算系統(tǒng)可以有多臺(tái)計(jì)算機(jī)的計(jì)算能力眷柔,使得它比其他系統(tǒng)有更快的處理速度期虾。

開放系統(tǒng):

由于它是開放的系統(tǒng),本地或者遠(yuǎn)程都可以訪問到該服務(wù)驯嘱。

更高的性能:

相較于集中式計(jì)算機(jī)網(wǎng)絡(luò)集群可以提供更高的性能(及更好的性價(jià)比)镶苞。

分布式計(jì)算的缺點(diǎn)


故障排除:

故障排除和診斷問題。

軟件:

更少的軟件支持是分布式計(jì)算系統(tǒng)的主要缺點(diǎn)鞠评。

網(wǎng)絡(luò):

網(wǎng)絡(luò)基礎(chǔ)設(shè)施的問題茂蚓,包括:傳輸問題,高負(fù)載剃幌,信息丟失等聋涨。

安全性:

開放系統(tǒng)的特性讓分布式計(jì)算系統(tǒng)存在著數(shù)據(jù)的安全性和共享的風(fēng)險(xiǎn)等問題。

?NoSQL


NoSQL


1. NoSQL(NoSQL = Not Only SQL )负乡,意即"不僅僅是SQL"牍白。

2. 在現(xiàn)代的計(jì)算系統(tǒng)上每天網(wǎng)絡(luò)上都會(huì)產(chǎn)生龐大的數(shù)據(jù)量。

3. 這些數(shù)據(jù)有很大一部分是由關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來處理抖棘。 1970年 E.F.Codd's提出的關(guān)系模型的論文 "A relational model of? ? ? ? ? ? data? ?for large shared data banks"茂腥,這使得數(shù)據(jù)建模和應(yīng)用程序編程更加簡(jiǎn)單。

4. 通過應(yīng)用實(shí)踐證明切省,關(guān)系模型是非常適合于客戶服務(wù)器編程最岗,遠(yuǎn)遠(yuǎn)超出預(yù)期的利益,今天它是結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)和商務(wù)應(yīng)用的主導(dǎo)技? ? ? ? 術(shù)数尿。

5. NoSQL 是一項(xiàng)全新的數(shù)據(jù)庫革命性運(yùn)動(dòng)仑性,早期就有人提出惶楼,發(fā)展至2009年趨勢(shì)越發(fā)高漲右蹦。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存? ? ? ? ?儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫運(yùn)用歼捐,這一概念無疑是一種全新的思維的注入何陆。

什么是NoSQL?


1. NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫豹储。NoSQL有時(shí)也稱作Not Only SQL的縮寫贷盲,是對(duì)不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫管理系統(tǒng)的統(tǒng)稱。

2. NoSQL用于超大規(guī)模數(shù)據(jù)的存儲(chǔ)。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數(shù)據(jù))巩剖。


為什么使用NoSQL?

為什么使用NoSQL ?


今天我們可以通過第三方平臺(tái)(如:Google,Facebook等)可以很容易的訪問和抓取數(shù)據(jù)铝穷。用戶的個(gè)人信息,社交網(wǎng)絡(luò)佳魔,地理位置曙聂,用戶生成的數(shù)據(jù)和用戶操作日志已經(jīng)成倍的增加。我們?nèi)绻獙?duì)這些用戶數(shù)據(jù)進(jìn)行挖掘鞠鲜,那SQL數(shù)據(jù)庫已經(jīng)不適合這些應(yīng)用了, NoSQL數(shù)據(jù)庫的發(fā)展也卻能很好的處理這些大的數(shù)據(jù)宁脊。

NoSQL 簡(jiǎn)史


1. NoSQL一詞最早出現(xiàn)于1998年,是Carlo Strozzi開發(fā)的一個(gè)輕量贤姆、開源榆苞、不提供SQL功能的關(guān)系數(shù)據(jù)庫。

2. 2009年霞捡,Last.fm的Johan Oskarsson發(fā)起了一次關(guān)于分布式開源數(shù)據(jù)庫的討論[2]坐漏,來自Rackspace的Eric Evans再次提出了NoSQL的概? ? ? ? ? 念,這時(shí)的NoSQL主要指非關(guān)系型碧信、分布式仙畦、不提供ACID的數(shù)據(jù)庫設(shè)計(jì)模式。

3. 2009年在亞特蘭大舉行的"no:sql(east)"討論會(huì)是一個(gè)里程碑音婶,其口號(hào)是"select fun, profit from real_world where relational=false;"慨畸。因此,? ? ? ? 對(duì)NoSQL最普遍的解釋是"非關(guān)聯(lián)型的"衣式,強(qiáng)調(diào)Key-Value Stores和文檔數(shù)據(jù)庫的優(yōu)點(diǎn)寸士,而不是單純的反對(duì)RDBMS。

RDBMS vs NoSQL


RDBMS?

- 高度組織化結(jié)構(gòu)化數(shù)據(jù)?

- 結(jié)構(gòu)化查詢語言(SQL) (SQL)

?- 數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中碴卧。?

- 數(shù)據(jù)操縱語言弱卡,數(shù)據(jù)定義語言?

- 嚴(yán)格的一致性

- 基礎(chǔ)事務(wù)

NoSQL?

- 代表著不僅僅是SQL

- 沒有聲明性查詢語言

- 沒有預(yù)定義的模式

-鍵 - 值對(duì)存儲(chǔ),列存儲(chǔ)住册,文檔存儲(chǔ)婶博,圖形數(shù)據(jù)庫

- 最終一致性,而非ACID屬性

- 非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù)

- CAP定理

?- 高性能荧飞,高可用性和可伸縮性

NoSQL的優(yōu)點(diǎn)/缺點(diǎn)


優(yōu)點(diǎn):

- 高可擴(kuò)展性

- 分布式計(jì)算

- 低成本

- 架構(gòu)的靈活性凡人,半結(jié)構(gòu)化數(shù)據(jù)

- 沒有復(fù)雜的關(guān)系

缺點(diǎn):

- 沒有標(biāo)準(zhǔn)化

- 有限的查詢功能(到目前為止)

- 最終一致是不直觀的程序

CAP定理(CAP theorem)


在計(jì)算機(jī)科學(xué)中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer's theorem), 它指出對(duì)于一個(gè)分布式計(jì)算系統(tǒng)來說,不可能同時(shí)滿足以下三點(diǎn):

1.? 一致性(Consistency)?(所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù))

2.? 可用性(Availability)?(保證每個(gè)請(qǐng)求不管成功或者失敗都有響應(yīng))

3.? 分隔容忍(Partition tolerance)?(系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作)

4.? CAP理論的核心是:一個(gè)分布式系統(tǒng)不可能同時(shí)很好的滿足一致性叹阔,可用性和分區(qū)容錯(cuò)性這三個(gè)需求挠轴,最多只能同時(shí)較好的滿足兩個(gè)。

? ? ?因此耳幢,根據(jù) CAP 原理將 NoSQL 數(shù)據(jù)庫分成了滿足 CA 原則岸晦、滿足 CP 原則和滿足 AP 原則三 大類:

5.? CA - 單點(diǎn)集群,滿足一致性,可用性的系統(tǒng)启上,通常在可擴(kuò)展性上不太強(qiáng)大邢隧。

6.? CP - 滿足一致性,分區(qū)容忍性的系統(tǒng)冈在,通常性能不是特別高府框。

7.? AP - 滿足可用性,分區(qū)容忍性的系統(tǒng)讥邻,通称染福可能對(duì)一致性要求低一些。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兴使,一起剝皮案震驚了整個(gè)濱河市系宜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌发魄,老刑警劉巖盹牧,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異励幼,居然都是意外死亡汰寓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門苹粟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來有滑,“玉大人,你說我怎么就攤上這事嵌削∶茫” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵苛秕,是天一觀的道長(zhǎng)肌访。 經(jīng)常有香客問我,道長(zhǎng)艇劫,這世上最難降的妖魔是什么吼驶? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮店煞,結(jié)果婚禮上蟹演,老公的妹妹穿的比我還像新娘。我一直安慰自己浅缸,他們只是感情好轨帜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布魄咕。 她就那樣靜靜地躺著衩椒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毛萌,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天苟弛,我揣著相機(jī)與錄音,去河邊找鬼阁将。 笑死膏秫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的做盅。 我是一名探鬼主播缤削,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吹榴!你這毒婦竟也來了亭敢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤图筹,失蹤者是張志新(化名)和其女友劉穎帅刀,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體远剩,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扣溺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓜晤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锥余。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖痢掠,靈堂內(nèi)的尸體忽然破棺而出哈恰,到底是詐尸還是另有隱情,我是刑警寧澤志群,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布着绷,位于F島的核電站,受9級(jí)特大地震影響锌云,放射性物質(zhì)發(fā)生泄漏荠医。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一桑涎、第九天 我趴在偏房一處隱蔽的房頂上張望彬向。 院中可真熱鬧,春花似錦攻冷、人聲如沸娃胆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽里烦。三九已至凿蒜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胁黑,已是汗流浹背废封。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丧蘸,地道東北人漂洋。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像力喷,于是被迫代替她去往敵國和親刽漂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,928評(píng)論 2 89
  • 2017.12.20 星期三 多云 親子日記(235) 這個(gè)周又進(jìn)行了一半了弟孟,看到兒子這不著急爽冕,不緊張的樣子,讓他...
    于澤媽媽閱讀 76評(píng)論 0 0
  • ---我看過被城市磨平的暮光 如何長(zhǎng)成深藍(lán)的云 如何伸展成青黑的水 如何漫延成大海 如何讓我想起你 ---上帝創(chuàng)造...
    斐炎涼閱讀 549評(píng)論 19 20
  • 2018.7.11 星期三 晴 親子日記第215天 吃過早飯送一軒去國學(xué)堂披蕉,孩子們?cè)缭缇偷烬R了颈畸,跟老師問過好后開始...
    涓涓流水_672f閱讀 141評(píng)論 0 1
  • 投射今天有個(gè)好心情,正能量滿滿没讲。 投射身體健康眯娱,狀態(tài)越來越好。 投射買彩票會(huì)中獎(jiǎng)爬凑。 投射心理醫(yī)生會(huì)給我一個(gè)好的婚姻...
    一心人的錦繡夢(mèng)閱讀 207評(píng)論 0 1