將資料庫伺服器在IaaS雲上運行好嗎? 或者應該轉換成PaaS選擇? 資料庫即服務的選擇可能聽起來很誘人,比如Cloudant的NoSQL但是怎麼權衡? 開發者和應用設計者對於在雲端部署資料庫有眾多選擇,很難做出最佳的選擇判斷。 不管選擇了哪一種雲資料庫,都需要衡量多種因素,包括成本、可用性、可擴充性以及性能支援。
當前的代碼可能很難對接到平臺即服務(PaaS)資料庫選擇;甚至是關聯式資料庫都無法完全相容,比如微軟SQL Server和Windows Azure SQL資料庫。 比如SQL Server中,SQL資料庫不支援自訂文本操作。
因此,如果當前的應用使用MySQL、Oracle、SQL Server、PostgreSQL或者其他常用的關聯式資料庫管理系統,構建在三層架構上,可以將資料庫伺服器轉移到基礎架構即服務(IaaS)雲上。 在這種選擇下,可以保持配置和管理控制,但是也要持續承擔備份、監控和按需擴展(或收縮)的責任。
相反,如果開始一項新的開發或者重新設計一個當前的資料庫層,隨後PaaS或者資料庫即服務(DBaaS)可能會更好的適應需求。 要儘早確定是使用SQL還是NoSQL架構。
SQL和NoSQL利弊分析
SQL和NoSQL都有優缺點,但是有些最為重要的因素則是你的團隊開發每一種類型資料庫的技能水準,以及每一種資料庫類型怎樣更好的適應你的需求。 擅長技術類型的優勢在於你的開發者不會被較長的學習曲線嚇到。 不要過分強調不需要的功能,即便市場上行銷它比其他的資料庫得到了更多的支援者。 比如,分散式交易兩階段提交對於一些應用很重要,但是你真的需要嗎?
基於SQL的關聯式資料庫平臺可以選擇PaaS,比如亞馬遜關聯式資料庫服務(RDS)和Windows Azure SQL資料庫。 亞馬遜RDS支援MySQL、Oracle和微軟SQL Server資料庫。 在優化資料庫性能時磁片I/O是重點,因此在對接PaaS或者DBaaS資料庫開發時,考慮一下存儲的選擇。
亞馬遜Web服務(AWS)允許客戶提供RDS實例,不管是標準的存儲還是預分配的IOPS。 後者對於交易處理應用是個不錯的選擇。 如果你可以忍受I/O性能,標準存儲可以節省AWS費用。 客戶可以按照1000—30000 IOPS的範圍,每月價格為10美分/IOPS。
谷歌雲SQL是一個基於雲的MySQL實現,針對中小型應用。 整合了谷歌App Engine,對於已經使用PaaS的開發者十分適用。 不管是打包計畫還是每個用例的計畫付費都是可行的。
當成本和快速擴展成為問題所在,NoSQL選擇可能更適合。 NoSQL資料庫並不具備我們構建面向事務的系統所依賴的所有性能,但是很適合Web和移動應用,這些應用要求快速擴展。 AWS和微軟都有NoSQL資料庫服務。
亞馬遜DynamoDB是一個託管的NoSQL資料庫。 客戶對讀寫分配容量,基於此支付每小時的費用。 AWS根據「讀容量單元」和「寫容量單元」衡量容量。
亞馬遜SimpleDB是另一個NoSQL選擇。 其首要優勢在於成本低。 SimpleDB對於小型應用是個不錯的選擇,這種應用可以接受更低的性能。 對於大量資料則需要分區和自動擴展,從而處理負載,DynamoDB可能更適合。
微軟的NoSQL產品稱之為Table Storage,類似亞馬遜DynamoDB,是一種鍵值對資料存儲。 這些資料庫都是支援大量資料的應用的有利候選,簡化了資料類型的關係,可以不用修復預定義模式就獲益。 Table Storage的價格基於資料量和冗余水準。
除了IaaS廠商之外,比如微軟、谷歌、亞馬遜,你還可以選擇特定的資料庫服務,比如Cloudant的資料庫即服務。 Cloudant提供多租戶和專用MongoDB資料庫服務,價格起始于每月每GB1美分,加上額外的HTTP請求費用(如GET、PUT、POST和DELETE)。