無服務器數據庫的概念、產品及優缺點概述
譯文【51CTO.com快譯】引言:本文將介紹無服務器數據庫的基本概念,其知名的產品,以及各自的優缺點。
一、了解無服務器架構
無服務器計算是云計算的一種執行模式,即:云服務提供商能做到對計算機資源分配的動態管理。由于服務功能的執行會占用寶貴的計算資源,因此如果您的應用既涉及到內存的分配、又與服務功能的執行時間有關的話,那么AWS和Azure都會以100毫秒為單位向您收取費用。AWS Lambda當前的計價標準為0.00001667美元每GB每秒,而Azure的功能費用則為0.000016美元每GB每秒。您可以籍此來細粒度地掌握成本的上漲速度。考慮到一般應用所能夠被分配到的內存量大約在128MB到1.5GB之間,則對應的功能執行的價格也會根據您的設置不同而有所變化。
當然,無服務器計算仍然需要用到真實的服務器來安放其對應的無服務器數據庫。所以,只有了解了自己的需求,您才能輕松地去選擇合適的數據庫服務,并使用那些當今最為先進的技術解決方案。
二、不同的無服務器數據庫
當前,市面上有幾款知名的數據庫產品可供選擇,例如:Azure Data Lake(Azure是微軟的公有云服務,Data Lake是其中一種類型的服務主機)。
1.Google云端商店
Google云端商店是一個面向文檔的商店,它將Google App Engine的數據庫組件列為了獨立的服務。同樣隸屬于Google的Firebase,可以為客戶提供兩種不同的支付方案選項:固定費用的套餐和按使用支付的方案。同時,Firebase也包含了一個分層式的數據庫。
2.FaunaDB
FaunaDB分布于世界各地,它是一種最重要的交易型數據庫服務,其技術主要是基于Twitter。
3.亞馬遜Aurora Serverless
亞馬遜Aurora Serverless的預覽版已于2017年第四季度推出。它有兩種不同的版本:
- 兼容MySQL與PostgreSQL的版本
- 兼容MariaDB與Oracle等其他已知系統的版本
Amazon Aurora Serverless數據庫可以被完全托管,并且能夠自動將數據庫的存儲容量擴展到64TB。
4.DynamoDB
它是亞馬遜的另一項服務。DynamoDB是一種完全托管的NoSQL數據庫服務。它的無縫可伸縮性能夠提供可預測的高速性能。您可以直接使用DynamoDB來創建數據庫的表項,也可以存儲和檢索任意數量的數據。它還能為任何級別的流量請求提供服務。
5.MongoDB
盡管不屬于無服務器數據庫,但是MongoDB仍然值得一提。因為它提供了一款數據庫即服務(Database as a Service,DBaaS)的產品--MongoDB Atlas。MongoDB是免費且開源的,它由GNU的Affero通用公共許可證(General Public License)所發布。它在數據存儲和JSON的相關文檔方面非常靈活,因此文檔之間的字段可以有所不同,而數據結構也隨著應用場景而發生改變。
如上所述,作為一款DBaaS工具,MongoDB Atlas具有強大的功能。它能夠進行各種自動化操作,包括在幾分鐘之內創建和部署群集,并避免您的群集出現宕機。它基于角色的訪問控制服務可以保護您的各種數據。同時它也具有加密、網絡隔離、和身份驗證等保護功能。
MongoDB Atlas的另一個強大功能是:您只需要按下一個按鈕,便可輕松實現應用的橫向與縱向擴展。為了獲得更好的讀取性能和服務保證,您還可以在多個地區內部署集群。這些集群雖然在地理上是分布的,但是它們能夠自我修復,并且具有出色的容錯性。
MongoDB Atlas所帶來的連續備份解決方案,能夠提供可查詢的時間點與快照恢復的選項。您可以方便地查找到任何細節,并能實時獲取與性能相關的視圖。同時,通過自定義的各種警報參數,您還能通過優化其儀表板,來突出顯示各種關鍵的歷史指標。
三、使用無服務器數據庫的優點
1.成本效益
預先購買固定數量的服務器,通常會需要花費很長時間才能充分利用到它們,這相對于使用無服務器數據庫來說顯然是非常昂貴。它對于機器資源的封裝能力比購置那些可自動擴容的分組更具有成本效益。另外,由于不涉及到與操作系統相關的許可、安裝、維護、支持和修補,因此整體成本也會大幅縮減。由于只對分配給用戶代碼的內存與時間進行計費,它常被描述為“即付即用(pay-as-you-go)”的模式。
2.運營、可擴展性和生產力
鑒于云服務提供商有責任去擴容、并無縫地滿足用戶需求,因此無服務器架構能夠節省開發人員和運營商,在自動化擴容策略、與系統設置及調優上所花費的時間。籍此,小型開發團隊能夠獨立地運行他們的代碼,而無需引入架構師和工程師團隊的支持。另外,更多的開發人員也能通過它來更加熟悉DevOps技能,從而使得普通軟件開發者與DevOps工程師之間的差異不再明顯。
四、使用無服務器數據庫的缺點
1.性能和資源限制
與那些在專有服務器、虛擬機或容器中運行的數據庫相比,一個不經常被使用的數據庫可能會出現嚴重的響應延遲問題。發生這種情況的原因是:如果云服務提供商發現無服務器數據庫未在被使用,則會將其完全地關停。這就意味著:如果數據庫需要一段時間才能啟動運行的話,則會產生延遲的現象。當然,由于資源提供者在資源上有設限的原因,無服務器計算也不適用于具有高性能計算需求的工作負載。另外,從運維的角度來說,在任何給定的時間內,按需且批量地購置準確數量的服務器,還是更有益于整體架構的規劃。
2.監控和調試
相比較傳統的服務器而言,對于無服務器架構的性能、以及資源過度使用等方面的問題診斷會困難許多。雖說全面功能提供的服務模式已經過時,但是我們仍舊很難通過對無服務器架構添加探查器、調試器或APM(Application Performance Management)等工具,來深入了解更多的細節。而且無服務器架構的運行環境通常不是開源的,因此我們很難在本地環境中精準地重現其性能特征。不過,如今市場上已經出現了一些非常優秀的無服務器監控工具,可供您挑選。
3.安全
無服務器數據庫常被草率地認為比傳統數據庫更為安全。在某種程度上說的確如此,因為云服務供應商會更加專業地為你關注那些操作系統級別的漏洞。不過,實際上與傳統架構相比,由于無服務器架構的應用組件更多,而隨著應用入口點的增多,它受到攻擊的可能性也會呈指數式增長。由于無法在終端和網絡層面上(如IDS / IPS)執行相關控制或安裝,用戶往往對于其云端的工作負載也是無能為力的。您可以通過如下鏈接,來了解更多有關無服務器安全風險方面的信息。
https://hackernoon.com/fantastic-serverless-security-risks-and-where-to-find-them-737d2206545a
原文標題: What Is a Serverless Database? (Overview of Providers, Pros, and Cons),作者:Nemanja Novkovic
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】