分享到

簡介

資料庫在許多組織中的作用隨著時間的推移而演變。雖然對資料用於構建應用程式、制定業務決策以及在更大生態系統中提供價值的依賴性增加了,但資料庫軟體和基礎設施本身的管理在許多情況下已經發生了轉變。

雖然這些資產傳統上由組織自身運營,但其管理正日益外包給外部提供商。這一想法的首次迭代是轉向託管資料庫,在這種模式下,提供商管理基礎設施和軟體,同時允許使用者調整設定和設定擴充套件策略。

最近,這一想法演變為無伺服器資料庫,其中整個基礎設施、資料儲存和底層架構完全由提供商管理,使用者只需透過類似 API 的互動訪問其管理的資料。

在本指南中,我們將討論傳統部署的資料庫與無伺服器資料庫之間的差異。我們將在適當的情況下討論託管資料庫產品,以幫助區分提供商提供的不同選項。瞭解這些不同的概念可以幫助您理解不同產品之間的權衡,並就哪種資料庫管理型別適合您自己的專案做出明智的決定。

傳統資料庫 vs 託管資料庫 vs 無伺服器資料庫

在我們深入探討各種策略的優缺點之前,讓我們花點時間回顧一下每種系統背後的一般工作原理。

傳統資料庫

傳統資料庫是數十年來一直存在的資料庫和資料庫管理模式。它涉及配置一臺具有適當硬體資源的物理或虛擬伺服器,並將其設定為資料庫伺服器。除了初始安裝和配置之外,這種設定還需要:

  • 對底層基礎設施進行持續管理,包括硬體健康、資源管理和網路訪問
  • 維護一個最新、穩定且安全的作業系統,以及
  • 配置、最佳化和管理資料庫管理系統

Traditional databases

總的來說,這個選項提供了巨大的控制和靈活性。系統的每個部分都可以被檢查、最佳化和更改,以適應使用者和應用程式的需求。

這帶來的是更大的管理負擔。系統的所有層面都必須進行維護和最佳化,以提供理想的應用程式效能,同時保持系統和資料的可用性和安全性。

託管資料庫

託管資料庫是大多數雲提供商提供的一種產品,作為自行管理基礎設施的替代方案。在這種模式下,提供商管理伺服器配置和資料庫軟體,並向用戶公開選項,允許他們配置和調整行為。

使用託管資料庫,提供商負責:

  • 對底層基礎設施進行持續管理,包括硬體健康、資源管理和網路訪問
  • 維護一個最新、穩定且安全的作業系統,以及
  • 管理資料庫系統的部分,例如資料庫管理系統的健康和功能

使用者仍然負責:

  • 決定其資料庫的最佳設定
  • 設定擴充套件、備份和其他軟體級配置的策略

通常,這種配置允許提供商管理組織不特別關心的部分流程,只要這些流程能保持高標準。關鍵的可配置區域仍向用戶公開,以便他們可以根據資源的重要性、操作要求和其服務級別協議 (SLA) 來調整行為。

許多組織採用這種管理方式,因為它允許他們的開發人員自定義他們關心的資料庫部分,而無需維護內部系統管理專業知識。如果您的需求與提供商對產品的設想非常吻合,它會運作良好;但如果您發現自己對所獲得的控制程度感到力不從心,或者自動化水平仍未達到您的預期,那麼可能會很困難。

無伺服器資料庫

無伺服器資料庫是雲提供商提供的一種相對較新的方法,它承擔了使用者更大一部分的管理責任。無伺服器資料庫將資料庫管理系統中處理儲存的部分與執行查詢的部分解耦。這意味著兩者可以獨立擴充套件。在無伺服器資料庫中,這些元件都由提供商獨家管理。

Serverless databases

實際上,這使得無伺服器資料庫可以被視為一個無限大的儲存庫,資料可以在其中儲存、操作和檢索。後端儲存將根據需要進行擴充套件,查詢執行器的數量也將根據需求進行調整。使用者只需透過類似 API 的介面訪問資料庫,該介面會自動將命令路由到正確的元件。

