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























