Skip to main content

雲中的資料庫 天堂還是地獄?

九月 11, 2009 作者: ERP站長

雲中的資料庫---天堂還是地獄?
作者:IT168 黃永兵 編譯 2009-08-31

文本Tag: 雲端運算 資料庫

  【IT168 評論】最近影響我們開發和部署服務以及應用最前沿的技術要數雲端運算了,資料庫技術也發展得很快,也出現了一些新的計算模型,因此如何正確選擇資料庫技術以滿足新的需求也成為了大家討論的話題。

  雲是一種彈性計算和資料存儲引擎、虛擬的網路伺服器、 存放裝置和其它電腦資源,它的主要意義在於按需計算、效用計算、分時計算、高性能網路和網格計算。分時計算早在40年前就出現了,當時是按需計算和按使 用的存儲和應用進行付費。最近由Ian Foster和Carl Kesselman提出的網格計算使得通過服務模型建立大型電腦成為可能。與分時計算和網格計算類似,雲端運算往往需要持續的存儲空間,開源專案和商業公 司都已經提出了自己的資料存儲和資料庫方案。

  公共雲
  可以託管應用和資料庫的商業公司提供的軟體即服務(SaaS)、平臺即服務(PaaS)、基礎架構即服務(IaaS)和資料庫即服務(DaaS)。基礎架構提供商包括亞馬遜的彈性計算雲EC2、 GoGrid、Rackspace Mosso和Joyent,而微軟的Azure、Google AppEngine、Force.com、Zoho和Facebook則是平臺提供商,也有一些針對特定用戶的雲服務提供者,如惠普的雲列印服務,IBM 的LotusLive為企業提供的協作和社交網路服務。其它SaaS提供商如Birst和SAS提供按需商務智慧服務,Salesforce.com和 Zoho提供客戶關係管理(CRM),Epicor、 NetSuite、SAP Business ByDesign和Workday提供企業資源規劃(ERP)套件,DaaS提供商包括EnterpriseDB、FathomDB、 Longjump和TrackVia。

  私有雲
  和伺服器整合,集群和虛擬化類似,私有雲是資料中心和網格技術的另一個進化結果,Gartner研究報告稱政府將會擁有最大的私有雲,但那些有成千上萬的伺服器以及大型存儲需求的任何一個組織都可能建立起自己的私有雲。安全性和可靠性是有能力建設私有雲的大型企業考慮得最多的事情。公共雲端運算提供不了99.99%的正常執行時間,但這卻是企業資料中心管理人員最希望在服務協定中看到的條款。而位於防火牆後面的私有雲降低了在雲中暴露資料的風險,也降低了在多租賃雲環境中資料保護的擔心,私有雲相對公共雲的一個問題是調用雲服務時需要多個API,急需標準出臺,假設亞馬遜的API成為事實上的一種標準,那麼它開發的私有雲軟體將與亞馬遜的EC2 API保持良好的相容性。

  在評估雲中的資料庫解決方案時,需要考慮多個方面的內容:
  1、 首先需要考慮應用程式服務的類型:
  商業智慧(BI),電子商務交易,知識庫,協作等。
  2、 其次,你必須確定是適合採用公共雲還是適合採用私有雲。
  3、 第三必須考慮是否易於開發。
  當然,預算不能忽視。
  什麼系統將會運行在雲上?

  有些組織利用雲提供商作為其關鍵應用或資料庫的備份,而不是將雲作為主要的選擇,oracle用戶可以使用亞馬遜的簡化存儲系統(S3)為oracle資料庫備份,雲端運算可以作為一個災難恢復選擇。

  紐約時報創建了時間機器項目,它是一個網上查閱數位檔案的系統,它是一個雲端運算項目很好的例子,除了提供按需計算外,它的主要目標是託管長期運行的應用,特別是資料庫應用。

   雲用戶往往希望以一種伸縮性好,按需提供服務的架構部署應用和資料庫,使用雲服務的常見使用者是創業型公司和以專案為生的用戶,他們希望在基礎設施方面減 少投資。但亞馬遜的公共雲也被用於支援電子商務網站,如NetFlix.com,eHarmony.com和Target.com。電子郵件是一個現代化 企業的骨幹,如波士頓凱爾特人隊就將電子郵件和協作應用放到雲上了。企業也可以選擇使用雲託管ERP或CRM套件,如開源的ERP套件 (Compiere,Openbravo,SugarCRM)和BI解決方案(Jasper,Pentaho),由於資料倉庫使用來自業務系統的來源資料, 因此組織也可能使用雲託管業務資料庫。

  在現收現付的基礎上,雲按需處理配置,主機、IP位址和磁碟陣列不是永久地分配,但公共雲上的資料庫可以被永久地存儲,這樣可以避免在發生火災時批量載入資料庫,但在多租賃存儲情況時,資料庫的安全就需要著重考慮了。

  雲特別適合處理大型資料集和計算密集型應用,這些都受益於並行處理,如提供視頻和 資料分析。亞馬遜EC2的早期用戶,包括生物醫學研究機構,醫藥,生物工程和金融機構,他們早期採用的是網格計算,如金融建模,藥物發現和其它研究,醫學 研究往往需要大量的類比遺傳測序和分子間的相互作用,之前已經使用網格技術搭建起來了,常用的程式是基礎本地對準搜索工具(BLAST),最近也開始使用 雲了,研究人員還使用MapReduce軟體在雲中進行基因分析。Eli Lilly使用亞馬遜EC2處理生物資訊學序列資訊。

  雲端運算也可由於其它目的,如將SaaS和企業系統進行集成。商務智慧(BI)活動,如分析,資料倉庫和資料採擷,要求的支出要中小企業望而卻步。雲端運算提供了一個吸引力,因為商務智慧可以按需使用,按使用情況進行收費了。

  雲端運算和商務智慧結合有多種手段,一種選擇是將資料和應用託管到SaaS提供商,另一種選擇是創建一個雲端運算基礎設施環境,第三種辦法是兩者都做,使用資料複製或資料集成套件。
