分散式緩存能否作為NoSQL資料庫?

來源:互聯網
上載者:User
關鍵字 緩存 提供 它們 緩存 提供 它們

(作者 Srini Penchikala 譯者 丁雪豐)

對於文檔、物件圖、鍵值對這樣的非關聯式資料類型,NoSQL資料庫為它們提供了另一種可選的資料存儲方式。 分散式緩存能被用作NoSQL資料庫嗎? Ehcache的Greg Luck撰文描述了分散式緩存與NoSQL資料庫的相似性。 InfoQ就此採訪了他,討論了該方案的利弊之處。

InfoQ:你能否就分散式緩存解決方案與NoSQL資料庫做個對比?

Greg Luck:分散式緩存通常會把資料放在記憶體裡,用於降低延時。 NoSQL資料庫是沒有R的DBMS(即沒有關系的資料庫管理系統),一般也缺乏對事務和其他高級特性的支援。 對於不支援關係的系統,表關係的關聯是SQL裡最麻煩的部分,這也正是NoSQL這個名字的起源。

其中一種NoSQL資料庫是鍵值存儲。 典型的例子包括Dynamo、Oracle NoSQL Database和Redis。 緩存也是鍵值存儲,因此說這兩者是相關的。 很多緩存實現能被配置為可持久化的,之所以很多時候不那麼做,是因為緩存是要提升性能而不是做持久化。 而NoSQL資料庫則與此相反,它是用來做持久化的。

持久化緩存也可當作鍵值NoSQL資料庫來使用。 NoSQL也提到了Big Data,通常是指比能放進一個單獨的RDBMS節點的量要大的資料,一般從幾TB到幾PB。

分散式緩存通常用於降低事務性資料的延時,這些資料開始時並不大,但慢慢就會往Big Data這個方向發展。 由於緩存將資料保存在記憶體裡,這提高了存儲的成本,而且需要限制資料的大小。 如果依賴于堆存儲,每個伺服器節點可能只有可憐的2GB。 如果依賴于分散式緩存,Ehcache還提供了堆外存儲,每台伺服器可以存儲幾百GB資料,可以用作TB級別的緩存。

持久化、分散式的緩存可以適用于一些NoSQL的場景。 NoSQL資料庫也可以應對一些緩存的場景,只是延時稍高而已。

InfoQ:從架構角度來看,分散式緩存和NoSQL資料庫有什麼相似之處嗎?

Greg:它們都想提供優於RDBMS的TPS和可擴充性。 為此,它們都在功能上做了簡化,拋開了那些麻煩的問題,比如表關聯、預存程序和ACID事務。

雖然JAVA緩存領域裡有JSR 107,它為Spring和JAVA EE程式師提供了一套標準的緩存API,但是比起標準化介面,它們都更傾向于使用私有介面。

它們都採用對用戶端透明的方式對資料進行分區,做向外擴展。 非JAVA產品向上擴展做得也很好。 擁有Terracotta BigMemory,我們在JAVA平臺上的向上擴展方面也做得很特別。 最後,兩者都可以部署在常見的硬體和作業系統上,這讓它們都能理想地運行于雲端。

InfoQ:架構上這兩項技術又有何不同呢?

Greg:NoSQL和RDBMS通常使用的是磁片。 磁片是機械設備,延時很厲害,因為搜尋時間是磁頭移動到正確的磁軌的時間,讀寫時間依賴于磁片的RPM。 NoSQL嘗試優化磁片的使用,例如,僅僅在磁頭當前位置追加日誌,偶爾才刷新到磁片上。 相反,緩存主要都把資料放記憶體裡。

NoSQL和RDBMS的用戶端很薄(想想Thrift或JDBC),只是在網路中傳輸資料,而像Ehcache這樣的緩存使用進程記憶體儲和遠端存放,因此常用請求在本地就能被成功處理。 在分散式緩存上下文中,每個應用程式伺服器的進程記憶體儲中都會緩存熱點資料,增加伺服器數量並不會增加網路或後端的負載。

RDBMS專注于成為通用的SOR(System of Record)。 NoSQ希望成為某類特定資料類型的SOR,比如鍵值對、文檔、稀疏表(寬表)或圖。 緩存著眼于性能,一般會與RDBMS或NoSQL資料庫結合使用,資料類型就是SOR。 往往緩存中會存儲Web服務調用的結果,業務物件的計算結果,這個結果可能需要成百SOR調用才能得到。

像Ehcache這樣的緩存部分運行在應用程式的作業系統進程裡,部分運行在網路那頭自己機器的進程裡。 但也不是全部分散式緩存都這樣:memcache就是一個例子,所有的資料都跨網路存儲。

InfoQ:哪類應用程式最適合這種方式?

Greg:這還得從先前的問題說起,要將分散式緩存用於你現有的應用程式,通常只需要很小的工作量,而NoSQL則需要做很多事,還有大的架構變更。

因此適用分散式緩存的第一類應用程式是現有系統,特別是有以下需要的:

由於使用量或負載激增而需要向外擴展 為達到SLA而需要有更低的延時 為了將大型機這樣的昂貴基礎設施的使用減到最低 減少Web服務調用而帶來的費用 應對極端負載高峰(比如黑色星期五一樣的促銷)

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

Greg:緩存,置於記憶體之中,在大小上有制約,它們的技術局限受限於有多少記憶體給它們使用(下面還會具體展開說明)。

緩存,就算它提供持久化功能,也未必算的上作為SOR的上選。 緩存故意回避了備份到磁片和從中還原的複雜功能,儘管也有簡單的。 RDMBS在過去30年裡開發了豐富的備份、還原、遷移、報表和ETL特性。 而NoSQL則介於兩者之間。

緩存提供了改變數據與訪問資料的程式設計API。 NoSQL和RDBMS則提供了工具,可以執行腳本化語言(比如SQL、UnSQL和Thrift)。

但關鍵一點是要記住緩存並不想成為你的SOR。 它能輕鬆地與你的RDBMS和睦相處,為此它並不需要RDBMS所有用的複雜功能。

InfoQ:以後分散式緩存解決方案、NoSQL資料庫和傳統RDBMS互相協同工作,你有何看法?

Greg:速度大幅快于RDBMS,依賴于部署拓撲的NoSQL,還有資料訪問模式,分散式緩存可以位於這三者之間的任意位置。 那些需要更低延時的人可以將緩存作為NoSQL的一個補充,就像現在對待RDBMS那樣。

稍有不同的是,在你想將RDBMS擴展到多個節點時,經常會難於擴展,或者影響程式設計契約,或者受制于

(責任編輯:蒙遺善)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.