為基於 Lambda 的應用程式選擇資料庫服務 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為基於 Lambda 的應用程式選擇資料庫服務

許多無伺服器應用程式需要存放和擷取資料。 AWS 提供多種資料庫選項,可與 Lambda 函數搭配使用。最熱門的兩個選擇是 NoSQL 資料庫服務 Amazon DynamoDB,以及傳統的關聯式資料庫解決方案 Amazon RDS。下列各節介紹了這兩種服務與 Lambda 搭配使用時的主要差異,並協助您為無伺服器應用程式選擇合適的資料庫服務。

若要進一步了解 提供的其他資料庫服務 AWS,以及更普遍地了解其使用案例和權衡,請參閱選擇 AWS 資料庫服務。所有 AWS 資料庫服務都與 Lambda 相容,但並非所有資料庫服務都適合自身特定使用案例。

選取與 Lambda 搭配使用的資料庫服務時,您有哪些選擇?

AWS 提供多個資料庫服務。對於無伺服器應用程式,最熱門的兩個選擇是 DynamoDB 和 Amazon RDS。

  • DynamoDB 是一種全受管 NoSQL 資料庫服務,針對無伺服器應用程式進行了最佳化。該服務可在任何規模下提供無縫擴展且穩定的個位數毫秒級效能。

  • Amazon RDS 是一種受管關聯式資料庫服務,支援包括 MySQL 與 PostgreSQL 在內的多種資料庫引擎。該服務透過受管基礎結構提供熟悉的 SQL 功能。

您已知道自己需求時的建議

如果您已經清楚自己的需求,以下是基本建議:

對於需要穩定低延遲效能、自動擴展且不涉及複雜聯結或交易的無伺服器應用程式,建議選擇 DynamoDB。由於其無伺服器特性,該服務特別適合基於 Lambda 的應用程式。

若需複雜的 SQL 查詢、聯結操作,或是現有應用程式已使用關聯式資料庫時,Amazon RDS 是更佳選擇。但請注意,將 Lambda 函式連線至 Amazon RDS 需要額外的組態,並且可能會影響冷啟動時間。

選取資料庫服務時應考量的事項

為 Lambda 應用程式選取 DynamoDB 或是 Amazon RDS 時,建議考量下列因素:

  • 連線管理與冷啟動

  • 資料存取模式

  • 查詢複雜性

  • 資料一致性需求

  • 擴展特性

  • 成本模型

透過了解這些因素,您可以選取最符合自身特定使用案例需求的選項。

  • DynamoDB 對所有操作均使用 HTTP API。Lambda 函式無需維護連線即可發出即時請求,具備更佳的冷啟動效能。每個請求都會使用 AWS 登入資料進行身分驗證,而不會產生連線額外負荷。

  • 由於 Amazon RDS 使用的是傳統資料庫連線,因此需要管理連線集區。這可能會影響冷啟動,因為新的 Lambda 執行個體需要建立連線。您需實作連線集區策略,並且可能要使用 Amazon RDS Proxy 來有效管理連線。請注意,使用 Amazon RDS Proxy 會額外產生費用。

  • DynamoDB 最適用於已知的存取模式和單一資料表設計。其非常適合需要根據主索引鍵或次要索引,以穩定低延遲方式存取資料的 Lambda 應用程式。

  • Amazon RDS 具備彈性,能因應複雜查詢與多變的存取模式。當您的 Lambda 函式需要跨多個資料表執行獨特的客製化查詢或複雜的跨表聯結時,其適用性更佳。

  • DynamoDB 在基於鍵值的簡易操作及預先定義的存取模式方面表現出色。複雜的查詢必須圍繞索引結構進行設計,並且必須在應用程式程式碼中處理聯結。

  • Amazon RDS 支援包含聯結、子查詢與彙總運算的複雜 SQL 查詢。當需要複雜的資料操作時,此優勢可以簡化您的 Lambda 函式程式碼。

  • DynamoDB 提供最終一致性與強一致性選項,其中強一致性適用於單一項目讀取。雖然支援交易功能,但存在部分限制。

  • Amazon RDS 提供完整的原子性、一致性、隔離性與持久性 (ACID) 合規保障,支援複雜交易。如果您的 Lambda 函式需要複雜的交易或跨多筆記錄的強一致性,Amazon RDS 可能更加合適。

  • DynamoDB 會根據您的工作負載自動擴展。其無需預先佈建,即可處理 Lambda 函式中的流量突增情況。您可以使用隨需容量模式,僅需為所使用的容量付費,完全符合 Lambda 的擴展模型。

  • Amazon RDS 會根據您選擇的執行個體規格,提供固定的容量。如果多個 Lambda 函式同時嘗試連線,則可能會超過連線配額。您需謹慎管理連線集區,並可能要實作重試邏輯。

  • DynamoDB 的定價模式與無伺服器應用程式高度契合。若使用隨需容量,您只需為 Lambda 函式執行的實際讀取與寫入作業付費。閒置時間不收取任何費用。

  • Amazon RDS 會針對執行中的執行個體收費,無論用量如何。對於無伺服器應用程式中典型的零星工作負載,這可能較不具成本效益。不過,對於輸送量高且用量穩定的工作負載,其可能更經濟實惠。

開始使用所選資料庫服務

您已了解在 DynamoDB 和 Amazon RDS 之間進行選擇的標準,以及二者之間的主要差異。接下來,您可以選取最符合自身需求的選項,並使用下列資源來協助自己開始使用所選的資料庫服務。

DynamoDB
透過下列資源開始使用 DynamoDB
Amazon RDS
透過下列資源開始使用 Amazon RDS