

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

# Amazon DocumentDB 無伺服器的運作方式
<a name="docdb-serverless-how-it-works"></a>

**Topics**
+ [概觀](#docdb-serverlerss-overviewn)
+ [Amazon DocumentDB 叢集的組態](#docdb-serverlerss-configuration)
+ [Amazon DocumentDB 無伺服器擴展容量](#docdb-serverless-scaling-capacity)
+ [Amazon DocumentDB 無伺服器擴展](#docdb-serverless-scaling)
+ [閒置狀態 (0.5 DCUs)](#docdb-serverlerss-idle-state)

## 概觀
<a name="docdb-serverlerss-overviewn"></a>

Amazon DocumentDB Serverless 適用於要求最嚴苛、高度可變的工作負載。例如，您的資料庫使用量可能在短時間內很大，然後是長時間的輕度活動或完全沒有活動。某些範例是具有定期促銷活動的零售網站、遊戲或體育網站，以及在需要時產生報告的資料庫。其他則為開發和測試環境，及用量可能會迅速增加的新應用程式。對於這類類似案例和許多其他情況，並不一定可以使用佈建的模型事先正確設定容量。如果您過度佈建且具有未使用的容量，也可能會產生較高的成本。

相反地，DocumentDB 佈建叢集適用於穩定的工作負載。使用佈建叢集時，您可以選擇具有預先定義記憶體數量、CPU 電源、I/O 頻寬等的執行個體類別。若您的工作負載發生變化，您可以手動修改寫入器和讀取器的執行個體類別。當您可以在預期的耗用模式之前調整容量，佈建的模型就能順利運作，並且在您變更集中寫入器和讀取器的執行個體類別時，短暫中斷是可以接受的。

DocumentDB 無伺服器從頭開始架構，以支援可立即擴展的無伺服器叢集。DocumentDB 無伺服器旨在提供與佈建寫入器和讀取器相同的安全性和隔離程度。這些方面在多租戶無伺服器雲端環境中至關重要。動態擴展機制的額外負荷很小，因此可以快速回應資料庫工作負載的變化。其功能強大，足以滿足大幅增加的處理需求。

透過使用 DocumentDB 無伺服器，您可以建立 DocumentDB 叢集，而不會鎖定每個寫入器和讀取器的特定資料庫容量。您指定最小和最大的容量範圍。DocumentDB 會在該容量範圍內擴展叢集中的每個 DocumentDB 無伺服器寫入器或讀取器。透過使用每個寫入器或讀取器都可以動態擴展的多可用區域叢集，您可以利用動態擴展和高可用性。

DocumentDB 無伺服器會根據您的最小和最大容量規格自動擴展資料庫資源。擴展速度很快，因為大多數擴展事件作業皆將寫入器或讀取器保留在同一主機上。在極少數情況下，DocumentDB 無伺服器寫入器或讀取器會從一個主機移至另一個主機，DocumentDB 無伺服器會自動管理連線。您無需變更資料庫用戶端應用程式程式碼或資料庫連線字串。

透過 DocumentDB 無伺服器，與佈建叢集一樣，儲存容量和運算容量是分開的。當我們參考 DocumentDB 無伺服器容量和擴展時，一律會運算增加或減少的容量。因此，即使 CPU 和記憶體容量縮減規模到低等級，您的叢集也可以包含許多 TB 的資料。

您無需佈建和管理資料庫伺服器，而是指定資料庫容量。根據您的工作負載，每個 DocumentDB 無伺服器寫入器或讀取器的實際容量會隨著時間而不同。如需有關該機制的詳細資料，請參閱 [Amazon DocumentDB 無伺服器擴展](#docdb-serverless-scaling)。

## Amazon DocumentDB 叢集的組態
<a name="docdb-serverlerss-configuration"></a>

對於每個 Amazon DocumentDB 叢集，您可以選擇 DocumentDB 無伺服器容量、佈建容量或兩者的任意組合。

您可以設定包含 DocumentDB 無伺服器和佈建容量的叢集，稱為混合組態叢集。例如，假設您需要比 DocumentDB 無伺服器寫入器更多的讀取/寫入容量。在這種情況下，您可以使用非常大的已佈建寫入器來設定叢集。然後，您仍然可以將 DocumentDB 無伺服器用於讀取器。或者假設叢集的寫入工作負載有變化，但讀取工作負載穩定。在此情況下，您可以使用 DocumentDB 無伺服器寫入器和一或多個佈建讀取器來設定叢集。

您也可以設定叢集，其中所有容量都由 DocumentDB Serverless 管理。若要這樣做，您可以建立新的叢集，並從頭開始使用 DocumentDB 無伺服器。或者，您可以將現有叢集中的所有佈建容量取代為 DocumentDB 無伺服器。如需使用 DocumentDB 無伺服器建立新叢集或將現有叢集切換至 DocumentDB 無伺服器的程序，請參閱 [建立使用 Amazon DocumentDB Serverless 的叢集](docdb-serverless-create-cluster.md)和 [遷移至 Amazon DocumentDB 無伺服器](docdb-serverless-migrating.md)。

如果您在叢集中完全不使用 DocumentDB 無伺服器，則會佈建叢集中的所有寫入器和讀取器。這是大多數使用者熟悉的最常見叢集類型。已佈建容量是常數。費用相對容易預測。但是，您必須提前預測您需要多少容量。在某些情況下，您的預測可能不準確，或者您的容量需求可能會發生變化。在這些情況下，您的叢集可能會變得佈建不足 （比您想要的還慢） 或過度佈建 （比您想要的更昂貴）。

## Amazon DocumentDB 無伺服器擴展容量
<a name="docdb-serverless-scaling-capacity"></a>

Amazon DocumentDB Serverless 的度量單位是 DocumentDB 容量單位 (DCU)。DocumentDB 無伺服器擴展容量與您用於佈建叢集的執行個體類別無關。

每個 DCU 都是大約 2 GB (GiB) 記憶體、對應 CPU 和聯網的組合。您可以使用此度量單位指定資料庫容量範圍。`ServerlessDatabaseCapacity` 和 `DCUUtilization` CloudWatch 指標可協助您判斷資料庫實際使用的容量，以及該容量落在指定範圍內的位置。

每個 DocumentDB 無伺服器寫入器或讀取器隨時都有容量。容量是代表 DCUs浮點數。每當寫入器或讀取器擴展時，容量都會增加或減少。此值每秒測量一次。對於您要使用 DocumentDB 無伺服器的每個叢集，您可以定義容量範圍：每個 DocumentDB 無伺服器寫入器或讀取器可以擴展的最小和最大容量值。叢集中每個 DocumentDB 無伺服器寫入器或讀取器的容量範圍都相同。每個 DocumentDB 無伺服器寫入器或讀取器都有自己的容量，落在該範圍內。

DocumentDB 5.0.0 僅支援 DocumentDB 無伺服器 (8.0 不支援），容量範圍為 0.5 - 256 DCUs。

您可以定義的最小 DocumentDB 無伺服器容量為 0.5 DCUs。如果小於或等於支援的最大容量值，您可以指定較高的數字。將最小容量設定為少量，可讓輕度載入的叢集使用最少的運算資源。同時，它們隨時準備好立即接受連線，並在忙碌時擴充規模。

我們建議將最小值設定為允許每個寫入器或讀取器在緩衝集區中保留應用程式的工作集的值。這樣，緩衝集區的內容在閒置期間不會被丟棄。如需選擇擴展容量範圍時的所有考量，請參閱[選擇 DocumentDB 無伺服器叢集的擴展容量範圍](docdb-serverless-scaling-config.md#docdb-serverless-scaling-capacity-choosing)。

根據您在多可用區域部署中設定讀取器的方式，讀取器的容量可以繫結至寫入器的容量，也可以獨立地調整。如需有關如何執行此作業的詳細資訊，請參閱 [檢視和修改無伺服器讀取器的提升層](docdb-serverless-managing.md#docdb-serverless-promo-tier)。

監控 DocumentDB 無伺服器涉及測量叢集中寫入器和讀取器隨時間的容量值。若資料庫未縮減規模至最小容量，則可採取諸如調整最小容量和最佳化資料庫應用程式等作業。如果資料庫持續達到其最大容量，則可採取諸如增加最大值之類的動作。您還可以最佳化資料庫應用程式，並將查詢負載分佈到更多讀取器中。

DocumentDB 無伺服器容量的費用是以 DCU 小時為單位衡量。如需如何計算 DocumentDB 無伺服器費用的資訊，請參閱 [Amazon DocumentDB 定價](https://aws.amazon.com//documentdb/pricing)。假設叢集中的寫入器和讀取器總數為 n。在這種情況下，當您未執行任何資料庫操作時，叢集會耗用大約 n x 的DCUs。Amazon DocumentDB 本身可能會執行導致少量負載的監控或維護操作。當資料庫以完整容量執行時，該叢集會耗用不超過 n x 個最大 DCUs。

如需選擇適當最小和最大 DCU 值的詳細資訊，請參閱 [選擇 DocumentDB 無伺服器叢集的擴展容量範圍](docdb-serverless-scaling-config.md#docdb-serverless-scaling-capacity-choosing)。您指定的最小和最大 DCU 值也會影響某些 Amazon DocumentDB 執行個體限制。如需容量範圍與執行個體限制之間互動的詳細資訊，請參閱 [Amazon DocumentDB 無伺服器執行個體限制](docdb-serverless-instance-limits.md)。

## Amazon DocumentDB 無伺服器擴展
<a name="docdb-serverless-scaling"></a>

對於每個 DocumentDB 無伺服器寫入器或讀取器，Amazon DocumentDB 會持續追蹤 CPU、記憶體和網路等資源的使用率。這些測量統稱為負載。負載包括應用程式執行的資料庫作業。它還包括資料庫伺服器和 Amazon DocumentDB 管理任務的背景處理。當容量受到這些限制時，DocumentDB 無伺服器會擴展。DocumentDB 無伺服器也會在偵測到效能問題時向上擴展，因為這樣可以解決。您可以使用 中的程序，監控資源使用率及其如何影響 DocumentDB 無伺服器擴展[監控 Amazon DocumentDB 無伺服器](docdb-serverless-monitoring.md)。

負載可能因叢集中的寫入器和讀取器而有所不同。寫入器會處理寫入操作，並對叢集磁碟區執行所有資料修改。讀者可以處理唯讀請求。

擴展是增加或減少資料庫 DocumentDB 無伺服器容量的操作。有了 DocumentDB 無伺服器，每個寫入器和讀取器都有自己的目前容量值，以 DCUs測量。當寫入器或讀取器目前的容量太低而無法處理負載時，DocumentDB 無伺服器會將寫入器或讀取器擴展到更高的容量。當其目前容量高於需要時，它會將寫入器或讀取器縮減到更低的容量。

DocumentDB 無伺服器可以增量增加容量。當您的工作負載需求開始達到寫入器或讀取器的目前資料庫容量時，DocumentDB 無伺服器會增加該寫入器或讀取器DCUs 數量。DocumentDB 無伺服器會以所需的增量擴展容量，為消耗的資源提供最佳效能。擴展會以小至 0.5 DCUs的增量進行。目前容量越大，擴展增量就越大，因此可以發生更快的擴展。

由於 DocumentDB 無伺服器擴展非常頻繁、精細且不中斷，因此不會在 中造成離散事件 AWS 管理主控台。反之，您可以測量 Amazon CloudWatch 指標，例如 `serverlessDatabaseCapacity`和 `DCUUtilization`，並追蹤其隨時間的最小值、最大值和平均值。若要進一步了解如何監控 DocumentDB 無伺服器，請參閱 [監控 Amazon DocumentDB 無伺服器](docdb-serverless-monitoring.md)。

向上或向下擴展可能由以下原因造成：
+ 記憶體使用率
+ CPU 使用率
+ 網路使用率
+ 儲存使用率

您可以監控這些在 DocumentDB 無伺服器執行個體上向上/向下擴展的原因。如需詳細資訊，請參閱[監控 Amazon DocumentDB 無伺服器](docdb-serverless-monitoring.md)。

您可以選擇與關聯的寫入器同時擴展讀取器，也可以獨立於寫入器進行擴展。您可以透過為該讀取器指定提升層來執行此操作。
+ DocumentDB 無伺服器讀取器在提升層 0 和 1 中，與寫入器同時擴展。這種擴展行為使優先順序層 0 和 1 中的讀取器成為可用性的理想選擇。這是因為它們總是調整到適當的容量，以便在發生容錯移轉時從寫入器處接管工作負載。
+ 提升層 2 至 15級中的讀取器可獨立於寫入器擴展。每個讀取器都會保持在您為叢集指定的最小和最大 DCU 值內。當讀取器獨立於關聯的寫入器資料庫進行擴展時，它可能會處於閒置狀態並縮減規模，而寫入器繼續處理大量交易。如果在較低的提升層中沒有其他讀取器可用，則它仍可用作容錯移轉目標。但是，如果將其提升為寫入器，則可能需要擴充規模以處理寫入器的全部工作負載。

如需檢視和變更無伺服器執行個體提升方案的詳細資訊，請參閱 [檢視和修改無伺服器讀取器的提升層](docdb-serverless-managing.md#docdb-serverless-promo-tier)。

當資料庫連線開啟、交易正在進行等時，可能會發生 DocumentDB 無伺服器擴展。DocumentDB 無伺服器不會等待安靜點開始擴展。擴展不會中斷正在進行的任何資料庫作業。

如果您的工作負載需要的讀取容量超過單一寫入器和單一讀取器的可用容量，您可以將多個 DocumentDB 無伺服器讀取器新增至叢集。每個 DocumentDB 無伺服器讀取器可以在您為叢集指定的最小和最大容量值範圍內進行擴展。您可以使用叢集的讀取器端點，將唯讀工作階段導向讀取器，並減少寫入器的負載。

DocumentDB Serverless 是否執行擴展，以及擴展開始後的速度有多快，也取決於叢集的最小和最大 DCU 設定。此外，這取決於讀取器是設定為與寫入器一起擴展還是獨立擴展。如需擴展組態的詳細資訊，請參閱 [Amazon DocumentDB 無伺服器擴展組態](docdb-serverless-scaling-config.md)。

## 閒置狀態 (0.5 DCUs)
<a name="docdb-serverlerss-idle-state"></a>

當 Amazon DocumentDB 無伺服器寫入器或讀取器閒置時，如果叢集的 MinCapacity 設定為 0.5，則 DocumentDB 無伺服器執行個體支援縮減至閒置狀態 0.5 DCUs。

在閒置狀態下，DocumentDB 無伺服器執行個體沒有足夠的 CPU 運算容量來支援大多數生產工作負載，但已準備好快速擴展以支援新的工作負載。在非閒置狀態下，DocumentDB 無伺服器執行個體通常至少需要 1.0 - 2.5 DCUs。因此，當 DocumentDB 無伺服器執行個體從閒置狀態擴展到非閒置狀態時，它們會直接擴展到 1.0 - 2.5 DCUs（如果較低，則為 MaxCapacity 的值）。

為了在閒置時支援縮減至 0.5 個 DCUs，如果 MinCapacity 設定為小於或等於 1.0 個 DCUs執行個體限制會受到限制。如需 MinCapacity 組態如何影響限制的詳細資訊，請參閱 [Amazon DocumentDB 無伺服器執行個體限制](docdb-serverless-instance-limits.md)。