久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

NoSQL數(shù)據(jù)庫(kù)與分布式緩存對(duì)比:同工異曲

 青蛙一號(hào) 2012-04-16
【IT168 技術(shù)】對(duì)于文檔、對(duì)象圖,、鍵值對(duì)這樣的非關(guān)系型數(shù)據(jù)類(lèi)型,,NoSQL數(shù)據(jù)庫(kù)為它們提供了另一種可選的數(shù)據(jù)存儲(chǔ)方式。分布式緩存能被用作NoSQL數(shù)據(jù)庫(kù) 嗎?Ehcache的Greg Luck撰文描述了分布式緩存與NoSQL數(shù)據(jù)庫(kù)的相似性。InfoQ就此采訪了他,,討論了該方案的利弊之處,。

  InfoQ:你能否就分布式緩存解決方案與NoSQL數(shù)據(jù)庫(kù)做個(gè)對(duì)比?

  Greg Luck:分布式緩存通常會(huì)把數(shù)據(jù)放在內(nèi)存里,用于降低延時(shí),。NoSQL數(shù)據(jù)庫(kù)是沒(méi)有R的DBMS(即沒(méi)有關(guān)系的數(shù)據(jù)庫(kù)管理系統(tǒng)),,一般也缺乏對(duì)事務(wù)和其 他高級(jí)特性的支持。對(duì)于不支持關(guān)系的系統(tǒng),,表關(guān)系的關(guān)聯(lián)是SQL里最麻煩的部分,,這也正是NoSQL這個(gè)名字的起源。

  其中一種NoSQL數(shù)據(jù)庫(kù)是鍵值存儲(chǔ),。典型的例子包括Dynamo,、Oracle NoSQL Database和Redis。緩存也是鍵值存儲(chǔ),,因此說(shuō)這兩者是相關(guān)的,。很多緩存實(shí)現(xiàn)能被配置為可持久化的,之所以很多時(shí)候不那么做,,是因?yàn)榫彺媸且? 升性能而不是做持久化,。而NoSQL數(shù)據(jù)庫(kù)則與此相反,它是用來(lái)做持久化的,。

  持久化緩存也可當(dāng)作鍵值NoSQL數(shù)據(jù)庫(kù)來(lái)使用,。NoSQL也提到了Big Data,通常是指比能放進(jìn)一個(gè)單獨(dú)的RDBMS節(jié)點(diǎn)的量要大的數(shù)據(jù),,一般從幾TB到幾PB,。

  分布式緩存通常用于降低事務(wù)性數(shù)據(jù)的延時(shí),這些數(shù)據(jù)開(kāi)始時(shí)并不大,,但慢慢就會(huì)往Big Data這個(gè)方向發(fā)展,。由于緩存將數(shù)據(jù)保存在內(nèi)存里,這提高了存儲(chǔ)的成本,,而且需要限制數(shù)據(jù)的大小,。如果依賴(lài)于堆存儲(chǔ),每個(gè)服務(wù)器節(jié)點(diǎn)可能只有可憐的 2GB,。如果依賴(lài)于分布式緩存,,Ehcache還提供了堆外存儲(chǔ),每臺(tái)服務(wù)器可以存儲(chǔ)幾百GB數(shù)據(jù),,可以用作TB級(jí)別的緩存,。

  持久化、分布式的緩存可以適用于一些NoSQL的場(chǎng)景,。NoSQL數(shù)據(jù)庫(kù)也可以應(yīng)對(duì)一些緩存的場(chǎng)景,,只是延時(shí)稍高而已,。

  InfoQ:從架構(gòu)角度來(lái)看,分布式緩存和NoSQL數(shù)據(jù)庫(kù)有什么相似之處嗎?

  Greg:它們都想提供優(yōu)于RDBMS的TPS和可擴(kuò)展性,。為此,,它們都在功能上做了簡(jiǎn)化,拋開(kāi)了那些麻煩的問(wèn)題,,比如表關(guān)聯(lián),、存儲(chǔ)過(guò)程和ACID事務(wù)。

  雖然Java緩存領(lǐng)域里有JSR 107,,它為Spring和Java EE程序員提供了一套標(biāo)準(zhǔn)的緩存API,,但是比起標(biāo)準(zhǔn)化接口,它們都更傾向于使用私有接口,。

  它們都采用對(duì)客戶端透明的方式對(duì)數(shù)據(jù)進(jìn)行分區(qū),,做向外擴(kuò)展。非Java產(chǎn)品向上擴(kuò)展做得也很好,。擁有Terracotta BigMemory,,我們?cè)贘ava平臺(tái)上的向上擴(kuò)展方面也做得很特別。最后,,兩者都可以部署在常見(jiàn)的硬件和操作系統(tǒng)上,,這讓它們都能理想地運(yùn)行于云端,。

  InfoQ:架構(gòu)上這兩項(xiàng)技術(shù)又有何不同呢?

  Greg:NoSQL和RDBMS通常使用的是磁盤(pán),。磁盤(pán)是機(jī)械設(shè)備,延時(shí)很厲害,,因?yàn)閷さ罆r(shí)間是磁頭移動(dòng)到正確的磁道的時(shí)間,,讀寫(xiě)時(shí)間依賴(lài)于 磁盤(pán)的RPM。NoSQL嘗試優(yōu)化磁盤(pán)的使用,,例如,,僅僅在磁頭當(dāng)前位置追加日志,偶爾才刷新到磁盤(pán)上,。相反,,緩存主要都把數(shù)據(jù)放內(nèi)存里。

  NoSQL和RDBMS的客戶端很薄(想想Thrift或JDBC),,只是在網(wǎng)絡(luò)中傳輸數(shù)據(jù),,而像Ehcache這樣的緩存使用進(jìn)程內(nèi)存儲(chǔ)和遠(yuǎn) 程存儲(chǔ),因此常用請(qǐng)求在本地就能被成功處理,。在分布式緩存上下文中,,每個(gè)應(yīng)用程序服務(wù)器的進(jìn)程內(nèi)存儲(chǔ)中都會(huì)緩存熱點(diǎn)數(shù)據(jù),增加服務(wù)器數(shù)量并不會(huì)增加網(wǎng)絡(luò)或 后端的負(fù)載,。

  RDBMS專(zhuān)注于成為通用的SOR(System of Record),。NoSQ希望成為某類(lèi)特定數(shù)據(jù)類(lèi)型的SOR,,比如鍵值對(duì)、文檔,、稀疏表(寬表)或圖,。緩存著眼于性能,一般會(huì)與RDBMS或NoSQL數(shù) 據(jù)庫(kù)結(jié)合使用,,數(shù)據(jù)類(lèi)型就是SOR,。往往緩存中會(huì)存儲(chǔ)Web服務(wù)調(diào)用的結(jié)果,業(yè)務(wù)對(duì)象的計(jì)算結(jié)果,,這個(gè)結(jié)果可能需要成百SOR調(diào)用才能得到,。

  像Ehcache這樣的緩存部分運(yùn)行在應(yīng)用程序的操作系統(tǒng)進(jìn)程里,部分運(yùn)行在網(wǎng)絡(luò)那頭自己機(jī)器的進(jìn)程里,。但也不是全部分布式緩存都這樣:memcache就是一個(gè)例子,,所有的數(shù)據(jù)都跨網(wǎng)絡(luò)存儲(chǔ)。

  InfoQ:哪類(lèi)應(yīng)用程序最適合這種方式?

  Greg:這還得從先前的問(wèn)題說(shuō)起,,要將分布式緩存用于你現(xiàn)有的應(yīng)用程序,,通常只需要很小的工作量,而NoSQL則需要做很多事,,還有大的架構(gòu)變更,。

  因此適用分布式緩存的第一類(lèi)應(yīng)用程序是現(xiàn)有系統(tǒng),特別是有以下需要的:

  由于使用量或負(fù)載激增而需要向外擴(kuò)展

  為達(dá)到SLA而需要有更低的延時(shí)

  為了將大型機(jī)這樣的昂貴基礎(chǔ)設(shè)施的使用減到最低

  減少Web服務(wù)調(diào)用而帶來(lái)的費(fèi)用

  應(yīng)對(duì)極端負(fù)載高峰(比如黑色星期五一樣的促銷(xiāo))

  InfoQ:這種方式有什么局限么?

  Greg:緩存,,置于內(nèi)存之中,,在大小上有制約,它們的技術(shù)局限受限于有多少內(nèi)存給它們使用(下面還會(huì)具體展開(kāi)說(shuō)明),。

  緩存,,就算它提供持久化功能,也未必算的上作為SOR的上選,。緩存故意回避了備份到磁盤(pán)和從中還原的復(fù)雜功能,,盡管也有簡(jiǎn)單的。RDMBS在過(guò)去30年里開(kāi)發(fā)了豐富的備份,、還原,、遷移、報(bào)表和ETL特性,。而NoSQL則介于兩者之間,。

  緩存提供了改變數(shù)據(jù)與訪問(wèn)數(shù)據(jù)的編程API。NoSQL和RDBMS則提供了工具,,可以執(zhí)行腳本化語(yǔ)言(比如SQL,、UnSQL和Thrift)。

  但關(guān)鍵一點(diǎn)是要記住緩存并不想成為你的SOR,。它能輕松地與你的RDBMS和睦相處,,為此它并不需要RDBMS所有用的復(fù)雜功能,。

  InfoQ:以后分布式緩存解決方案、NoSQL數(shù)據(jù)庫(kù)和傳統(tǒng)RDBMS互相協(xié)同工作,,你有何看法?

  Greg:速度大幅快于RDBMS,,依賴(lài)于部署拓?fù)涞腘oSQL,還有數(shù)據(jù)訪問(wèn)模式,,分布式緩存可以位于這三者之間的任意位置,。那些需要更低延時(shí)的人可以將緩存作為NoSQL的一個(gè)補(bǔ)充,就像現(xiàn)在對(duì)待RDBMS那樣,。

  稍有不同的是,,在你想將RDBMS擴(kuò)展到多個(gè)節(jié)點(diǎn)時(shí),經(jīng)常會(huì)難于擴(kuò)展,,或者影響編程契約,,或者受制于CAP做出權(quán)衡;而使用NoSQL,就算只 使用一個(gè)節(jié)點(diǎn),,你也可以簡(jiǎn)單地將其視為多節(jié)點(diǎn)安裝,。如果是向上擴(kuò)展就沒(méi)有這些問(wèn)題。在RDBMS中,,添加緩存是為了避免向外擴(kuò)展會(huì)遇到的麻煩,。通常緩存能 解決系統(tǒng)的容量問(wèn)題,你不用費(fèi)太多力氣,。因此當(dāng)需要向外擴(kuò)展時(shí),,加入緩存吧。

  對(duì)于NoSQL而言,,內(nèi)建了向外擴(kuò)展的能力,,在需要低延時(shí)的時(shí)候使用緩存吧。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多