無伺服器資料庫在我們討論的所有選項中需要的運營管理最少。這使您可以將資料庫作為外部服務使用,而不是作為必須保持執行的基礎設施元件。

何時使用傳統資料庫和無伺服器資料庫

既然我們已經回顧了不同資料庫管理策略所採取的方法,現在可以討論它們最適合哪些場景。雖然這些決定主要取決於您自己的應用程式需求、內部專業知識以及對最佳化和管理的投入意願,但仍有一些通用指標可以幫助您指明正確的方向。

為什麼要使用傳統資料庫?

如果您需要控制、隱私和效能,那麼從硬體到資料庫軟體管理整個資料庫伺服器堆疊的傳統方法是最合適的。

高控制度

雖然傳統資料庫伺服器需要持續的監控、維護和應急計劃來保持可用性,但它提供了無與倫比的控制水平。

您可以選擇適合您特定需求的基礎設施架構,從單個伺服器到複雜的叢集。您可以將這些資產部署在任何您想要的地方,無論是在本地、在擁有或租賃硬體的資料中心,還是透過使用雲提供商的標準計算資產。您可以根據需要升級和更換任何元件,並無限制地調整任何軟體級別的配置。

如果對您來說,能夠在部署的任何層面上更改任何內容很重要,那麼傳統資料庫部署可能是您的最佳選擇。您將不得不透過承擔管理部署每個部分的責任來為這種控制水平付出代價。

注重資料隱私

如果您的應用程式資料需要非常高的隱私級別,無論是作為一項功能還是作為符合任何標準或法規的要求,傳統資料庫都能為您提供最大的控制權。您將能夠精確地指定誰可以訪問部署它們的物理硬體以及任何軟體級別的訪問。

執行自己的資料庫伺服器可以確保您能夠為使用者和資料提供必要的保護級別。不同客戶的資料可以放置在不同的資料庫、不同的伺服器或不同的物理位置,以保持嚴格分離。您可以決定部署到符合特定行業標準的資料中心,以確保物理訪問受到限制。

在軟體層面,您也從一個沒有外部訪問許可權的環境開始。預設情況下,沒有其他方對您的服務擁有管理監督權。您可以透過不提供訪問許可權以及設定加密和其他安全措施來保護您的資料,以達到您所需的保護級別。

高效能

如果您的應用程式需要持續的高效能,那麼傳統資料庫部署可能是您的最佳策略。

當您自己執行資料庫伺服器時,由於您對競爭的程序和客戶端有全面的瞭解,因此可以更容易地發現和緩解資源爭用。您不必擔心鄰近客戶佔用過多的共享資源,並且可以根據需要配置額外的資產。您系統的峰值效能僅受您分配的時間、金錢以及您管理系統的專業知識的限制。

在與無伺服器資料庫進行比較時,特別相關的是您的伺服器資料庫資源的持續可用性。您不會遇到冷啟動問題,因為您不會在需求低於峰值時縮減基礎設施的層級。如果您無論之前的活動水平如何都需要一致的效能,這一點可能很重要。

為什麼要使用無伺服器資料庫?

如果無伺服器資料庫非常適合您的用例,它們也具有顯著的優勢。如果您想要經濟實惠、自動擴充套件且管理負擔較輕的資料庫訪問,那麼它們是一個很好的選擇。

低運營成本

無伺服器資料庫提供的主要優勢之一是低運營成本。由於無伺服器資料庫的儲存層和計算層可以獨立擴充套件,因此您只需為實際使用量付費。

儲存層根據您管理的資料量進行擴充套件。這通常根據容量定價,如果您的應用程式具有一致的模式,則定價相對可預測。由於這種儲存後端是動態分配的,您永遠不必擔心空間不足或與過度配置儲存相關的成本。價格只反映您的儲存量。

