云計算中的分片關系數據庫 |
發布時間: 2012/9/15 18:28:32 |
電子商務、社會媒體、移動通訊以及機器到機器的數據交換都制造著TB級乃至PB級的海量數據,它們是企業IT部門所必須存儲和處理的。在用戶處理面向云計算數據庫的數據時,掌握分片最佳實踐無疑是在云規劃過程中邁出了重要的一步。 分片是指將表分割為可管理大小的磁盤文件的過程。一些高彈性的鍵值數據存儲(如Amazon Simple DB、Google App Engine的數據存儲或Windows Azure Tables)和文檔數據庫(像CouchDB、MongoDB或RavenDB)可以垂直處理表中的大數據。MongoDB內建的自動化分片特性,RavenDB也將在不久的將來增加該功能。自動化分片可以自動地平衡分片大小并消除對DevOps團隊監控該過程的需要。自動化分片的MongoDB數據庫可不是想象的那么簡單,正如Todd Hoff在博客中貼出的有關分片疑難的博文所述。 但仍有小部分鍵值和文檔(被稱為NoSQL)數據庫缺少傳統關系數據庫管理系統(RDBMS)所提供的交易數據一致性功能。你可以在內存、處理器或是二者上砸錢來擴展RDBMS(垂直方向上)。你可以配置256GB的RAM到高端商用服務器,但本質上增加更多的CPU核心卻并不實際。如果你的數據庫在云中,你會受限于內存和處理器,而這都些取決于云供應商的報價單。 擴展RDBMS(水平方向上)導致了一個本質上的技術挑戰。2009年8月,Morgan Tocker詳細地在博客中討論了為什么你不會選擇分片MySQL數據庫。Tocker認為在遇到以下問題時,你可能才需要分片數據庫表: 過大的工作集:你的工作集,由頻繁訪問和更新的數據與索引構成,不適合RAM安裝在本地服務器,不適合硬件預算或云服務供應商所能實現的硬件數量。解決方案就是分片。 過度的寫頻率:你的數據庫I/O系統不能處理由本地或是基于云的服務器請求所導致的每秒寫次數。解決方案是分離讀操作到讀拷貝,這可能需要分片來實現分散I/O負荷到多個數據庫服務器。 AWS針對MySQL的關系數據庫服務提供了其最大的High-Memory Quadruple Extra Large DB實例,該實例包含68GB的內存和26個ECUs。這些ECU們由8個虛擬核心構成,相當于每3.25個ECU擁有一個核心。其售價為每小時2.60美元(每月1872美元)。根據AWS的報價單,一個ECU所提供的性能相當于1.0-1.2 GHz 2007 Opteron或2007 Xeon處理器的性能。AWS RDS DB實例可選擇從5GB到1TB的相關存儲性能,價格為每GB每月0.1美元。數據傳輸費用為每GB0.12美元的數據輸出,再加每百萬次0.1美元的I/O請求。Amazon從7月1日起取消了數據輸入的費用,并降低了數據輸出的費用。 為實現讀拷貝進而實現高可用的商用服務器,你可能還需要額外的存儲費用。幸運的是,ScaleBase提供了第三方Database Load Balancer 應用來自動化分片,并針對運行在Amazon EC2 或Amazon RDS的MySQL實現讀、寫分離。 2009年8月在發布的“分片的麻煩事兒”博文中,Simon Munro總體上介紹了關系據庫的分片問題,特別討論了微軟SQL Server 2008的SQL Azure定制化云實現。當時,SQL Azure的最大數據庫大小僅為10GB,現如今已是50GB。 微軟Azure Application Platform團隊的新公司副總裁Scott Guthrie在今年6月9日舉行的Norwegian Developer Conference(NDC)2011大會上發言: “……我們同樣將自動化分片作為SQL Azure的一部分,這意味著從擴展前景來看,我們可以處理超高負荷,并可為用戶實現任何類型的負載平衡和擴展工作。” 如今,SQL Azure對數據庫的支持雖為50GB的關系型存儲,但你卻可以擁有任意數量的數據庫。 通過SQL Azure Federations自動化分片目前尚處于技術預覽(Community Technical Preview)階段,從Guthrie的發言還很難斷定分片是否有望“支持百GB或TB級” 。此外,SQL Azure Federations還承諾可以出色地完成模式遷移。SQL Azure包含一個主要和兩個次要的針對高可用性的備份,服務是即付即用的,1GB到5GB的(Web版)每GB每月9.99美元,以及10GB到50GB的(商業數據庫)每10GB每月99.99美元。每月的固定費用不包括數據傳輸費用,在北美、歐洲的數據中心每GB輸出費用為0.15美元,在亞洲每GB輸出費用為0.2美元。微軟從7月1日起取消了數據輸入費用。與Amazon RDS不同,你不會產生SQL Azure的I/O費用。 微軟還沒有透露有關SQL Azure的CPU和內存說明,但是公司表示它們與數據庫的大小相當。你可以在Cihan Biyikoglu的博客上獲得有關今年底SQL Azure Federations商業版發布的日程。 Google在其5月的I/O 2011會議上宣布,下半年商業發布的Google App Engine Beta版將結合RDBMS,并將與商業版GAE一同包含在內,但公司沒有透露有關性能和價格方面的細節。 除非Google像變戲法似的實現RDBMS的高擴展性,否則還是準備好分片關系數據庫才能處理好云計算中的大數據。 本文出自:億恩科技【www.laynepeng.cn】 |