中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

分布式緩存能否作為NoSQL數(shù)據(jù)庫?

2019-02-26    來源:多智時(shí)代

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

(作者

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

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

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

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

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

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

它們都想提供優(yōu)于RDBMS的TPS和可擴(kuò)展性。為此,它們都在功能上做了簡化,拋開了那些麻煩的問題,比如表關(guān)聯(lián)、存儲(chǔ)過程和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,我們在Java平臺(tái)上的向上擴(kuò)展方面也做得很特別。最后,兩者都可以部署在常見的硬件和操作系統(tǒng)上,這讓它們都能理想地運(yùn)行于云端。

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

NoSQL和RDBMS的客戶端很。ㄏ胂隩hrift或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專注于成為通用的SOR(System of Record)。NoSQ希望成為某類特定數(shù)據(jù)類型的SOR,比如鍵值對(duì)、文檔、稀疏表(寬表)或圖。緩存著眼于性能,一般會(huì)與RDBMS或NoSQL數(shù)據(jù)庫結(jié)合使用,數(shù)據(jù)類型就是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ǔ)。

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

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

  • 由于使用量或負(fù)載激增而需要向外擴(kuò)展
  • 為達(dá)到SLA而需要有更低的延時(shí)
  • 為了將大型機(jī)這樣的昂貴基礎(chǔ)設(shè)施的使用減到最低
  • 減少Web服務(wù)調(diào)用而帶來的費(fèi)用
  • 應(yīng)對(duì)極端負(fù)載高峰(比如黑色星期五一樣的促銷)

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

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

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

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

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

稍有不同的是,在你想將RDBMS擴(kuò)展到多個(gè)節(jié)點(diǎn)時(shí),經(jīng)常會(huì)難于擴(kuò)展,或者影響編程契約,或者受制于

在不久的將來,云計(jì)算一定會(huì)徹底走入我們的生活,有興趣入行未來前沿產(chǎn)業(yè)的朋友,可以收藏云計(jì)算,及時(shí)獲取人工智能、大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的前沿資訊和基礎(chǔ)知識(shí),讓我們一起攜手,引領(lǐng)人工智能的未來!

標(biāo)簽: 大數(shù)據(jù) 服務(wù)器 腳本 數(shù)據(jù)庫 網(wǎng)絡(luò) 云計(jì)算

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:基于Docker開發(fā)的PaaS平臺(tái) DINP

下一篇:蘋果iCloud服務(wù)用戶現(xiàn)已達(dá)到1.25億人