眾所周知,數(shù)據(jù)庫分為關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。那么非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫區(qū)別有哪些?關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫在使用方案上有很大的不同,因此沒有強(qiáng)項(xiàng)和弱項(xiàng)。只有結(jié)合自身的業(yè)務(wù)特征,才能發(fā)揮這兩種類型數(shù)據(jù)庫的優(yōu)勢(shì)。讓我們談?wù)勥@兩種數(shù)據(jù)庫的一些特征:首先,一般的非關(guān)系數(shù)據(jù)庫基于CAP模型,而傳統(tǒng)的關(guān)系數(shù)據(jù)庫基于ACID模型。
1. 數(shù)據(jù)存儲(chǔ)結(jié)構(gòu):
首先關(guān)系型數(shù)據(jù)庫一般都有固定的表結(jié)構(gòu),并且需要通過DDL語句來修改表結(jié)構(gòu),不是很容易進(jìn)行擴(kuò)展,而非關(guān)系型數(shù)據(jù)庫的存儲(chǔ)機(jī)制就有很多了,比如基于文檔的,K-V鍵值對(duì)的,還有基于圖的等,對(duì)于數(shù)據(jù)的格式十分靈活沒有固定的表結(jié)構(gòu),方便擴(kuò)展,因此如果業(yè)務(wù)的數(shù)據(jù)結(jié)構(gòu)并不是固定的或者經(jīng)常變動(dòng)比較大的,那么非關(guān)系型數(shù)據(jù)庫是個(gè)好的選擇
2. 可擴(kuò)展性
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫給人一種橫向擴(kuò)展難,不好對(duì)數(shù)據(jù)進(jìn)行分片等,而一些非關(guān)系型數(shù)據(jù)庫則原生就支持?jǐn)?shù)據(jù)的水平擴(kuò)展(比如mongodb的sharding機(jī)制),并且這可能也是很多NoSQL的一大賣點(diǎn),其實(shí)象Mysql這種關(guān)系型數(shù)據(jù)庫的水平擴(kuò)展也并不是難,即使NoSQL水平擴(kuò)展容易但對(duì)于向跨分片進(jìn)行joins這種場(chǎng)景都沒有什么太好的解決辦法,不管是關(guān)系型還是非關(guān)系型數(shù)據(jù)庫,解決水平擴(kuò)展或者跨分片Joins這種場(chǎng)景,在應(yīng)用層和數(shù)據(jù)庫層中間加一層中間件來做數(shù)據(jù)處理也許是個(gè)好的辦法
3. 數(shù)據(jù)一致性
非關(guān)系型數(shù)據(jù)庫一般強(qiáng)調(diào)的是數(shù)據(jù)最終一致性,而不沒有像ACID一樣強(qiáng)調(diào)數(shù)據(jù)的強(qiáng)一致性,從非關(guān)系型數(shù)據(jù)庫中讀到的有可能還是處于一個(gè)中間態(tài)的數(shù)據(jù),因此如果你的業(yè)務(wù)對(duì)于數(shù)據(jù)的一致性要求很高,那么非關(guān)系型數(shù)據(jù)庫并不一個(gè)很好的選擇,非關(guān)系型數(shù)據(jù)庫可能更多的偏向于OLAP場(chǎng)景,而關(guān)系型數(shù)據(jù)庫更多偏向于OLTP場(chǎng)景
非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫區(qū)別
非關(guān)系型數(shù)據(jù)庫的優(yōu)勢(shì):
1. 性能
NOSQL是基于鍵值對(duì)的,可以想象成表中的主鍵和值的對(duì)應(yīng)關(guān)系,而且不需要經(jīng)過SQL層的解析,所以性能非常高。
2. 可擴(kuò)展性
同樣也是因?yàn)榛阪I值對(duì),數(shù)據(jù)之間沒有耦合性,所以非常容易水平擴(kuò)展。
關(guān)系型數(shù)據(jù)庫的優(yōu)勢(shì):
1. 復(fù)雜查詢
可以用SQL語句方便的在一個(gè)表以及多個(gè)表之間做非常復(fù)雜的數(shù)據(jù)查詢。
2. 事務(wù)支持
使得對(duì)于安全性能很高的數(shù)據(jù)訪問要求得以實(shí)現(xiàn)。
對(duì)于這兩類數(shù)據(jù)庫,對(duì)方的優(yōu)勢(shì)就是自己的弱勢(shì),反之亦然。
以上就是關(guān)于非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫區(qū)別有哪些的全部?jī)?nèi)容,想了解更多關(guān)于數(shù)據(jù)庫的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。