《如何恰當(dāng)使用SQL和NoSQL ?》要點(diǎn):
本文介紹了如何恰當(dāng)使用SQL和NoSQL ?,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
隨著大數(shù)據(jù)的熱潮,非關(guān)系型數(shù)據(jù)庫NoSQL在近兩年也受到了更多人的關(guān)注,有人還提出NoSQL將主導(dǎo)未來的大數(shù)據(jù)分析領(lǐng)域.而事實(shí)上,SQL與NoSQL之間其實(shí)就是互補(bǔ)的關(guān)系,未來雙方在大數(shù)據(jù)和云計(jì)算時(shí)代都將會(huì)有很大的發(fā)展空間.
概念
SQL (Structured Query Language) 數(shù)據(jù)庫,指關(guān)系型數(shù)據(jù)庫.主要代表:SQL Server,Oracle,MySQL(開源),PostgreSQL(開源).
NoSQL(Not Only SQL)泛指非關(guān)系型數(shù)據(jù)庫.主要代表:MongoDB,Redis,CouchDB.
SQL 數(shù)據(jù)庫:
在表中存儲(chǔ)相關(guān)聯(lián)的數(shù)據(jù)
在使用之前需要定義表的一個(gè)模式
鼓勵(lì)標(biāo)準(zhǔn)化減少數(shù)據(jù)冗余
支持從多個(gè)表中檢索相關(guān)數(shù)據(jù)表連接在一個(gè)單一的命令
實(shí)現(xiàn)數(shù)據(jù)完整性規(guī)則
提供事務(wù)使兩個(gè)或兩個(gè)以上的成功或失敗的數(shù)據(jù)更改作為一個(gè)原子單元
可以擴(kuò)展(有一些努力)
使用一個(gè)強(qiáng)聲明性語言查詢
提供足夠的支持,專業(yè)技能和工具.
NoSQL 數(shù)據(jù)庫
將相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)在類似 JSON 格式,名稱-值
可以保存沒有指定格式的數(shù)據(jù)
通常必須規(guī)范化,所以一個(gè)項(xiàng)目的信息包含在一個(gè)文檔里
應(yīng)該不需要連接(假設(shè)使用規(guī)范化的文檔)
允許任何數(shù)據(jù)被保存在任何時(shí)候任何地方,不需要驗(yàn)證
保證更新一個(gè)文檔 – 但不是多個(gè)文檔
提供出色的性能和可伸縮性
使用 JSON 數(shù)據(jù)對(duì)象查詢
是一個(gè)新的、令人興奮的技術(shù).
SQL和NoSQL之間的區(qū)別
SQL的獨(dú)特優(yōu)勢包括:
1. SQL能夠加強(qiáng)與數(shù)據(jù)的交互,并允許對(duì)單個(gè)數(shù)據(jù)庫設(shè)計(jì)提出問題.這是很關(guān)鍵的特征,因?yàn)闊o法交互的數(shù)據(jù)基本上是沒用的,并且,增強(qiáng)的交互性能夠帶來新的見解、新的問題和更有意義的未來交互.
2. SQL是標(biāo)準(zhǔn)化的,使用戶能夠跨系統(tǒng)運(yùn)用他們的知識(shí),并對(duì)第三方附件和工具提供支持.
3. SQL能夠擴(kuò)展,并且是多功能和經(jīng)過時(shí)間驗(yàn)證的,這能夠解決從快寫為主導(dǎo)的傳輸?shù)綊呙杳芗蜕钊敕治龅葐栴}.
4. SQL對(duì)數(shù)據(jù)呈現(xiàn)和存儲(chǔ)采用正交形式,一些SQL系統(tǒng)支持JSON和其他結(jié)構(gòu)化對(duì)象格式,比NoSQL具有更好的性能和更多功能.
NoSQL特點(diǎn):
易擴(kuò)展
NoSQL數(shù)據(jù)庫種類繁多,但是一個(gè)共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系型特性.數(shù)據(jù)之間無關(guān)系,這樣就非常容易擴(kuò)展.也無形之間,在架構(gòu)的層面上帶來了可擴(kuò)展的能力.
大數(shù)據(jù)量,高性能
NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀.這得益于它的無關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單.NoSQL的Cache是記錄級(jí)的,是一種細(xì)粒度的Cache,所以NoSQL在這個(gè)層面上來說就要性能高很多了.
靈活的數(shù)據(jù)模型
NoSQL無需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,隨時(shí)可以存儲(chǔ)自定義的數(shù)據(jù)格式.而在關(guān)系數(shù)據(jù)庫里,增刪字段是一件非常麻煩的事情.如果是非常大數(shù)據(jù)量的表,增加字段簡直就是一個(gè)噩夢.這點(diǎn)在大數(shù)據(jù)量的web2.0時(shí)代尤其明顯.
高可用
NoSQL在不太影響性能的情況,就可以方便的實(shí)現(xiàn)高可用的架構(gòu).比如Cassandra,HBase模型,通過復(fù)制模型也能實(shí)現(xiàn)高可用.
總結(jié)
SQL和NoSQL水火不容的想法是錯(cuò)誤的,理由并不僅僅是因?yàn)楹芏喙径歼x擇同時(shí)使用它們.就像我以前討論過的所有技術(shù)一樣,世上真的沒有那種“萬金油”的辦法,要根據(jù)用例來選擇恰當(dāng)?shù)募夹g(shù).如果你的數(shù)據(jù)需求在迅速變化,就需要高通量來應(yīng)對(duì)快速的增長,如果你的數(shù)據(jù)在大幅增長,就需要快速且有效的擴(kuò)展性,NoSQL可能會(huì)適合你.但如果你的數(shù)據(jù)結(jié)構(gòu)沒有變化,增長速度適中可控,那么SQL技術(shù)可能最適合你.毫無疑問,SQL還沒有消亡.
《如何恰當(dāng)使用SQL和NoSQL ?》是否對(duì)您有啟發(fā),歡迎查看更多與《如何恰當(dāng)使用SQL和NoSQL ?》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/9340.html