數(shù)據(jù)庫(kù)的分類
關(guān)系型數(shù)據(jù)庫(kù)遵循的ACID
A (Atomicity)原子性
C (Consisitency)一致性
I (Isolation)獨(dú)立性
D (Durability)持久性
為什么使用NoSql
not?only?sql1
現(xiàn)在個(gè)人信息爆炸
對(duì)爆炸的數(shù)據(jù)挖掘 傳統(tǒng)的SQL數(shù)據(jù)庫(kù)已經(jīng)不在適合
NoSql解決了大數(shù)據(jù)的處理和存儲(chǔ)問(wèn)題
RDBMS NoSQL
RDBMS
高度組織化結(jié)構(gòu)化數(shù)據(jù)
結(jié)構(gòu)化查詢語(yǔ)言SQL
數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中
數(shù)據(jù)操縱語(yǔ)言,數(shù)據(jù)定義語(yǔ)言
嚴(yán)格的一致性
基礎(chǔ)事務(wù)
NoSQl
not only sql
沒(méi)有聲名性查詢語(yǔ)句
沒(méi)有預(yù)定義的模型
鍵值對(duì)存儲(chǔ),列存儲(chǔ),文檔存儲(chǔ),圖形數(shù)據(jù)庫(kù)1
最終一致性,而非ACID屬性
非結(jié)構(gòu)化和不可預(yù)支的數(shù)據(jù)
CAP定理
高性能,高可用性和可伸縮性
CAP定理
對(duì)于一個(gè)分布式計(jì)算系統(tǒng)來(lái)說(shuō),不可能同時(shí)滿足一下三點(diǎn) 最多滿足兩個(gè)
一致性(所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù))
可用性(保證每個(gè)請(qǐng)求成功與否都有相應(yīng))
分隔容忍(系統(tǒng)中任意信息的丟失或者失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作)
因此根據(jù)CAP原理將NoSQL數(shù)據(jù)庫(kù)分成了滿足CA原則,滿足CP原則和滿足AP原則
CA-單點(diǎn)集群,滿足一致性,滿足性的系統(tǒng),通常在可擴(kuò)展性上不太強(qiáng)大
CP-滿足一致性,分區(qū)容忍性的系統(tǒng),通常性能不是特別高
AP-滿足可用性,分區(qū)容忍性的系統(tǒng),通??梢詫?duì)一致性要求低一些
NoSQL的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
高拓展性
分布式計(jì)算
低成本
架構(gòu)的靈活
半結(jié)構(gòu)化數(shù)據(jù)
沒(méi)有復(fù)雜的關(guān)系
缺點(diǎn)
沒(méi)有標(biāo)準(zhǔn)化
有限的查詢功能(目前為止)
最終一致是不直觀的程序
NoSQl分類
# MongoDB簡(jiǎn)介
C++編寫
分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)
可以橫向擴(kuò)展
將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)為(KV)
文檔類似于JSON對(duì)象,字段值可以包含其他文檔
主要特點(diǎn)
面向文檔存儲(chǔ)的數(shù)據(jù)庫(kù),操作起來(lái)比較簡(jiǎn)單
可以設(shè)置任何屬性的索引(FirstName = “Sameer”,Address=“8”)實(shí)現(xiàn)更快的排序
通過(guò)本地或者網(wǎng)絡(luò)床架數(shù)據(jù)鏡像,使Mongo有更強(qiáng)的擴(kuò)展性
分片:分布在計(jì)算機(jī)網(wǎng)絡(luò)的其他節(jié)點(diǎn)
Mongo支持豐富的查詢表達(dá)式.查詢指令JSON形式
update實(shí)現(xiàn)替換完成的文檔
MR對(duì)數(shù)據(jù)進(jìn)行批量處理和聚合操作
Map函數(shù)調(diào)用emit(key,value)遍歷集合中所有的記錄,kv傳給Reduce函數(shù)
Reduce函數(shù)是JavaScript編的,通過(guò)db.runCommand或mapreduce命令來(lái)執(zhí)行
GridFS是MongoDB中的一個(gè)內(nèi)置功能,可以用來(lái)存放大量小文件
允許在服務(wù)端執(zhí)行腳本,可用javaScript編寫某個(gè)函數(shù),直接在服務(wù)端執(zhí)行,函數(shù)定義也可以存儲(chǔ)在服務(wù)端,下次直接調(diào)用即可
支持各種編程語(yǔ)言:ruby Python java C php等
MongoDB解析
數(shù)據(jù)庫(kù)
一個(gè)MongoDB可以創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)
默認(rèn)數(shù)據(jù)庫(kù)為db 該數(shù)據(jù)庫(kù)存儲(chǔ)在data目錄
單個(gè)實(shí)例可以容納多個(gè)獨(dú)立的數(shù)據(jù)庫(kù),每一個(gè)都有自己的集合和權(quán)限,不同的數(shù)據(jù)庫(kù)放置在不同文件中
數(shù)據(jù)庫(kù)通過(guò)名字來(lái)標(biāo)識(shí).數(shù)據(jù)庫(kù)名字可以是滿足以下任意utf-8字符串
不不能是空字符串串("")。 不不得含有'?'(空格)、.、$、/、\和\0?(空字符)。 應(yīng)全部小小寫。 最多64字節(jié)。1234
有一些數(shù)據(jù)庫(kù)名是保留的,可以直接訪問(wèn)這些有特殊作用的數(shù)據(jù)庫(kù)
admin root數(shù)據(jù)庫(kù),將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫(kù),這個(gè)用戶自動(dòng)繼承所有數(shù)據(jù)庫(kù)的權(quán)限.特定的命令只能夠這個(gè)數(shù)據(jù)庫(kù)運(yùn)行(列出所有的數(shù)據(jù)庫(kù)或關(guān)閉服務(wù)器)
local 這個(gè)數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可以用來(lái)存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合
config:當(dāng)Mongo用于分片設(shè)置時(shí),config在內(nèi)部使用,用于保存分片的相關(guān)信息
文檔
文檔是一組kv(BSON).Mongo的文檔不需要設(shè)置相同的字段,并且相同的字段不需要相同的數(shù)據(jù)類型,與關(guān)系型數(shù)據(jù)庫(kù)有很大差別,也是MongoDB的特點(diǎn)
{"site":"www.skedu.com",?"name":"山山科大大mongodb"}1
RDBMS與MongoDB對(duì)應(yīng)的術(shù)語(yǔ):
注意
kv是有順序的
文檔中的值不僅可以是在雙引號(hào)里的字符串,還可以是其他幾種數(shù)據(jù)類型(甚至是整個(gè)嵌入式文檔)
區(qū)分類型和大小寫
文檔不能有重復(fù)的鍵
鍵是字符串.除了少數(shù)例外,可以使用UTF-8
文檔命名規(guī)范鍵不能含有\(zhòng)0(空字符).這個(gè)字符用來(lái)表示鍵的結(jié)尾
.和$有特殊意義
_開(kāi)頭是有保留的(不是嚴(yán)格要求)
集合
集合就是 MongoDB 文文檔組,類似于 RDBMS (關(guān)系數(shù)據(jù)庫(kù)管理理系統(tǒng):Relational Database
Management System)中的表格
沒(méi)有固定的結(jié)構(gòu),意味著在對(duì)集合可以插入不同格式和類型的數(shù)據(jù)
但通常情況下插入集合的數(shù)據(jù)有一定的關(guān)聯(lián)性
{"site":"www.baidu.com"} {"site":"www.google.com","name":"Google"} {"site":"www.runoob.com","name":"菜?鳥(niǎo)教程","num":5}123
MongoDB數(shù)據(jù)類型
轉(zhuǎn)載:https://blog.csdn.net/weixin_39381833/article/details/89191494