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