Digg與Reddit棄用MySQL 投奔NoSQL陣營(yíng)
現(xiàn)在看來(lái)NoSQL陣營(yíng)的壯大,是不可避免的事實(shí)。51CTO之前也曾報(bào)道過(guò)《云計(jì)算時(shí)代NoSQL當(dāng)?shù)?關(guān)系數(shù)據(jù)庫(kù)日薄西山》。不過(guò)關(guān)系數(shù)據(jù)庫(kù)究竟什么時(shí)候退出,還是一個(gè)未知數(shù)。
Digg和Reddit在這個(gè)月都宣布了將轉(zhuǎn)向Cassandra ,因?yàn)镸ySQL對(duì)他們來(lái)說(shuō)伸縮性不夠了。一些人認(rèn)為MySQL+memchche不再是事實(shí)上的伸縮解決方案了。
Digg在去年九月宣布了他們轉(zhuǎn)向Cassandra的計(jì)劃,而這一過(guò)程在這個(gè)月完成了。仔細(xì)比對(duì)了其它項(xiàng)目——HBase,Hypertable,Tokyo Cabinet/Tyrant,Voldemort,以及Dynomite——,他們最終選擇了Cassandra,出于以下的考慮:
每個(gè)系統(tǒng)都有它自己的強(qiáng)項(xiàng)和弱項(xiàng),但是Cassandra綜合了各個(gè)方面。它提供了面向列的數(shù)據(jù)存儲(chǔ),因此這相比純粹的key/value存儲(chǔ)又更結(jié)構(gòu)化一些。它通過(guò)分布式高可用的點(diǎn)對(duì)點(diǎn)集群來(lái)運(yùn)作。盡管目前它的核心功能還有一些欠缺,但相較于其它方案而言,它更接近我們想要的。
Digg幾乎重建了整個(gè)基礎(chǔ)設(shè)施,跳出了LAMP棧。主要的起因是MySQL,如同任何其它的SQL數(shù)據(jù)庫(kù)一樣,它是為讀取而作的優(yōu)化,而不能很好的處理寫(xiě)入:
我們不再使用用MySQL的主要?jiǎng)訖C(jī),是因?yàn)橐谝粋€(gè)快速增長(zhǎng)看不到頭的數(shù)據(jù)集上,構(gòu)建一個(gè)高性能密集寫(xiě)入的應(yīng)用越來(lái)越困難了。這種增長(zhǎng)迫使我們使用水平和垂直的分區(qū)策略,這就消除了關(guān)系型數(shù)據(jù)所帶來(lái)的大部分價(jià)值了,同時(shí)仍然會(huì)產(chǎn)生各種開(kāi)銷(xiāo)...
隨著我們系統(tǒng)的擴(kuò)張,跨越多個(gè)數(shù)據(jù)中心的冗余,網(wǎng)絡(luò)性能,以及增加容量和無(wú)宕機(jī)時(shí)間的更換失效節(jié)點(diǎn)對(duì)我們來(lái)說(shuō)就尤為重要。我們計(jì)劃繼續(xù)使用廉價(jià)硬件,并假設(shè)失效是平常的。這些都為MySQL增加了難度。
另一個(gè)網(wǎng)站,Reddit,曾經(jīng)出現(xiàn)過(guò)memcacheDB相關(guān)的問(wèn)題,一開(kāi)始他們通過(guò)增加更多的RAM來(lái)處理,但他們需要一個(gè)長(zhǎng)久的解決方案是再明顯不過(guò)的。他們?cè)谑熘畠?nèi)完成了向Cassandra的轉(zhuǎn)換,在Cassandra開(kāi)發(fā)者和社區(qū)的幫助以及EC2在測(cè)試和部署Cassandra的實(shí)例方面的支持下,只用了一名開(kāi)發(fā)者就做到了。
因?yàn)樵S多重要的網(wǎng)站,比如Facebook或Twitter,都已經(jīng)在使用或者計(jì)劃遷移到Cassandra,一些人聲稱(chēng)MySQL+memcached作為事實(shí)的伸縮性解決方案的時(shí)代結(jié)束了。Todd Hoff并不認(rèn)為MySQL將會(huì)在即將來(lái)到的某個(gè)時(shí)間消失,但它不會(huì)再代表首位的解決方案:
從一個(gè)小的角度來(lái)看,很清楚MySQL+memcached的時(shí)代已經(jīng)過(guò)去了。它會(huì)堅(jiān)持一段時(shí)間。舊的技術(shù)很少完全的消失。一些人仍在騎馬。一些人還在使用CD。而因特網(wǎng)也不會(huì)完全取代電視這種古老的電磁廣播技術(shù),但大多數(shù)將會(huì)奔向一個(gè)新的時(shí)代...
我們很清楚MySQL+memcached背后的許多思想都是說(shuō)到了點(diǎn)子上的,這些都在新的系統(tǒng)里得到了保留,只是它的實(shí)現(xiàn)顯得有點(diǎn)笨重。開(kāi)發(fā)者參與進(jìn)來(lái),鋪平了缺口,磨掉了棱角,創(chuàng)建了一個(gè)新的強(qiáng)健的平臺(tái),其本身成為了新生態(tài)系統(tǒng)和新時(shí)代的根基。
對(duì)于Hoff所說(shuō)的"很清楚MySQL+memcached的時(shí)代已經(jīng)過(guò)去了",Mark Atwood表示不同的意見(jiàn),他認(rèn)為memcached仍將會(huì)長(zhǎng)期得到應(yīng)用:
memcached作為實(shí)現(xiàn)伸縮速度的前沿技術(shù)這一時(shí)代或許"過(guò)去"了,但這并不是因?yàn)閙emcached失敗,而是因?yàn)榱硗獾募夹g(shù)(并不是替代,而是補(bǔ)充)正在涌現(xiàn)...
但這不會(huì)是memcached的終結(jié)??梢哉f(shuō),這一高性能的key-value存儲(chǔ)仍將是一個(gè)有用的構(gòu)建模塊,不管是對(duì)于其自身,還是作為其它的技術(shù)組件的子組件。
我肯定memcache將會(huì)繼續(xù)演化。將會(huì)有更多的實(shí)現(xiàn),更多的局限將會(huì)被移除,將會(huì)有更多的管理工具,還有更多的系統(tǒng)加上memcached的網(wǎng)絡(luò)協(xié)議,而一些ORMs框架在構(gòu)建時(shí)就會(huì)假設(shè)memcached可用,將會(huì)有協(xié)議方面的特性以及在共享托管和云環(huán)境方面的實(shí)現(xiàn)。
Hoff后來(lái)在他文章的評(píng)論中又說(shuō)到:"我并不是想說(shuō)緩存將會(huì)消失或者M(jìn)ySQL將會(huì)消失。我堅(jiān)定的相信內(nèi)存將是新的硬盤(pán)這一概念...所過(guò)去了的是MySQL與memcached,相輔相成的,作為開(kāi)發(fā)可伸縮系統(tǒng)的默認(rèn)平臺(tái)。"
盡管MySQL與memcache仍將會(huì)是伸縮性問(wèn)題的良好解決方案,但已經(jīng)有新的non-SQL方案產(chǎn)生了,而它們看起來(lái)能為超大規(guī)模的系統(tǒng)帶來(lái)更好的結(jié)果。
相關(guān)閱讀
NoSQL,意即反SQL運(yùn)動(dòng),是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于目前鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。
現(xiàn)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲(chǔ)方面要求具備龐大的水平擴(kuò)展性,而NoSQL致力于改變這一現(xiàn)狀。目前Google的 BigTable 和Amazon 的Dynamo使用的就是NoSQL型數(shù)據(jù)庫(kù)。
NoSQL項(xiàng)目的名字上看不出什么相同之處,但是,它們通常在某些方面相同:它們可以處理超大量的數(shù)據(jù)。
這場(chǎng)革命目前仍然需要等待。的確,NoSQL對(duì)大型企業(yè)來(lái)說(shuō)還不是主流,但是,一兩年之后很可能就會(huì)變個(gè)樣子。在NoSQL運(yùn)動(dòng)的最新一次聚會(huì)中,來(lái)自世界各地的150人擠滿(mǎn)了CBS Interactive的一間會(huì)議室。分享他們?nèi)绾瓮品徛嘿F的關(guān)系數(shù)據(jù)庫(kù)的暴政,怎樣使用更有效和更便宜的方法來(lái)管理數(shù)據(jù)。
“關(guān)系型數(shù)據(jù)庫(kù)給你強(qiáng)加了太多東西。它們要你強(qiáng)行修改對(duì)象數(shù)據(jù),以滿(mǎn)足RDBMS (relational database management system,關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng))的需要,”在NoSQL擁護(hù)者們看來(lái),基于NoSQL的替代方案“只是給你所需要的”。
原文標(biāo)題:Digg and Reddit Have Joined the NoSQL Camp
【更多關(guān)于數(shù)據(jù)庫(kù)發(fā)展的趨勢(shì)性報(bào)道】