數(shù)據(jù)即服務(DaaS):云的數(shù)據(jù)結構
原創(chuàng)【51CTO.com 5月25日外電頭條】數(shù)據(jù)存儲和檢索從未如此處于令人興奮的新技術最前緣,并且它是一個早已應該來臨的重大更新。讓我們細想一下,在過去二十年里,文件系統(tǒng)或關系數(shù)據(jù)庫真正改變了多少?
Web 2.0:在新技術里,這是一個被過度使用、被過度宣傳并且被賦予過多意義的詞匯。現(xiàn)在人們在每個場合都會談到它。過去,Web 2.0 曾被視為年輕的PHP高手玩弄的寶貝玩意兒,現(xiàn)在,從這一概念里已經孵化出各種各樣的應用程序。這些大規(guī)模分布、社會化傳播的系統(tǒng),為數(shù)據(jù)存儲系統(tǒng)的容量帶來了前所未有的壓力。在51CTO.com對Twitter工程師的專訪中,解決數(shù)據(jù)庫方面的壓力也成為Twitter技術團隊的主要工作。
AJAX 和其他類似的富客戶端技術的出現(xiàn),讓人們期待看到更為敏捷漂亮的用戶界面,這對數(shù)據(jù)訪問和低延遲提出更高的要求。此外,隨著富媒體(視頻、高清圖片)的迅速增加,數(shù)據(jù)容量出現(xiàn)爆炸式增長,并且這一趨勢也將繼續(xù)下去。最終,過去只有在高度專業(yè)化的系統(tǒng)中(比如電信和某些軍用系統(tǒng))才會出現(xiàn)的數(shù)據(jù)可用性需求,隨著豐富的移動設備和互相連接平臺(比如智能電話、上網本和平板電腦)的增加,現(xiàn)在已普及到更為廣泛的應用類型中。
令人關注的地方在于,這種類型的互動已經不再局限于社交網站上用戶交流,比如在 Facebook 上跟蹤好朋友的漂亮女友。這種充滿粘性并具有病毒式傳播效果的互動正在慢慢入侵主流應用,因為它能夠讓用戶參與進來,給他們一種“我的地盤我做主”的感覺。SalesForce 公司提供的 Chatter 云協(xié)作工具就是一個很好的示例。或者也可以以下事實為例,在很多企業(yè)的局域網里已經具備了這種社交化的功能,比如共享書簽或分享“心情”。甚至提供金融的公司也開始利用豐富的視覺化機制對基金進行比較,然后還可以將個人的觀點與“好友”分享。對于新聞和媒體網站,除了新聞本身,這些網站還可以從用戶評論和交流中收集更多有趣的信息。
回到技術。這給我們帶來了什么?大容量,應用方面的高要求,低延遲訪問的需求,數(shù)據(jù)存儲系統(tǒng)不間斷的高可用性,那些困擾著傳統(tǒng)關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的所有因素。于是,這個世界開始求助于一項名為“內存數(shù)據(jù)網格”的技術。
內存數(shù)據(jù)網格(In-memory Data Grid)
內存數(shù)據(jù)網格并不是新技術,已經出現(xiàn)一段時間了。隨著應用程序不斷成長,需要適應快速增加的數(shù)據(jù)以及滿足增加更為快速的預期和要求,內存數(shù)據(jù)網格被用于大型或任務重大的應用程序中,以此緩解 RDBMS 系統(tǒng)的工作量。你可以會將數(shù)據(jù)網格的這種應用成為分布式緩存(distributed cache)——逐漸過時的 RDBMS 系統(tǒng)中附帶的一個pacemaker工具。51CTO.com曾在《2010年數(shù)據(jù)庫市場展望》一文中重點強調過內存數(shù)據(jù)庫應用將在今年廣泛流行。
但是,即使使用這種技術仍然不足以解決問題,因為RDBMS 仍會成為的最大的障礙,尤其在具備真正靈活性的云式部署中,在這種部署中,為了能夠在任一時刻能夠最高效地處理荷載,將按需增加或減少虛擬接節(jié)點(virtual node)。正是在這里,NoSQL 出現(xiàn)了。
NoSQL 的世界
目前,NoSQL 這一用語與它所宣傳的數(shù)據(jù)組織方式一樣,都是未明確定義和非結構化的。NoSQL 背后的整體理念是非結構化的、靈活性的數(shù)據(jù)。高可用性、高擴展性,還有最重要的:分布式的。正如 Eric Breawer 的 CAP 原理中所述,在大多數(shù) NoSQL 系統(tǒng)中,為了獲得如此高的可用性,一致性被弱化,這樣做的結果是所謂的“最終一致性”(Eventual Consistency)。在過去幾年里,也許你已經聽說一些比較知名的相關實施,比如Google 的BigTable 和Apache Hadoop。確切來講,這些實現(xiàn)提高了實際擴展性的門檻并制定了NoSQL標準。但是,當前NoSQL 項目的增加所有帶來的超級前緣的解決方案正慢慢地讓開發(fā)者變得無憂無慮。
但是這些解決方案已經足夠了嗎?在很多情況下,NoSQL 是非常有用的,但大多數(shù)基于磁盤的 NoSQL 系統(tǒng)關注的焦點是大容量和處理量而不是低延遲的快速訪問。NoSQL 數(shù)據(jù)和內存數(shù)據(jù)網格的交叉地帶還存在一個“子物種”,這個方案能夠快速、地延遲低訪問內存數(shù)據(jù)。這類系統(tǒng)包括 Amazon 的Dynamo和開源項目 Voldemort 和Infinispan。
數(shù)據(jù)云:DaaS
現(xiàn)在我們來看看另一個被過度宣傳并被賦予過多意義的詞匯:云計算。無論是公共還是私人應用,在可擴展、易用性和高度硬件利用率的特種領域,云計算一直很受歡迎。這些特殊要求已經由架構(IaaS)和平臺(PaaS)服務實現(xiàn)。這種方式也可應用于數(shù)據(jù)存儲。設想以獨立于平臺方式連接到一個服務,用于存儲和檢索數(shù)據(jù),與傳統(tǒng)的 RDBMS 連接沒有太多不同。不過,現(xiàn)在你無需了解或擔心存儲數(shù)據(jù)所用的系統(tǒng)類型,而且獲得低延遲、高擴性和高可用性的保證。對于任何云部署,為了同時獲得靈活的、按需定制的架構和中間件,這種存儲系統(tǒng)的虛擬化都是必須的。另外,具備靈活性、低延遲、分布性等理想特征的技術也能夠為這種虛擬化提供幫助。通常這會設計到多種 NoSQL 解決方案。即使只用于內部的私人云應用,這樣的解決方案將需要具備多租戶(multi-tenancy)、計量(metering)和狀態(tài)監(jiān)控等功能。為了能夠將數(shù)據(jù)從不同的應用中隔離開來,多租戶是必需的,也許還會用某些形式的名空間(namespacing)。計量對于正確地分攤運行該服務的共用成本是至關重要的。為了實現(xiàn)計量需要記錄占用的 CPU 周期、消耗的磁盤和內存空間,甚至還會包括寬帶的占用量。
Amazon 公司提供了一個這樣的服務,稱為 SimpleDB。Google 的 AppEngine 提供訪問 BigTable 的 DataStore API 接口。但是,除了這兩款產品,當前這一市場還是一片空白。出露頭家的云服務提供商(或者未云服務提供商提供軟件的銷售商)應該認真對待這種數(shù)據(jù)服務,確保它成為其產品的一部分。
對于應用程序開發(fā)者,這意味著什么?
所幸的是,大多數(shù)人不再像過于那樣多地域數(shù)據(jù)庫進行互動。ORM 工具,如 Hibernate(一種 JPA 標準的實現(xiàn))已經在 RDBMS 上添加了一個抽象層。我期待使用這類 ORM 工具的插件能夠讓 RDBMS 更為容易地轉換為靈活性的云存儲服務。其中一個是剛剛推出的 SimpleJPA 項目,它提供構建在 Amazon SimpleDB 之上的 JPA 功能;另一個是 Infinispa 即將推出的 JPA 接口。雖然更多作為 DaaS 的插件將出現(xiàn),但我不認為這些工具是萬能靈藥,能夠現(xiàn)實真正的透明遷移。我認為開發(fā)者仍然需要對應用程序數(shù)據(jù)進行長期認證地思考,理解存儲方式的內在原因。在我們設計的數(shù)據(jù)模型中,某些 RDBMS 特有的假設總是時隱時現(xiàn),這是因為 RDBMS 技術已經根深蒂固地融入了我們有關數(shù)據(jù)的思維之中。當我們轉而思考非 RDBMS 存儲時,這些東西常常稱為阻礙或者減低效率。
【編輯推薦】
- 云計算使關系數(shù)據(jù)庫逐漸落伍
- 探尋關系數(shù)據(jù)庫和ORM的最佳替代者
- MongoDB,無模式文檔型數(shù)據(jù)庫簡介
- 專訪豆瓣網首席架構師洪強寧:BeansDB與NoSQL的應用與發(fā)展
原文:Data-as-a-Service: The data fabric for clouds
作者:Manik Surtani