計算層是完全解耦的,並根據其自身的標準進行擴充套件。配置的查詢執行器例項數量由您的應用程式當前傳遞給資料庫的流量決定。這意味著在流量高峰期,服務將啟動額外的查詢處理器來處理請求。另一方面,當沒有查詢執行時,服務可以將此層縮減到零,從而在此期間完全消除處理成本。

如果您對成本非常敏感,無伺服器資料庫可能是一個不錯的選擇,因為您無需擔心精確預測您的使用量。平臺的資源和您的成本會與您的使用量完全同步擴充套件。

高可擴充套件性

我們在上一節中提到這是成本的一個函式,但無伺服器資料庫策略最重要的優勢之一是易於擴充套件。這不僅影響開支,還影響您在可預測的週期內使用量波動或因興趣激增而變化時滿足不同需求水平的能力。

資料儲存和查詢執行的獨立擴充套件機制允許您使用相同的服務和配置處理截然不同的使用場景。該服務可以自動調整以適應大多數使用水平,並且可以隨您的應用程式的增長而擴充套件,而無需對資料庫服務進行任何更改。

高可擴充套件性還意味著您可以輕鬆地進行應用程式實驗,並從測試階段過渡到生產階段,而無需更改資料庫服務。您可以設定測試和暫存資料庫,在不使用時它們將縮減到零。這在實踐持續整合和持續交付時特別有用,因為您的流水線可以使用一個完美映象生產環境的資料庫服務,同時只支付您的測試所需的少量使用費用。

管理責任減少

無伺服器資料庫最大的亮點也許在於它們可以幫助您的團隊減輕管理責任。儘管許多組織已經習慣了託管資料庫所需的管理開銷,但無伺服器資料庫承擔了更高水平的支援和管理,以進一步減輕您的工作量。

無伺服器資料庫服務不僅管理基礎設施和資料庫管理系統軟體,還管理資源分配和您資料庫的許多策略。您無需精確計算資料庫需要多少儲存空間或需要多少資料庫例項來處理平均流量水平,系統可以根據其發現的條件做出響應。您無需管理擴充套件規則,而只需設定您想要的擴充套件級別的邊界,平臺就會在這些約束內智慧地進行擴充套件。

這聽起來與託管資料庫的描述類似,但實際上卻大相徑庭。使用無伺服器資料庫,您無需提前做出許多決策。主要地,您配置要保持的成本閾值以及您想要進行的任何特定的擴充套件調整,例如,始終至少有一個查詢執行器可用。系統會處理幾乎所有其他事情,以確保您的應用程式資料庫使用始終可用,效能符合標準,並響應當前的請求環境。

結論

特性傳統資料庫無伺服器資料庫
控制程度最低
資料隱私預設私有,可由管理員配置必須信任提供商處理資料
效能能夠實現非常高的效能,取決於硬體和配置如果需求出現峰值,效能可能會下降(可以透過備用查詢處理器緩解)
成本靜態,無論需求高低,資料庫成本相同可變,按實際使用量付費
可擴充套件性取決於配置,可能很複雜根據需求和服務設定自動擴充套件
管理責任對一切負責最小責任

在本文中,我們探討了傳統自管理資料庫和無伺服器資料庫服務之間的一些關鍵差異。我們討論了它們在使用者視角下的不同之處,以及在根據組織優先順序決定資料庫策略時必須考慮的權衡。

儘管無伺服器資料庫並非適用於所有型別的應用程式,但它們可以顯著簡化許多組織的資料庫管理和操作。瞭解它們何時可能是一個好的解決方案以及它們可能存在的缺點,可以幫助您在評估資料庫解決方案時確定是否應該考慮它們。

關於作者
Justin Ellingwood

賈斯汀·埃林伍德

自 2013 年以來,賈斯汀一直撰寫關於資料庫、Linux、基礎設施和開發者工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。
© . This site is unofficial and not affiliated with Prisma Data, Inc.