從單一數據庫服務器到根本沒有數據庫服務器。無服務器計算模式能否改變關系數據庫技術的格局?
無服務器計算在過去兩年中開始獲得推動,這一概念全部關注于將應用程序轉移到不需要管理的基礎架構,并且僅在運行時間內消耗資源。在公有云中,無服務器通常轉換為提供者根據工作負載需求動態管理服務器資源分配的解決方案。 AWS Lambda領先,微軟Azure功能(及其他)迅速迎頭趕上。無服務器計算框架的定價通常基于應用程序消耗的實際資源量,而不是預先購買的容量。隨著無狀態應用程序的這些無服務器計算解決方案在下一代軟件體系結構中得到普及和采用,那么這些解決方案會離開關系數據庫?對于很多(如果不是大多數)應用程序來說仍然是一個關鍵組件。
在過去的幾年中,當涉及到部署關系數據庫時,你已經擁有了幾個可靠且經過驗證的模型:從龐大的微服務到微服務,再到平臺即服務解決方案。你可以部署單個“大型”服務器,運行可為數十種應用程序供電的單片或統一數據庫。還可以選擇依靠面向微服務的架構和一套獨立的小型模塊化服務,每個服務都可以實現獨特的流程并實現特定的業務目標。云解決方案的采用還為你提供了通過基礎架構即代碼部署數據庫的能力,甚至可以利用平臺即服務解決方案,從而大大降低了我們數據庫的運營開銷和復雜性。
但是,所有這些模型仍然依賴數據庫服務器的供應。無論是在本地,在云中還是使用PaaS.你可以根據預測的工作負載特征來調配數據庫容量,這些特征決定了服務器的大小和配置。當然,可以擴展,縮小或擴展數據庫以響應工作負載(取決于所使用的數據庫技術),但此過程并不意味著經常進行。
相反,應該根據周期性事件進行擴展,例如即將到來的假日季節,這將為你的電子商務應用程序生成額外的交易,或者為你的公司的SaaS產品添加一個新的大客戶作為回應。擁有專用數據庫服務器對于工作負載多少有點可預測且相對穩定是最有意義的。可能會出現高峰和低谷,但它們通常遵循可預測的模式。你可能需要在一年中多次調整數據庫的大小,但整天不會多次。不常用的數據庫縮放是最適合傳統應用的模型。
下一代應用程序引入了下一代挑戰。其中一些工作負載可能是零星的,間歇性的,而且難以預料。例如,數據庫查詢或事務的突發可能每天(甚至每個月)只能持續幾分鐘或幾小時。使用與之前相同的電子商務應用程序示例,為了防備,你的數據庫如何提供對閃存銷售事件的支持,而不必事先過度配置數據庫服務器?對于其他工作負載也存在類似的挑戰,從在線游戲,股票交易甚至分析(如果每天只有幾個小時的分析套件產生大量數據庫負載,該怎么辦)?大多數數據庫管理員將聲明,您應該根據預測的高峰工作負載調整數據庫的大小。如果可能的話,擴展數據庫的過程是一件苦差事,這是傳統的智慧和正確的范例。
無服務器計算數據庫意味著什么?
為了利用數據庫空間的無服務器計算模式,首先需要分離數據體系結構的存儲層和處理層。解耦存儲和計算并不完全是一個新概念。這個想法已經在一定程度上在NoSQL和大數據分析空間(Amazon EMR,微軟的Azure DLS和DLA等)以及各種關系數據庫技術(Oracle RAC,NuoDB)中實現。
然而,純粹的存儲和計算解耦并不完全是你稱之為無服務器的。為了完全無服務器計算,計算不應該存在于不處理數據的時段,同時也提供按需自動縮放。
實質上,部署一個數據架構,數據庫層將根據應用程序工作負載自動啟動,關閉和擴展/縮減,同時還抽象出服務器,實例或群集的概念。您只需要定義數據庫端點并連接您的應用程序;底層數據庫技術將根據應用程序需求擴展存儲和計算資源。
除了性能和靈活性方面的優勢外,無服務器計算數據庫模型還可提供高水平的成本效益。例如,每秒支付使用的數據庫容量,并且僅在數據庫處于活動狀態時才支付,而不是事先選擇數據庫實例的大小。
無服務器計算數據庫技術的當前狀態
有大量可擴展的關系數據庫技術提供讀取或讀/寫擴展(Oracle RAC,Amazon Aurora,Percona XtraDB,ClustrixDB,NuoDB等)。但是,這些不是本地無服務器計算產品。還有針對無服務器計算數據庫的創新解決方案,其中包括諸如FaunaDB(無服務器和全局復制的NoSQL數據庫),Google Cloud Spanner(全球分布式和強一致的關系數據庫)或MicrosoftCosmos DB(模式不可知的多模式數據庫)模型)。但是想要使用這些數據庫技術的傳統應用程序將不得不大量重寫或進行大量重新平臺化。例如,盡管Google Spanner是一個具有完整ACID功能的關系數據庫(并且擁有獨特的數據庫技術),但它依賴于定制客戶端庫來實現連接,并提供了一種SQL變體,其中事務由自定義API處理。
支持真正無服務器計算和真正的關系數據庫,一方面具有完整的服務器抽象/擴展能力,另一方面保持完整的ANSI SQL和ACID支持,這是一個相對較新的創新成熟的計劃;特別是來自公有云領域(亞馬遜,微軟,谷歌和甲骨文)的供應商。
例如,亞馬遜在去年的Re:Invent會議上發布的最令人興奮的公告之一是針對Aurora MySQL數據庫的無服務器版本,該版本將于2018年晚些時候發布。據亞馬遜稱,Aurora Serverless的設計目標是“并且如果發生快速變化,這種新的配置可以讓您按需付費使用數據庫資源。”亞馬遜表示,Aurora無服務器用戶只會在數據庫處于活動狀態時支付處理費用(以及至于使用的存儲)。亞馬遜本質上構建了一個事件驅動計算平臺的數據庫。用戶提供端點,該端點充當將查詢路由到快速縮放的數據庫資源隊列的代理。根據Amazon提供的信息,即使進行縮放操作,Aurora Serverless也將允許您的連接保持活動狀態。縮放也應該是快速的,新資源將在幾秒鐘內上線。
未來是什么樣子的
看到技術變化如何推動開發和應用程序部署模式的變化是不可思議的。 支持API驅動的操作和擴展對于下一代數據架構變得越來越重要,無服務器數據庫成為一個固有的重要組件。
當前RDBMS技術的圣杯之一是將無服務器計算的優勢與開發人員知道的靈活關系數據模型以及現有應用程序兼容的完整ANSI SQL和ACID支持相結合。 看起來,無論哪個數據庫供應商首先達到頂級水平,并發布完全關系型和完全無服務器的數據庫引擎,肯定會在市場上留下重要的標記。因此,亞馬遜,甲骨文,微軟,谷歌和其他公司,數據庫創新峰會正在進行中!