PaaS,公共雲和私有雲

  平臺即服務(PaaS)解決方案將開發工具和資料存儲打包到一起,但用戶可以選擇一個基礎設施提供商或是建立自己的私有雲使資料存儲或資料庫滿足應用和預算的需要,有開源和商業化的產品可以選擇,從簡單的可擴展資料存儲,到功能強大的處理複雜查詢和交易的平臺。

  雲端運算中的資料庫,資料存儲和資料訪問軟體必須是經過評估及適合於公共雲,又適合於私有雲,同時提供一流應用支援的產品。例如,亞馬遜的Dynamo用於構建一個值得信賴的環境,沒有身份驗證和授權要求,環境是否支援多租戶或多實例應用程式也會影響資料庫的決定。

  資料庫和資料存儲
  雲中的資料庫選擇包括單一格式資料存儲,文檔資料庫,列資料存儲,語義資料存儲,聯合資料庫和物件關聯式資料庫,後者包括IBM瑞士軍刀伺服器,微軟,OpenLink和oracle,它們處理SQL表,XML文檔,RDF和用戶定義的類型。

  構建一個PB大小的搜尋引擎和處理命令或映射無線網路有很大不同,應用程式的需求和資料存儲任務有很大不同,對於託管到雲中的新應用程式,開發人員主要看幾個資料存儲類:

  1、 SQL/XML(物件關係)資料庫
  2、 列資料存儲
  3、 分散式散列表(DHT),簡單的鍵值存儲
  4、 元組空間變異,記憶體資料庫,實體屬性值存儲和其他非SQL資料庫具有的功能,如過濾、排序、範圍查詢和事務等。

  瞭解應用程式對伸縮性、負載均衡、一致性、資料完整性、事務支援和安全的需要非常重要,對於非常大的資料集可伸縮性是雲端運算必需具備的特性。

  關聯陣列、字典、雜湊表、環和元組空間已經出現了幾年,和實體屬性值存儲,資料庫分區和聯合資料庫一樣,但是雲端運算側重於可擴展性和負載均衡,跨多個伺服器分佈資料,

   元組空間是一個分散式記憶體共用解決方案,包括物件空間,JavaSpaces,GigaSpaces,LinuxTuples,IBM TSpaces和PyLinda。你可以在亞馬遜的EC2上找到GigaSpaces極限應用平臺,它包括一個本地和分散式Jini事務管理器,Java 事務API(JTA),JDBC支持,B叉樹和基於散列的索引功能,亞馬遜的SimpleDB也提供了標準的元組空間介面,但添加了二級索引,支援傳統的 查詢操作。

  對於大型資料集和資料庫,分區資料已經成為並行查詢處理和負載均衡的得力助手,水準分區已經受到建立TB級雲資料庫的開發商們的注意,因為在亞馬遜,Digg,易趣,Facebook,Flickr,Friendster,Skype和Youtube上都已經成功了。

   SQLAlchemy和Hibernate分片,Python和Java物件關係映射器提供的分片功能對雲資料庫設計很有用。Google開發的 Hibernate分片用於將資料推送給Hibernate專案之前進行分組,可以使用SQLAlchemy或Hibernate手動為Google AppEngine進行分片,也可以使用雲資料存儲,如MongoDB,它提供手動創建分片的管理命令。

  分散式雜湊表和key-value資料存儲
   分散式雜湊表和key-value存儲是構建可伸縮的,負載均衡的應用程式的工具,不強制執行資料完整性、一致性、和原子持久性檢查,它們有限地支援應 用做即席查詢和複雜分析處理。這樣的產品包括memcached, MemcacheDB, Project Voldemort, Scalaris, and Tokyo Cabinet。

  Memcached使用得非常普遍,廣泛用於資料庫驅動的 網站緩存解決方案,他是一個巨大的關聯陣列,使用GET或PUT功能訪問,用一個鍵值標識資料的唯一性。對於緩存查詢代價高的SQL語句返回的資訊特別有 用,如數量和總計。MemcacheDB是一個分散式key-value資料存儲,符合memcached協定,但使用了Berkeley資料庫進行資料 持久化存儲。

  Scalaris是一個分散式key-value存儲,它是用ErLang實現的,它為事務實現了無阻塞提交協定,使用 Web介面,你可以讀寫key-value值,每個操作都是一個原子事務。使用Java可以執行更複雜的事務。Scalaris具有很強的一致性,支持對 稱複製,但沒有持久性存儲。

  開源的Tokyo Cabinet資料庫key-value存儲目前在網上很多社區討論得火熱,它的速度快得驚人,使用雜湊表引擎存儲1百萬條記錄只需要0.7秒,使用B叉 樹引擎時也只需要1.6秒。資料模型是每個鍵都有一個值,它支持LZW壓縮,當鍵排好序後,可以進行首碼和範圍匹配,在處理事務時,它可以在寫入日誌和影 式分頁之前寫入。

  Tokyo Tyrant是 Tokyo Cabinet的一個資料庫伺服器版本,它主要用於高容量應用中緩存SQL資料庫。

  有些產品支援基於鍵範圍的查詢,但即席查詢操作和總計操作(求和,平均數和分組)需要程式設計實現,因為沒有內置這些功能。
