共用方式為


Azure DocumentDB 的擴展性

Azure DocumentDB 提供垂直與水平擴展叢集的能力。 雖然運算叢集層與儲存磁碟在功能上相互依賴,但運算與儲存的可擴展性與成本是解耦的。

垂直調整

垂直縮放帶來以下好處:

  • 應用程式團隊不一定有明確的路徑來邏輯地分段資料。 此外,邏輯分片是針對每個集合進行定義的。 在包含多個未分片集合的資料集中,將資料劃分的資料建模可能很快變得繁瑣。 簡單地將叢集擴展,可以繞過邏輯分片的需求,同時滿足應用程式日益增長的儲存與運算需求。
  • 垂直縮放不需要資料重新平衡。 實體分片數量保持不變,僅增加叢集容量,且不影響應用程式。
  • 擴展與縮減是零停機操作,且服務不會中斷。 不需要更改應用程式,穩態操作可以不受干擾地持續進行。
  • 在已知活動低的時間窗口內,計算資源也可以被縮減。 再次,縮減規模避免了在較少實體分片間重新平衡資料的需求,並且實現零停機不中斷服務的操作。 同樣地,叢集縮減後也不需要做應用程式變更。
  • 最重要的是,運算與儲存可以獨立擴展。 若需要更多核心與記憶體,磁碟大小可維持不變,叢集層級可擴大。 同樣地,如果需要更多儲存空間和 IOPS,叢集層可以保持原狀,儲存容量則可以獨立擴充。 如有需要,計算與儲存可獨立擴展,以個別優化各元件的需求,而不會因彈性需求影響另一方。

水平調整

最終,應用程式成長到垂直擴展已不夠的程度。 工作負載需求可能超過最大叢集層級的容量,最終需要更多分片。 Azure DocumentDB 的水平縮放帶來以下好處:

  • 邏輯分片資料集不需要使用者介入來平衡底層實體分片的資料。 該服務會自動將邏輯分片映射到實體分片。 當新增或移除節點時,資料會在資料庫中自動且不顯眼地重新平衡。
  • 請求會自動路由到擁有查詢資料雜湊範圍的相關實體分片。
  • 地理分布式叢集具有同質多節點配置。 因此,邏輯到實體的分片映射在叢集的主區域與副本區域間是一致的。

運算與儲存擴展

計算和記憶體資源 對 Azure DocumentDB 的讀取操作影響比磁碟 IOPS 更大。

  • 讀取操作會先在計算層查詢快取,當資料無法從快取取回時,會退回磁碟。 對於每秒讀取率較高的工作負載,透過擴展叢集層以獲取更多 CPU 和記憶體資源,能帶來更高的吞吐量。
  • 除了讀取吞吐量外,每次讀取操作資料量大的工作負載也可從叢集運算資源的擴展中受益。 例如,擁有更多記憶體的叢集層級,促進每份文件的有效載荷大小增加,以及每個回應中較小的文件數量增加。

磁碟 IOPS 對 Azure DocumentDB 的寫入操作影響比計算資源的 CPU 和記憶體容量還要大。

  • 寫入操作總是將資料持久化到磁碟(此外還會將資料持久化於記憶體以優化讀取)。 更大且 IOPS 更高的磁碟能提供更高的寫入吞吐量,尤其是在大規模運行時。
  • 該服務支援每個分片最多 32 TB 磁碟,且每分片可提供更多 IOPS,以利於寫入重的工作負載,尤其是在大規模運行時。

儲存負載龐大且磁碟容量大

每個叢集層級沒有最低儲存需求

如前所述,儲存資源與運算資源在計費與配置時是解耦的。 雖然兩者是以整體方式運作,但也可單獨縮放。 M30 叢集層可配置 32 TB 硬碟。 同樣地,M200 叢集層可配置 32 GB 磁碟,以優化儲存與運算成本。

大容量硬碟(32 TB 以上)的低 TCO

通常,NoSQL 資料庫每個實體分片的儲存空間限制在 4 TB。 Azure DocumentDB 在 32 TB 磁碟下可提供高達 8 倍的容量。 對於儲存量大的工作負載,每個實體分片 4TB 的儲存容量需要龐大的運算資源來維持工作負載的儲存需求。 運算比儲存更昂貴,且因服務容量限制而過度配置運算會迅速推高成本。

我們來考慮一個儲存量大、資料量達 200 TB 的工作負載。

每個分片的儲存容量 維持 200 TB 所需的最小分片
4 TiB 50
32 TiB 7

磁碟越大,計算需求減少幅度會大幅降低。 雖然可能需要超過最低數量的實體分片以維持工作負載的吞吐量需求,但即使分片數量增加一倍或三倍,也比擁有 50 個分片叢集且磁碟較小的部分更具成本效益。

使用大型磁碟時跳過儲存階層化

對於在儲存密集的情境中,應對計算成本的即時措施是將資料進行「分層」。 交易資料庫中的資料僅限於最常被存取的「熱」資料,而較大量的「冷」資料則被分離到冷儲存庫。 這造成了操作的複雜性。 效能也難以預測,且取決於所存取的資料層級。 此外,整個系統的可用性取決於熱資料儲存與冷資料儲存結合後的韌性。 當使用大型磁碟時,就不需要階層式儲存,因為儲存高負荷工作負載的成本會被降低。

後續步驟