大數(shù)據(jù)與關(guān)系型數(shù)據(jù)庫(kù)是否水火不容?NO……
一直以來(lái),人們都認(rèn)為大數(shù)據(jù)和NoSQL數(shù)據(jù)庫(kù)是天作之合,而關(guān)系型數(shù)據(jù)庫(kù)則被打上OUT的標(biāo)簽,但有一位數(shù)據(jù)庫(kù)老兵并不這么認(rèn)為。
在大多數(shù)IT觀察家的眼里,大數(shù)據(jù)通常是指那些規(guī)模大到難以用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)處理的數(shù)據(jù)集。雖然今天關(guān)系模型和SQL依然是數(shù)據(jù)庫(kù)世界的統(tǒng)治者,但隨著大數(shù)據(jù)時(shí)代的到來(lái),越來(lái)越多的數(shù)據(jù)庫(kù)并非建筑在“關(guān)系”之上,且具有更高的可擴(kuò)展性。
那么,大數(shù)據(jù)時(shí)代關(guān)系型數(shù)據(jù)庫(kù)何去何從?最近MySQL開(kāi)源數(shù)據(jù)庫(kù)最初版本的開(kāi)發(fā)者,以及MySQL社區(qū)開(kāi)發(fā)分支版本——MariaDB的創(chuàng)始人之一Monty Widenius接受ReadWrite的采訪(fǎng),他駁斥了大數(shù)據(jù)與SQL數(shù)據(jù)庫(kù)水火不容的常見(jiàn)觀點(diǎn)。以下是對(duì)Widenius的采訪(fǎng)實(shí)錄,摘錄如下:
問(wèn):您能NoSQL和大數(shù)據(jù)的歷史嗎?為什么它們會(huì)成為人們熱議的話(huà)題?
答:所謂的“新NoSQL運(yùn)動(dòng)”的起源來(lái)自三年前Twitter一位員工的博客,此人在博客中稱(chēng)MySQL不夠好,他們需要更好的數(shù)據(jù)庫(kù)技術(shù),例如Cassandra。
其實(shí)Twitter當(dāng)時(shí)在MySQL上遇到麻煩是因?yàn)樗麄儧](méi)有正確使用。奇怪的是,Twitter給出的問(wèn)題解決方法在Cassandra和MySQL里都能輕松實(shí)現(xiàn)。
這篇文章的原文已經(jīng)找不到了,但可以參考這篇隨后的文章“MySQL將被Cassandra替代”。
目前的情況是這樣:
三年過(guò)去了,Twitter還在用MySQL存儲(chǔ)它最寶貴的資產(chǎn)——推文。Cassandra最終也沒(méi)能取代了MySQL。
NoSQL流行的原因是,與SQL相比,NoSQL非常容易上手,你不需要任何設(shè)計(jì)就能開(kāi)始使用它。但這也是有代價(jià)的,很快你就會(huì)發(fā)現(xiàn)對(duì)數(shù)據(jù)失去了控制(如果你不是足夠小心的話(huà))。
所以,大多數(shù)NoSQL解決方案的優(yōu)點(diǎn)(在MariaDB出現(xiàn)之前)是:
● 快速訪(fǎng)問(wèn)數(shù)據(jù)(只要你舍得把文件都丟進(jìn)內(nèi)存)
● 快速?gòu)?fù)制/多個(gè)節(jié)點(diǎn)的數(shù)據(jù)擴(kuò)展
● 彈性架構(gòu)(可以快速增加新的列)
問(wèn):大數(shù)據(jù)(技術(shù))能幫人們解決什么問(wèn)題?
更高性能和更靈活的架構(gòu)是推動(dòng)NoSQL發(fā)展的兩大動(dòng)力。
問(wèn):你個(gè)人怎么看待大數(shù)據(jù),有什么預(yù)測(cè)嗎?
我覺(jué)得大多數(shù)看好NoSQL的用戶(hù)都是跟風(fēng)者。大多數(shù)公司根本沒(méi)有像Facebook和Google那么大規(guī)模的數(shù)據(jù),而且他們其實(shí)也根本就支付不起優(yōu)化和持續(xù)開(kāi)發(fā)數(shù)據(jù)庫(kù)所需的專(zhuān)家人力成本。
SQL不會(huì)消亡。NoSQL無(wú)法取代它。因?yàn)閹缀跛腥硕夹枰P(guān)系型數(shù)據(jù)庫(kù)來(lái)管理數(shù)據(jù)。
眼下NoSQL也有其用武之地。我認(rèn)為未來(lái)將更多的是SQL和NoSQL的混合應(yīng)用。
問(wèn):為什么人們還在使用NoSQL?主要有哪些原因?
因?yàn)镹oSQL上手很容易。你甚至不需要學(xué)習(xí)SQL,使用前也不需要定義數(shù)據(jù)庫(kù)架構(gòu)。當(dāng)然也有一些人使用NoSQL是因?yàn)楸萐QL的擴(kuò)展性更好。
問(wèn):SQL在性能上能超過(guò)NoSQL嗎?SQL哪些方面由于NoSQL?
只要數(shù)據(jù)不能載入內(nèi)存,SQL通常性能都超過(guò)NoSQL。
同樣的,NoSQL相比SQL還存在很多不足之處,例如大多數(shù)NoSQL方案都是為單一鍵值訪(fǎng)問(wèn)(single key access)優(yōu)化的。對(duì)于更復(fù)雜的事情來(lái)說(shuō),你必須編寫(xiě)專(zhuān)門(mén)的程序,而且性能與SQL無(wú)法相比,尤其是那些需要自動(dòng)響應(yīng)用戶(hù)請(qǐng)求的服務(wù)(大多數(shù)網(wǎng)站提供的服務(wù))
在單機(jī)上的性能表現(xiàn),NoSQL通常都不是SQL的對(duì)手。在集群環(huán)境中,當(dāng)所有數(shù)據(jù)都載入內(nèi)存,NoSQL在鍵值查找的速度上通常會(huì)比SQL快。
原文鏈接:http://readwrite.com/2013/01/21/dont-write-off-relational-databases-for-big-data-just-yet