Hadoop MapReduce

  應該為Hadoop MapReduce在超大型資料集並行處理方面做出的貢獻頒發一個奧斯卡獎,它由來自Google,雅虎,微軟和Facebook的開發人員在社區開發模 式下完成的,開源的Hadoop可以從Apache網站下載,商業化版本可以從CloudEra獲得,亞馬遜也提供了一個基於Hadoop的 Elastic MapReduce服務。

  MapReduce運行在Hadoop分散式檔案系統(HDFS)上,分片檔和資料都以key-value方式存儲,HDFS 開啟了多主機資料分區功能,可以有效減少並行處理批次處理任務花費的時間。MapReduce非常適合處理大型資料集,如為搜尋引擎建立索引或資料採擷,但 不適合用於線上應用,因為線上應用要求的回應時間非常低。在Hadoop上構建的框架,如Hive和Pig,對從資料庫為Hadoop處理提取資訊非常有 用。eHarmony.com就是Oracle資料庫和亞馬遜MapReduce結合使用的例子,利用後者對數以百萬計的用戶進行分析。

  實體-屬性-值存儲
   實體-屬性-值存儲(Entity-Attribute-Value ,簡稱EAV)源於資料庫管理技術中的關係模型,它們不具備完整的SQL資料庫功能,如基於非程式性和陳述性查詢語言的查詢模型,它們也不僅僅是一個簡單 的key-value資料存儲,EAV資料存儲主要包括亞馬遜的SimpleDB,Google AppEngine 資料庫和微軟的SQL資料服務。

  Google BigTable使用分散式檔案系統,它可以在數千台伺服器上 存儲非常大的資料集(PB大小),它基於Google AppEngine資料庫,Google自身也在使用它,和MapReduce一起,為網頁和應用如Google地球建立索引,BigTable是一個需 要大量分析的專案解決方案,如10億網頁和47.8億URL。對那些尋求BigTable開源替代方案的人而言,可以採用 Hadoop,Hypertable和HBase。Hypertable運行在分散式檔案系統(如HDFS)上。HBase資料通過表、行和多值列進行組 織的,它有一個集成式介面掃描行的範圍。Hypertable是用C++實現的,而HBase是用Java實現的。

  Google AppEngine包括一個靈活的資料存儲,它專門為讀操作進行了優化,支援原子事務和一致性,可以和屬性一起存儲實體。它允許根據鍵和屬性過濾和排序, 內置21個資料類型,包括list,blob,postal address和geographical point。應用程式可以定義實體組作為執行事務更新的基礎。訪問Google AppEngine資料庫有程式設計介面,可以使用Python查詢物件。資料庫也是可程式設計的,可使用Java資料物件(JDO)和Java持久性API。雖 然AppEngine捆綁了一個資料存儲,AppScale專案提供了一個軟體操作其它資料存儲,如HBasem,Hypertable,MongoDB和MySQL。

  亞馬遜平臺
   亞馬遜SimpleDB是靈活的,基於ErLang實現的,適合於高可用應用的最終一致性資料存儲套件,資料模型提供了大項目收集域,實際上是包含了 key-value值的屬性的雜湊表,屬性可以有多個值,而且不需要聯合,查詢語言提供查詢返回一個專案名、所有的屬性、屬性數量以及屬性清單。資料是以 單個格式(無類型字串)存儲的,不應用約束,因此要得到準確的查詢結果,你必須將資料按規定格式存儲,例如使用0或ISO 8601:2004日期格式填充數位。

  Azure服務平臺
  微軟的Windows Azure和Google AppEngine以及Froce.com一樣,提供了一個雲端運算平臺,其中包括資料存儲和其他應用開發特性。微軟.NET服務提供了一個服務匯流排和認 證,Live服務就是通過搭積木的方式構建的應用。微軟在Azure雲中也提供了SharePoint服務和Dynamics CRM服務。和亞馬遜的S2和EC2類似,使用Azure服務平臺的通信是 基於Web Service模型的,但同時支援SOAP和REST。微軟Azure捆綁了SQL資料服務(SDS),通過ADO.NET資料服務將Azure表存儲進 行暴露。目前該資料庫僅提供了一個單一SQL Server實例,並限制了存儲空間最大為10GB。對於更大的需求,必須使用分區進行水準分割。

   對於那些使用了很長時間的工業標準資料庫的人,需要適應新的EAV存儲,最大的不同是EAV缺乏強大的類型,SimpleDB使用字串值存儲一切,因 此進行比較和排序時需要你用0進行位元數補齊。微軟的SQL資料服務提供Base64,布林,日期時間小數和字串等類型,Google AppEngine內置了20多個類型,比SimpleDB和SQL資料服務都要多。

  RDF和語義資料存儲
  社交網路和 電子商務已經向我們表明了許多網路應用必須使用大規模資料存儲,支援上百萬的用戶併發訪問,雲端運算通常被吹捧為解決這一問題最佳辦法,並提出了Web 3.0的概念。資料存儲可以處理非常大的知識庫和資料集編碼,使用W3C資源描述格式(RDF)和W3C SPARQL查詢語言傳遞語義。RDF資料是按照主題-謂詞-物件三元組進行存儲的,重要的RDF資料還存儲了額外的資訊,如版本資訊,臨時查詢資訊等。

  Sesame, Jena, and Mulgara是開源的解決方案,OpenLink Virtuoso是一個萬能伺服器, 最近的基準測試達到了110500三元組/秒,除了SQL和XML資料庫外,它還提供了線上備份亞馬遜S3和安裝RDFizer盒子的功能。Franz AllegroGraph RDFStore提供了一種手段在雲中構建基於RDF的聯合知識庫存儲,它支援SPARQL查詢,Prolog語言和RDFS + +分析。在亞馬遜EC2上,它使用10個大型EC2實例花了6.19小時存儲和索引了10億三元組資料集。可以存儲RDF三元組的SQL/XML產品包括 Oracle 11g,IBM Boca for DB2。在專利方面,微軟一直在想辦法存儲RDF三元組,以及將SPARGL轉換成SQL。

  文檔存儲和列存儲
   按列存儲資料雖然沒有顛覆傳統的按行存儲資料的理論,但結合資料壓縮,無共用,大規模並行處理架構時,它可以保持高性能做應用分析和商務智慧處理,在雲 計算服務中使用Sybase IQ或Vertica列存儲,組織可以在保持伺服器硬體不變的情況下增強BI能力,Sybase IQ處理複雜的分析查詢,加速報告處理,包括為字串處理建立索引,如SQL LIKE查詢,它通過標準資料訪問API提供連接,它的Rcube方案相對普通關係資料倉庫和資料集市提供了性能上的優勢。Vertica分析資料庫支援 網格架構,TB級大小的資料庫,基於標準的連接,亞馬遜EC2用戶可以即付即用,有一個大型AMI實例,ODBC,JDBC,Python和Ruby驅動,資料庫大小每節點可以達到1TB,節點數量可以無限制增加。

   Apache CouchDB是一個靈活的,具有容錯功能的資料存儲,它支援JavaScript物件標記(JSON)和AtomPub資料格式,它為讀取和更新命名文 檔提供REST風格的API。為了確保資料一致性,它具有ACID屬性,不會覆蓋提交的資料,它使用一個文檔ID和序號寫入B叉樹索引,並依靠序號提 供生成文檔版本的功能。CouchDB提供了一個基於對等的分散式資料庫解決方案,支援雙向複製。

 SQL/XML資料庫
  批評家認為SQL資料庫是個倖存者,SQL應該消亡,其它還包括物件導向程式設計(OOP), 連線分析處理(OLAP),互聯網計算和WWW,有些人認為SQL平臺對於大型負載和資料量提供的可擴展性遠遠不足,UPS的物流系統中央資料庫每小時要 處理5900萬個事務,它有一張表的記錄超過了420億,每小時的峰值負載是10億SQL語句,它們的資料庫採用的是IBM DB2。eBay的資料倉庫運行在Teradata系統上,大約有5PB資料。LGR電話通話記錄資訊達到了310TB,採用的是Oracle資料倉庫, 在最近的一次會議上,微軟報告Hotmail已經達到了3億用戶,每天要處理超過20億封非垃圾郵件,資料庫採用的是SQL Server伺服器農場。

  SQL/XML資料庫平臺提供了一個豐富的查詢模型,支援SQL,XQuery,XPath運算式和SPARQL查詢,通常一個key-value存儲需要應用程式中的邏輯執行以記錄為導向的查詢處理,但在程式設計時,SQL解決方案提供了一個說明性程式設計解決方案,它依賴于查詢最佳化工具生成資料訪問路徑。SQL平臺提供成熟的管理工具和基於標準的連接,但高存儲容量SQL配置尚未出現在付費使用的雲中。

  IBM DB2提供了一種混合存儲引擎,支援交易處理,商務智慧和XML文檔處理,目前它擁有多項TPC基準測試世界記錄,包括在一台8處理器/64核心集群,運行Red Hat Linux高級伺服器版 的伺服器上百萬級TPC-C事務/秒的記錄,亞馬遜EC2 AMI捆綁的是IBM DB2 Express版或工作組版,以及Informix動態伺服器版和工作組版。如果你購買了DB2企業版或Informix動態伺服器版,也可以將它們的許 可遷移到EC2上。除了DB2和Informix動態伺服器外,還有預先打包好的AMI和IBM Lotus Web內容管理和WebSphere sMash,對於DB2或IDS開發,IBM提供了Developer AMI for EC2工具,不需要DB2或IDS使用費用。

  Oracle使用者可以將Oracle 11g資料,融合中介軟體和企業管理器許可轉移到EC2上,也提供了現成的AMI和Oracle安全備 份雲模組,使用亞馬遜S3可以創建壓縮和加密的資料庫備份。可以使用它的SBT介面輕鬆將S3備份組成到Oracle恢復管理器中,可供選擇的包括 Oracle 10g Express版,11g企業版,11g SE和WebLogic Server 10g,Oracle的許可政策允許轉移融合中介軟體到EC2上,包括WebLogic Server,JRockit(Java VM),Coherence和Tuxedo交易處理監控器。

  Oracle Coherence是一個在記憶體中 的,存儲key-value值的分散式資料網格,它為分散式資料提供線性擴展(據說曾經部署過5000個節點),複製,緩存和透明容錯。 Coherence支持在整個網格上分析和匯總,它可用於C++,Java和.NET開發平臺。Oracle真正應用集群目前公共雲提供商還沒有成功的例 子。

  MySQL企業版是一個非常適合於雲端運算的平臺,它可以擴大到多台伺服器,也可以只使用主/從複製,有些MySQL用戶已經為亞馬 遜EC2創建了高可用解決方案,使用的是多實例主-主複製集群方式實現的。MySQL企業版用戶可以申請24×7的EC2支援服務,如果是鉑金用戶,你可 以獲得一個企業儀錶板,複製監視器,連接器,告訴緩存(memcached)和MySQL高級分區。Continuent和Sun也正在努力讓MySQL 集群技術可以在雲端運算中發揮作用,如GoGrid,Rackspace Mosso和亞馬遜EC2。

  EnterpriseDB公司的 Postgres plus雲版本是Postgre SQL增強了GridSQL,複製,RAID非同步預取和分散式記憶體緩存功能的版本,GridSQL使用無共用架構,以支援並行查詢,處理高可擴展的環境, 如網格和雲,對於這個雲版本,EnterpriseDB公司與Elastra(它在亞馬遜上有一個SaaS產品使用了PostgreSQL和MySQL, 以及一個集群資料倉庫管理產品)建立了合作夥伴關係,在嘗試使用EC2實例管理資料庫時,Elastra使用亞馬遜S3作為持久性解決方案,以解決臨時的 磁片存儲問題。

  記憶體中資料庫和緩存
  對於那些需要高輸送量的應用,部署記憶體中資料庫和緩存可以滿足其需要。一種解決方案是將記憶體中資料庫和普通磁片SQL資料庫進行組隊,前者作為後者的緩存。TimeTen和solidDB都是很好很強大的記憶體中資料庫產品,分別被Oracle和IBM收購了。

   Oracle TimeTen是一個可嵌入的記憶體中資料庫,支援ODBC和JDBC資料訪問。它可以為Oracle 11g資料庫提供即時緩存和自動同步。IBM solidDB維護資料庫的冗餘拷貝,提供ODBC和JDBC查詢功能。它可以為實例大規模使用分區,作為SQL資料庫的緩存,並定期做快照(檢查磁 盤)。GigaSpaces XAP構建在三元組空間共用記憶體模型上,提供JDBC查詢功能。

  為了提高回應速度,高容量網站通常使用緩 存減少SQL查詢。Ehcache是由LinkedIn使用的分散式Java緩存。Memcached伺服器常常用於為MySQL應用程式提供分散式物件 緩存。JBoss緩存以及集成到開放的雲平臺GridGain中。Grid Dynamics使用亞馬遜EC2運行Monte Carlo模擬器將GridGain平臺從2個擴展到了512個。Quetzall CloudCache是針對託管在EC2上的雲應用程式的,它返回JSON或XML格式的資料,它可以運行在多個EC2區域,它提供REST風格的 API,捆綁了Ruby,Python,PHP和Java開發。微軟目前正在預覽一個分散式記憶體緩存,代號Velocity。它支援按鍵或標記檢索資料, 它包括了一個ASP.NET會話提供程式。

  聯合資料
  聯合資料庫為分散的資料聚合提供了一個解決方 案,Open SkyQuery和Flickr已經有成功的例子了。SkyQuery在聯合的多個資料來源上執行分散式查詢。Flickr使用分片在聯合MySQL資料庫 上支援每天上億的查詢,這種類型的成功和可擴展性需要雲端運算,並因此推出了新的聯合資料和分片。兼併和收購也迫使建立聯合資料存儲以執行商務智慧,以及其 它查詢不同的客戶關係管理資料庫。

  IBM以及在使用GaianDB,它是基於Apache Derby的,IBM用它來測試一個羽量級聯合資料庫引擎的性能。它分佈的資料庫多大1000多個節點,GaianDB可以在1/8秒內查詢,5秒鐘取回了百萬行記錄。

  平臺和API問題
   為公共雲端運算選擇資料庫會受到選擇的雲提供商的限制,SaaS提供商如Google AppEngine和Force.com為開發提供了一個特殊的平臺,包括預定義的PAI和資料存儲,但私有雲和基礎架構提供商如GoGrid, Joyent和Amazon EC2,能夠滿足雲用戶對軟體,資料庫環境和API的需求。

   除了雲存儲API外,開發人員可以實現各種各樣的資料存儲API和為SQL/XML資料庫開發基於標準的API,為雲開發應用的程式師可以使用SQL API和雲服務API,對於亞馬遜涉及到使用Web服務描述語言(WSDL)調用特定的Web服務,對於使用雲實現富互聯網應用(Web 2.0)的專案,開發人員可以使用JavaScript物件標記(JSON)和Atom發佈協議(AtomPub),不止一個大師認為AtomPub應該 成為訪問基於雲的資料的事實標準。

  易於開發是雲資料庫解決方案的一個重要考慮方面,應用程式設計介面(API)是一個主要的因素,有些雲資料訪問程式設計可以使用我們熟悉的API,如開放資料庫連接(ODBC),JDBC,Java資料物件(JDO)和ADO.NET。

 安全
  對於某些類型的應用,安全是使用雲服務的重大障礙,但它不是一個不可逾越的障礙,目前關於這一問題的主要思路是強調加密、授權、認證、數位憑證、角色和基於策略的安全控制。資料庫備份到雲中可以進行加密,通訊可以使用安全網路和加密資料。

  Java和.NET都為應用和訪問資料庫的服務提供了強大的加密解決方案,作業系統和 強大的SQL資料庫提供了額外層次的安全,SQL資料庫提供了諸如列級加密和基於角色的許可權分配和資料存取功能,但即使有多層安全保護機制,在公共雲和企 業資料中心中嚴重威脅到資料庫安全的是違反安全規定的得到安全授權的內部職員。為了説明加強資料安全,亞馬遜EC2提供了安全性群組的定義,但是你必須使用亞 馬遜的API函數手動監測安全性群組,同時也沒有日誌功能。

  安全差異取決於你選擇的是SaaS,還是PaaS,抑或IaaS,因為SaaS提供商提供了一個捆綁工具,API和服務,SaaS使用者不能選擇最佳的資料存儲和安全模式。但那些創建私有雲或使用基礎設施提供商的使用者必須選擇一個資料管理解決方案,這個方案必須滿足應用程式的安全需求。

   Saleforce.com在Oracle資料庫上使用多租賃模式託管應用程式,另一方面,亞馬遜EC2是一個多實例安全的例子,如果你租用了一個運行 在Oracle,DB2或SQL Server上的AMI,你會擁有一個唯一的實例,不會其他使用者共用。使用IaaS時,認證資料庫使用者的進程確定角色和授予的許可權。

  容錯和雲容錯移轉
  一個令人興奮的消息是雲服務提供者能夠配置容錯,高可用的系統和熱備份,以及災難恢復,在亞馬遜EC2上也可以配置和操作私有雲進行容錯移轉,需要複製私有雲和公共雲中的資料,執行亞馬遜API和可用的區域,IP分配和負載均衡,使用與亞馬遜實例相容的伺服器配置。後者是非常必要的,可以避免破壞應用程式或服務由於位元組存儲順序、Java堆大小的變化和其他差異。在最近一次和IBM的對話中談到,要將部署在公共雲中的資料庫轉移到私有雲中難度是很大的。

  最後的想法
   SQL資料庫目前佔據主導地位,即使早期一代的資料庫在創建替換-更新-刪除(CRUD)操作時遵循ACID屬性和良好的性能,但他們需要程式師編寫代 碼才能流覽資料和執行查詢,SQL平臺提供了一個即席查詢解決方案,它不需要程式設計,因為它使用的是陳述性語言,並提供了內置的聚集功能。

  組織在選擇雲端運算類型時,無論是選擇私有雲路線還是公共雲路線,都取決於可用的資料管理。對於那些走PaaS路線的人,重點應該放在平臺的功能上,而不是資料存儲本身。對於那些走私有雲或IaaS路線的人不得不選擇硬體和軟體配置,包括滿足業務目標和應用需求的資料存儲。

  許多因素都會影響到雲資料庫方案的選擇,從簡單的資料存儲到支援複雜查詢和交易處理的平臺。並不是每個專案都需要SQL資料庫管理的全部功能,而要確定一個羽量級,快速和可擴展的資料存儲。

Powered by Red Tie