PostgreSQL
5 種託管 PostgreSQL 資料庫的方式
簡介
有許多方法可以取得 PostgreSQL 實例,供您的專案或組織使用。您可以學習如何自行安裝和設定 PostgreSQL,也可以付費給服務供應商來為您管理 PostgreSQL 資料庫。
本指南將涵蓋執行 PostgreSQL 的不同方式,以及它們各自的優點和缺點。透過比較不同的選項,您應該可以更清楚了解哪種類型的解決方案最適合您的專案或開發階段。
自行管理的 PostgreSQL
最彈性且最容易描述的選項是自行託管您的 PostgreSQL 伺服器。自行託管 PostgreSQL 意味著您在您控制的電腦上安裝和設定資料庫,就像任何其他軟體一樣。
自行託管讓您可以自由選擇要在哪裡安裝和執行資料庫。如果您選擇本節中的選項之一,您可以參考本指南,了解如何在您的系統上安裝 PostgreSQL。
在本機開發電腦上安裝 PostgreSQL
對於早期開發、測試和概念驗證,在本機開發機器上安裝 PostgreSQL 可以提供可靠、易於管理的資料庫存取。
託管選項 | 本機開發機器 |
---|---|
專案階段 | 開發 |
成本 | 無額外成本 |
效能 | 低 |
可擴展性 | 無 |
管理複雜度 | 低 |
其他注意事項 | 不需要網路設定。適用於 本機開發。 |
成本
在本機開發機器上設定 PostgreSQL 是免費的。您是從開發時已啟用的電腦執行資料庫。您只需要考量 PostgreSQL 在啟動並執行時將消耗的資源量。
效能
在本機開發機器上安裝 PostgreSQL 是一個低效能的選項。
您的資料庫將不容易或可靠地供其他使用者使用。您自己對資料庫的使用將受到硬體以及您可以為 PostgreSQL 提供的資源量所限制。這些考量通常在本地測試或開發時不是問題,但對於任何更複雜的應用都完全不足。
可擴展性
在本機開發機器上託管幾乎不具備可擴展性。您可以變更分配給 PostgreSQL 的資源量,但僅此而已。您可以升級開發機器,但從長遠來看,這既不實際也沒有特別大的用處。
管理複雜度
就複雜度而言,在本機機器上託管 PostgreSQL 通常相當簡單。大多數作業系統的安裝過程都經過深思熟慮,並且可以輕鬆啟動或停止產生的資料庫。但是,考慮到資源限制和消費者網路不穩定性,通常不值得費力將本機 PostgreSQL 實例設定為外部存取。
雖然在本機設定 PostgreSQL 並不複雜,但您仍然需要管理資料庫並在必要時執行任何升級。這些升級有時可能是安全性修補程式所必需的,如果您關心您的資料,您有責任追蹤這些實例。
其他注意事項
在本機安裝意味著即使網路中斷,您也可以從開發電腦存取資料庫。這在旅行時尤其有用。在本機存取資料可消除網路複雜性,讓您可以專注於開發而不是資料庫存取。
在本機開發電腦上安裝 PostgreSQL 很有用,但有一些非常明顯的限制。您無法輕鬆設定多使用者存取,並且資料庫的正常運作時間直接與電腦的可用性和網路穩定性相關。由於這些原因,在本機機器上安裝幾乎總是作為一種補充選項,旨在提高您的生產力和彈性,絕不是唯一的資料庫安裝方式。
在獨立伺服器上安裝 PostgreSQL
另一個自行託管選項是在獨立電腦上安裝和管理 PostgreSQL。一些常見的實作包括
- 安裝在專用伺服器上:PostgreSQL 設定為在專用電腦上執行的唯一服務。它可以存取機器上的所有資源。
- 與相關應用程式一起安裝:PostgreSQL 與需要它的應用程式一起安裝。對於小型部署來說,這是一個受歡迎的選擇,因為所有組件都可以在單一機器上管理。電腦的資源必須在 PostgreSQL 和其他正在執行的應用程式之間共用。
在獨立伺服器上安裝 PostgreSQL 看起來與在開發機器上安裝非常不同
託管選項 | 獨立伺服器 |
---|---|
專案階段 | 開發、預備、生產環境 |
成本 | 變動。購買或租用額外 伺服器加上額外的管理成本。 |
效能 | 高潛力 |
可擴展性 | 高潛力 |
管理複雜度 | 高 |
其他注意事項 | 最彈性的選項。也需要最多的 實務管理。如果您 擁有內部硬體或資料庫專業知識,可以投入管理,則是不錯的選擇。 您可以投入管理。 |
一個需要進一步強調的考量是,當您自行管理 PostgreSQL 時,安全性是您的責任。如果您已經處理組織其他部分的基礎架構、軟體和網路安全性,這可能不是問題。但是,如果您不太熟悉,保護 PostgreSQL 實例及其持有的資料可能是一項重大挑戰。在決定採取此路徑之前,請務必將此因素納入您的規劃中。
成本
在專用或共用機器上執行 PostgreSQL 需要您購買或租用將使用的伺服器空間。實際的伺服器可能位於貴組織的內部部署環境、共置在資料中心,或作為雲端供應商託管的虛擬機器(也稱為虛擬私有伺服器或 VPS)。
伺服器的成本可能會差異很大。低功耗 VPS 可能相當便宜,而多個專用伺服器將很快變得昂貴。但是,伺服器的成本並不是唯一的考量因素。您還必須將額外的管理成本納入考量。根據您的部署環境,這可能包括管理資料庫層、伺服器軟體和硬體的人事成本。這些成本將取決於您的可用性需求、託管環境和營運規模。
效能
在獨立伺服器上部署 PostgreSQL 具有非常高效能的潛力。由於執行 PostgreSQL 的機器的規格由您控制,因此您可以完全彈性地選擇符合您需求的硬體。如果您將來需要擴展,您可以升級硬體或購買額外的伺服器來擴展您的工作負載。
您還可以微調資料庫設定以獲得額外的效能優勢。您可以調整與記憶體管理、快取、開啟檔案處理、用戶端連線等相關的設定。雖然這為您提供了很大的能力,但利用這些選項需要時間、專業知識和實驗。與執行您自己的伺服器的其他方面一樣,好處受到您可以為專案的這一方面分配的時間和金錢的限制。
可擴展性
如上所述,在專用伺服器上執行可讓您應對資料庫系統上不斷變化的需求。您可以透過將額外的資源和硬體新增至資料庫伺服器來向上擴展,或者您可以透過在 PostgreSQL 伺服器池中平衡您的請求來向外擴展。這兩種選項都是應對不同類型壓力的合理方法。
管理複雜度
一般來說,擴展與效能調校具有相同的優點和限制:您擁有令人難以置信的彈性和能力,但您有責任管理成本和設定。任何需要額外硬體的變更(例如需求增加)都必須與主動監控相結合,以便您的組織有時間採購硬體、設定軟體並平衡您的工作負載。
其他注意事項
總之,管理您自己的 PostgreSQL 可能非常有效率、強大且彈性,但可能需要大量的專用時間和資源。此選項最適合具有內部基礎架構和伺服器專業知識的組織,他們希望控制資料庫的執行環境、設定和架構拓撲。
搭配 Docker 的 PostgreSQL
另一個自行託管選項是使用 Docker 將 PostgreSQL 作為容器執行。Docker 可讓您在本機或遠端機器上的隔離環境中執行 PostgreSQL。
託管選項 | Docker 容器 |
---|---|
專案階段 | 開發、預備、生產環境 |
成本 | 變動。購買或租用額外 伺服器加上額外的管理成本。 |
效能 | 中高 |
可擴展性 | 高 |
管理複雜度 | 中高 |
其他注意事項 | 容器化基礎架構在複雜性方面可能差異很大 就複雜性而言。雖然容器使 許多事情變得更容易,尤其是在開發期間 和預備環境中,它們也需要經驗和 複雜的協調才能在生產環境中良好運作。 對於生產工作負載,容器很可能 只有在您已經投入 Kubernetes 等容器協調時,才是好的選擇。 |
與傳統本機安裝相比,使用 Docker 的一些優點包括
- 使用官方 PostgreSQL Docker 映像執行 PostgreSQL 比安裝 PostgreSQL 需要更少的精力。
- Docker 可讓您跨多個環境重現完全相同的資料庫設定,這對於需要相同 PostgreSQL 設定的專案協作團隊非常有用。
- 您可以使用 Docker 控制分配給 PostgreSQL 的 CPU、記憶體和儲存資源。
- Docker 減少了 PostgreSQL 與機器上執行的其他軟體之間不相容的可能性。
在本機或遠端機器上使用 Docker 安裝 PostgreSQL 是相似的,儘管根據您是否將 PostgreSQL 用於生產工作負載,還有一些額外的考量。
雖然 Docker 簡化了執行 PostgreSQL 的某些方面,但需要注意一些權衡取捨
- 根據您的設定,使用 Docker 執行可能會增加網路設定的複雜性。
- Docker 新增了一個額外的抽象層,這需要額外的安全性考量,並且有可能使疑難排解變得不那麼直接。
容器與 Kubernetes
透過 Kubernetes,您可以在由多個伺服器組成的叢集上執行 Docker 容器。如果叢集中的一台伺服器需要停機維護,只要底層資料分割區可存取,Kubernetes 就會將 PostgreSQL 容器移至另一台伺服器。您也可以在 Kubernetes 上執行使用 PostgreSQL 的應用程式,這可以減少應用程式與 PostgreSQL 之間的網路延遲。
託管服務
自行執行 PostgreSQL 的替代方案是從供應商租用或購買 PostgreSQL 資料庫。託管服務可讓您輕鬆地將資料庫作為服務或 API 使用,而無需擔心 PostgreSQL 軟體或底層伺服器的幕後管理。
存在不同類型的託管服務來滿足不同的需求。本節將涵蓋由託管或雲端供應商、第三方託管資料庫和應用程式平台提供的資料庫提供的服務。
由雲端供應商管理的資料庫
也許最常見的託管 PostgreSQL 類型是由雲端或託管供應商提供的類型。這些範例包括 Amazon Web Service 的 RDS(關聯式資料庫服務)、Google Cloud Platform 的 Cloud SQL 和 Azure Database。
託管選項 | 雲端供應商託管 |
---|---|
專案階段 | 開發、預備、生產環境 |
成本 | 高度變動,取決於您的選擇 和使用量。 |
效能 | 高度變動 |
可擴展性 | 高 |
管理複雜度 | 低 |
其他注意事項 | 通常由 可以執行您的 應用程式的同一雲端供應商提供的高度可擴展解決方案。這允許額外的控制 網路和效能,而無需 自行執行伺服器的繁重工作。 |
雲端供應商提供各種微調的 PostgreSQL 資料庫,以在其資料中心執行,並與其其他服務無縫協作。
雲端供應商
以下雲端供應商提供託管 PostgreSQL 資料庫,您可以根據需要購買、設定和擴展
伺服器和大多數 PostgreSQL 將由託管供應商管理,而您將能夠設定擴展選項、調整設定和管理存取權限。您可以將資料庫設定為可從網際網路連線,或將其直接連線到由同一供應商管理的應用程式。
成本
由雲端供應商管理的 PostgreSQL 資料庫可能具有廣泛的成本範圍。在低端,一些供應商提供免費層級,效能和正常運作時間最少。在高端,如果您的流量意外激增,自動擴展以滿足任何需求可能會在一夜之間花費您數千美元。與雲端中的大多數事物一樣,您的實際使用量將影響您每月的帳單。許多雲端都提供成本警報,甚至在使用量/成本超過一定點時自動關閉。監控您的使用量並設定截止點以管理資料庫系統的營運成本非常重要。
可擴展性
雖然有時難以預測成本,但好消息是雲端中的擴展非常容易。分配給資料庫的資源可以隨時設定。這意味著您可以透過變更帳戶中的設定來增加儲存容量、記憶體和運算能力,或管理資料的複本數量。動態擴展資料庫資源以根據目前需求的能力是強大的功能之一,如果未仔細設定,可能會導致高昂的成本。這可讓您始終有能力滿足您的需求,前提是您可以支付成本。
效能
與可擴展性相關,效能是雲端中另一個非常彈性的領域。您通常可以根據您的使用模式微調對資料庫效能影響最大的設定。如果目前的設定效能不足,您也可以分配額外資源。將資料庫與使用它們的應用程式共置也有助於在資料庫和應用程式之間獲得良好的網路效能。
管理複雜度
就管理複雜度而言,雲端託管的資料庫相當簡單。您付費給供應商,讓他們為您承擔大部分管理負擔。雖然您仍然需要控制您的帳戶和影響資料庫的設定,但硬體、作業系統和大多數 PostgreSQL 設定都將為您處理。這可以在大幅減少使用資料庫的管理負擔方面產生巨大影響,但在某些特殊情況下,您可能無法存取您想要的調整級別。
其他注意事項
一般來說,付費使用雲端供應商託管的 PostgreSQL 資料庫通常是一個很有吸引力的選項。它在擴展性和效能方面提供了極大的彈性,同時管理工作量也較少。選擇雲端供應商的資料庫服務的缺點是,在某些規模下,最終支付的費用可能會比其他方式更高。此外,如果您的工具開始過度依賴供應商特定的功能,則可能會有被當前供應商綁架的風險。
第三方託管資料庫
除了直接向您的雲端供應商購買資料庫之外,您還可以選擇透過第三方供應商來管理您的資料庫。在大多數情況下,此選項會將資料庫部署和管理到您選擇的雲端或多個雲端上,從而將資料庫管理與底層資源供應商分離。
託管選項 | 第三方託管 |
---|---|
專案階段 | 開發、預備、生產環境 |
成本 | 差異很大,取決於您的選擇 和使用量。 |
效能 | 高度變動 |
可擴展性 | 高 |
管理複雜度 | 低 |
其他注意事項 | 第三方託管資料庫具有許多 與雲端供應商提供的資料庫相同的優點。 然而,透過第三方管理您的資料庫, 您可以將資料庫管理與底層雲端供應商 分離開來。 這可以讓未來遷移到不同的 主機變得更容易,並且有時可以提供 更強大的管理選項。 |
由第三方供應商管理的資料庫,通常使用與雲端供應商本身提供的資料庫相同的基本組件。然而,第三方供應商通常與多個雲端合作,在您的帳戶中啟動資源,並且如果您需要,通常會為您提供更低層級的存取權限。該服務不會使用雲端供應商提供的資料庫,而是在供應商上啟動虛擬伺服器,並使用這些伺服器安裝和配置 PostgreSQL。他們可以調整作業系統上的設定,並讓您存取託管您執行個體的伺服器。第三方 PostgreSQL 供應商的一個例子是 ElephantSQL,它目前可以管理 四個不同雲端 中的執行個體。
第三方服務
以下第三方供應商提供託管的 PostgreSQL 資料庫,您可以根據需求購買、配置和擴展
伺服器和大多數 PostgreSQL 將由供應商管理,而您將能夠設定資料庫運行的雲端平台、擴展選項、調整設定和管理存取權限。您可以將資料庫配置為可從網際網路連線,或將它們直接連線到由同一供應商管理的應用程式。
成本
在成本方面,第三方解決方案通常也具有高度的變動性。作為使用者,您將必須支付部署到雲端的運算資源費用,以及資料庫管理服務收取的管理成本。由於您向雲端供應商支付的是更基礎的資源而不是託管資料庫,因此這方面的成本可能會較低。但是,與管理服務相關的成本可能會使總累積成本在某些價格點上更高。您將需要了解每一方在不同規模下的擴展方式,以確定您的總成本。
效能
您的資料庫效能特徵也可能差異很大。由於您的管理服務安裝在雲端運算執行個體上,因此您的供應商除了 PostgreSQL 設定外,還可以調整伺服器配置。這表示他們可能能夠調整某些設定,以更合理地符合您的需求。
另一方面,他們可能無法存取足夠調整所需的虛擬化和硬體組件的低層級。強烈建議您針對雲端供應商提供的原生資料庫測試您的效能。
擴展性
第三方託管資料庫的擴展性通常非常好。由於這些供應商可以部署在任何具有足夠資源的運算執行個體上,因此它們有時可以為您提供比雲端供應商公開的更廣泛的擴展選項。如果您的擴展原因之一是為了提高可用性,許多第三方服務都有能力跨越多個可用區域甚至供應商。
管理複雜度
用於管理資料庫的第三方服務具有一系列複雜度。由於此選項需要在兩個不同的供應商(託管運算執行個體的雲端和資料庫管理服務)之間進行協調,因此與使用雲端供應商提供的原生資料庫服務相比,複雜度會固有地增加。
一些管理服務將自己定位為簡化的選項,以與共用虛擬主機非常相似的方式隱藏複雜性。其他解決方案則利用作業系統可存取的事實,向使用者公開各種配置選項。許多服務同時提供這兩種體驗,讓使用者可以找到自己偏好的複雜度層級。
其他注意事項
將資料庫管理與底層資源供應商分離,既有優點也有缺點。
如果您的資料庫管理服務抽象化了底層,您在遷移到不同的雲端供應商時可能會擁有更大的彈性。這種抽象化也使您能夠選擇您感到舒適的複雜度層級。您可以使用資料庫管理服務提供的完整抽象化和介面,但由於您也可以存取為您佈建的資料庫伺服器,因此您可以登入並根據需要修改資料庫伺服器。資料庫管理服務也可能提供一個簡單的介面來管理這些作業系統層級的調整。
這種設定的缺點來自於您將依賴多方來確保資料庫的正確運作。這可能會增加服務中斷的機會。您也可能會錯過雲端供應商提供的資料庫服務可用的任何底層最佳化。您的資料庫管理服務將只能存取您的雲端供應商向他們公開的內容,並且他們將無法最佳化底層虛擬化或硬體層。
總體而言,使用第三方管理服務是關於偏好和測試。您將需要測試效能,並了解定價結構在各種使用層級下如何影響您。
總結
以下是此處討論的各種選項之間比較的概述
託管資料庫的正確選擇很大程度上取決於您的應用程式需求、您的開發階段以及您自行管理 PostgreSQL 的能力。不同的選擇在這些因素之間提供權衡,使其在特定時間或對於特定組織更為適合。
一旦您擁有 PostgreSQL 資料庫,您就可以使用 Prisma Client 從您的 JavaScript 或 TypeScript 應用程式中管理它。了解如何將 Prisma 新增到現有專案,或如何從頭開始使用 Prisma。