NoSQL數(shù)據(jù)庫有哪些種類
- 文檔型數(shù)據(jù)庫
文檔型數(shù)據(jù)庫采用文檔的方式來存儲(chǔ)數(shù)據(jù),即將單個(gè)實(shí)體的所有數(shù)據(jù)都存在一個(gè)文檔中步咪,而文檔存在于集合中。
MongoDB - “鍵值對(duì)”(Key-Value)數(shù)據(jù)庫
“鍵值對(duì)”數(shù)據(jù)庫主要是使用數(shù)據(jù)結(jié)構(gòu)中的鍵來查找特定的值
優(yōu)點(diǎn):這類數(shù)據(jù)庫在存儲(chǔ)時(shí)不采用任何模式,因此極易添加數(shù)據(jù)
缺點(diǎn):通過“鍵”和“值”一對(duì)一查找時(shí)性能較高,但只針對(duì)“值”來查找時(shí)性能會(huì)比較差
Redis爽冕、Voldemort、Scalaris披蕉、Oracle Berkeley DB - 列存儲(chǔ)數(shù)據(jù)庫
列存儲(chǔ)數(shù)據(jù)庫是以“列”為單位來存儲(chǔ)數(shù)據(jù)的颈畸。相對(duì)與行存儲(chǔ)的數(shù)據(jù)庫,它更適合用于批量數(shù)據(jù)處理與實(shí)時(shí)數(shù)據(jù)查詢
優(yōu)點(diǎn):同一列數(shù)據(jù)的格式相同没讲,所以適合數(shù)據(jù)壓縮眯娱,也更善于處理大量數(shù)據(jù)的查詢與計(jì)算,切有利于分布式擴(kuò)展
缺點(diǎn):不適合做實(shí)時(shí)的刪除或更新操作
Sybase IQ食零、Vertica - 圖存儲(chǔ)數(shù)據(jù)庫
圖存儲(chǔ)數(shù)據(jù)庫,采用圖形理論來存儲(chǔ)尸體之間的關(guān)系信息寂屏,如社交關(guān)系網(wǎng)絡(luò)贰谣、族譜
Neo4j娜搂、FlockDB、GraphDB
MongoDB簡介
MongoDB有哪些特性
存儲(chǔ)結(jié)構(gòu)
- MongoDB采用“集合”來存儲(chǔ)文檔數(shù)據(jù)
- 文檔的存儲(chǔ)架構(gòu)是基于JSON改良的BSON
- MongoDB可以存儲(chǔ)無模式的文檔吱抚,不需要事先定義數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型百宇。
- MongoDB能讓使用者根據(jù)應(yīng)用程序的存取需求來設(shè)置反正規(guī)化的數(shù)據(jù)結(jié)構(gòu),以加快查詢速度
數(shù)據(jù)查詢
- 除了單表查詢功能秘豹,還支持強(qiáng)大的聚合計(jì)算(sum/avg/count/group等)携御,以及大數(shù)據(jù)引擎中常見的映射和歸納(MapReduce)
- MongoDB可以在特定的集合字段上添加索引,以提升查詢的性能
- 支持多種程序語言操作
數(shù)據(jù)庫架構(gòu)
- MongoDB集群具有副本集的架構(gòu)既绕,可以實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)備援啄刹、故障轉(zhuǎn)移等,能確保服務(wù)不會(huì)長時(shí)間中斷或發(fā)生數(shù)據(jù)丟失的情況
- MongoDB支持?jǐn)?shù)據(jù)塊自動(dòng)切分凄贩,可以實(shí)現(xiàn)橫向擴(kuò)容誓军、能保證數(shù)據(jù)存儲(chǔ)于王文的負(fù)載均衡。雖然數(shù)據(jù)是分布式存儲(chǔ)的疲扎,但對(duì)應(yīng)用程序來說昵时,仍可以通過統(tǒng)一的路由來訪問數(shù)據(jù)
MongoDB的使用場景
- 需要處理大量的低價(jià)值數(shù)據(jù),且對(duì)數(shù)據(jù)處理性能有較高要求
- 需要借助緩存層來處理數(shù)據(jù)
- 需要高度的伸縮性
MongoDB中的對(duì)象
數(shù)據(jù)庫 Database
默認(rèn)數(shù)據(jù)庫test椒丧,在使用use <databasename>時(shí)壹甥,會(huì)切換到某個(gè)數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在壶熏,會(huì)自動(dòng)創(chuàng)建
集合 Collenction
MongoDB是面向集合的存儲(chǔ)句柠。在儲(chǔ)存數(shù)據(jù)時(shí),MongoDB會(huì)使用集合在做分類久橙,在集合中可以儲(chǔ)存許多文檔
集合對(duì)應(yīng)表(Table)俄占,不過集合不需要事先定義模式(Schema)
文檔 Document
文檔是MongoDB存儲(chǔ)數(shù)據(jù)的最基本單元,相當(dāng)于行(Row)淆衷。文檔內(nèi)包括一至多個(gè)“鍵值對(duì)”缸榄。每個(gè)“鍵”為一個(gè)字段(Field)。字段的值可以是數(shù)值祝拯,字符串甚带,數(shù)組或者子文檔等
視圖 (View)
視圖與查詢集合的結(jié)果相同,但視圖并非實(shí)際存在的集合佳头,而是通過指令來構(gòu)建數(shù)據(jù)查詢得出的結(jié)果鹰贵。
索引(Index)
MongoDB索引的使用方法和原理都于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的索引相同。MongoDB還支持地理空間索引康嘉,以提升查詢平面或球面坐標(biāo)的速度碉输。
用戶(User)
如果MongoDB開啟了安全認(rèn)證,在會(huì)在數(shù)據(jù)庫中產(chǎn)生用戶表亭珍。在MongoDB中敷钾,每個(gè)數(shù)據(jù)庫都有獨(dú)立的用戶表
存儲(chǔ)過程(Stored Procedure)
MongoDB的存儲(chǔ)過程是用JavaScript撰寫的枝哄,存儲(chǔ)在system.js集合中,具有輸入/輸出參數(shù)阻荒、嵌套調(diào)用等特性挠锥,可提供應(yīng)用程序調(diào)用
字段(Field)
字段是MongoDB文檔中的元素,相當(dāng)于關(guān)系型數(shù)據(jù)庫中的“列”(Column)侨赡。在MongoDB中蓖租,字段可以添加的增加或減少,不需要事先定義
MongoDB與關(guān)系型數(shù)據(jù)庫的術(shù)語對(duì)應(yīng)關(guān)系
MongoDB | 關(guān)系型數(shù)據(jù)庫 |
---|---|
database(數(shù)據(jù)庫) | database(數(shù)據(jù)庫) |
collection(集合) | table(表) |
document(文檔) | row(行) |
field(字段) | column(列) |
View(視圖) | View(視圖) |
User(用戶) | User(用戶) |
Stored Procedure(預(yù)存程序) | Stored Procedure(預(yù)存程序) |