將非關聯式資料庫中的虛擬核心或 vCPU 數目轉換為 Azure Cosmos DB RU/s

適用於:NoSQL

適用於: MongoDB

本文說明當您在考慮進行資料移轉,卻只知道現有資料庫複本集中的虛擬核心或 vCPU 計數總計時,要如何估計 Azure Cosmos DB 的要求單位 (RU/秒)。 當您將一或多個複本集移轉至 Azure Cosmos DB 時,保留在這些複本集內的每個集合都會儲存為由具有 4 倍複寫係數的分區叢集所組成的 Azure Cosmos DB 集合。 您可以在這個資料分割和縮放指南中深入瞭解我們的結構。 要求單位是輸送量容量在集合上的佈建方式;您可以閱讀要求單位指南和 RU/秒佈建指南來深入瞭解。 在移轉集合時,Azure Cosmos DB 會佈建足夠的分區來提供所佈建的要求單位,並儲存資料。 因此,估計集合的 RU/秒便是十分重要的步驟,可讓您在移轉之前,先瞭解所規劃 Azure Cosmos DB 資料資產的規模。 根據我們協助數千個客戶後的經驗,我們發現下列公式可協助我們從虛擬核心或 vCPU 大略估計出起始的 RU/秒:

Provisioned RU/s = C*T/R

  • T:現有資料庫的資料承載複本集內的虛擬核心和/或 vCPU 總數。
  • R:現有資料承載複本集的複寫係數。
  • C:建議為每個虛擬核心或 vCPU 佈建的 RU/秒。 此值可從 Azure Cosmos DB 的結構推導出來:
    • C = 600 RU/s/vCore* for Azure Cosmos DB for NoSQL
    • C = 1000 RU/s/vCore* for Azure Cosmos DB for MongoDB v4.0
    • Cassandra API、Gremlin API 或其他 API 目前未提供 C 估計值

上面提供了 C 的值。 若要判斷 T 的值,則必須檢查現有資料庫的每個資料承載複本集內的虛擬核心或虛擬 CPU 數目,然後相加來算出總數;如果您無法估計 T,則請考慮遵循使用 Azure Cosmos DB 容量規劃工具來估計 RU/秒的指南,而非遵循本指南的做法。 T 不應包含與您現有資料庫的路由伺服器或設定叢集 (如果其具有這些元件的話) 相關聯的虛擬核心vCPU

至於 R,建議您插入資料庫複本集的平均複寫係數;如果無法取得這項資訊,根據經驗,使用 R=3 即可。

Azure Cosmos DB 互通性 API 會在 API for NoSQL 的基礎上執行,並實作自己的唯一結構;因此,Azure Cosmos DB for MongoDB 第 4.0 版會有和 Azure Cosmos DB API for NoSQL 不同的 C 值。

有效範例:估計移轉單一複本集時的 RU/秒

Migrate a replica set with 3 replicas of a four-core SKU to Azure Cosmos DB

假設有單一複本集,其複寫係數是 R=3,並以四核心的伺服器 SKU 作為基礎。 結果為

  • T = 12 個虛擬核心
  • R = 3

然後 Azure Cosmos DB API for NoSQL 所建議的要求單位為

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (12 vCores) / (3) = 2,400 RU/s

而且,適用於 MongoDB 的 Azure Cosmos DB 所建議的要求單位為

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (12 vCores) / (3) = 4,000 RU/s

有效範例:估計移轉同質複本集叢集時的 RU/秒

Migrate a homogeneous sharded replica set with 3 shards, each with three replicas of a four-core SKU, to Azure Cosmos DB

假設有一個已複寫的分區叢集,其包含三個複本集,每個複本集的複寫係數是三,其中的每一部伺服器都是四核心 SKU。 結果為

  • T = 36 個虛擬核心
  • R = 3

然後 Azure Cosmos DB API for NoSQL 所建議的要求單位為

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

而且,適用於 MongoDB 的 Azure Cosmos DB 所建議的要求單位為

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

有效範例:估計移轉異質複本集叢集時的 RU/秒

Migrate a heterogeneous sharded replica set with 3 shards, each with different numbers of replicas of a four-core SKU, to Azure Cosmos DB

假設有一個已複寫的分區叢集,其包含三個複本集,其中的每一部伺服器都以四核心的 SKU 作為基礎。 之所以說是「異質」,是因為這些複本集各自有不同的複寫係數:分別是 3 倍、1 倍和 5 倍。 建議的方法是在計算要求單位時使用平均複寫係數。 結果為

  • T = 36 個虛擬核心
  • R 平均值 = (3+1+5)/3 = 3

然後 Azure Cosmos DB API for NoSQL 所建議的要求單位為

Provisioned RU/s, API for NoSQL = (600 RU/s/vCore) * (36 vCores) / (3) = 7,200 RU/s

而且,適用於 MongoDB 的 Azure Cosmos DB 所建議的要求單位為

Provisioned RU/s, API for MongoDB = (1,000 RU/s/vCore) * (36 vCores) / (3) = 12,000 RU/s

可供獲得最精確 RU/秒估計值的提示

從雲端管理的資料庫移轉:如果您目前使用雲端管理的資料庫,這些服務通常會以虛擬核心vCPU 為單位進行佈建 (也就是 T),但事實上,您佈建的核心計數會為 R 節點的複本集設定虛擬核心/複本值或 vCPU/複本值 (T/R);真正的核心數目比您明確佈建的核心數目多 R 倍。 建議您判斷這項描述是否適用於您目前的雲端管理資料庫,如果適用的話,您就必須將所佈建虛擬核心vCPU 的名義數目乘以 R,才能精確估計出 T 值。

虛擬核心與 vCPU:本文將「虛擬核心」和「vCPU」視為同義字,因此 C 的單位是 RU/秒/虛擬核心RU/秒/vCPU,兩者沒有差別。 不過在實務上,這樣的簡化在某些情況下可能不精確。 這兩個詞可能有不同的意義;例如,如果您的實體 CPU 支援超執行緒,則情況可能是 2 個 vCPU = 1 個虛擬核心 w/HT或其他比例。 一般來說,虛擬核心/vCPU 的關聯性取決於硬體,因此建議您調查現有叢集硬體的關聯性,以及在佈建叢集計算時是以虛擬核心還是 vCPU 作為單位。 如果 vCPU虛擬核心在您的硬體上有不同的意義,則建議將上面估計的 C 視為單位是 RU/秒/虛擬核心,並在必要時使用適合您硬體的轉換係數,將 T 從 vCPU 轉換為虛擬核心。

摘要

透過虛擬核心vCPU 來估計 RU/秒,需要從現有的資料庫複本集收集虛擬核心/vCPU 總數和複寫係數的相關資訊。 然後,便可使用已知的虛擬核心/vCPU 與輸送量之間的關聯性來估計 Azure Cosmos DB 要求單位 (RU/秒)。 找出此要求單位估計值會是十分重要的步驟,如此才能預先推算移轉後的 Azure Cosmos DB 資料資產規模。

下表會針對 Azure Cosmos DB API for NoSQL 和 API for MongoDB 第 4.0 版摘要列出其「虛擬核心」vCPU 之間的關聯性:

虛擬核心 RU/秒 (API for NoSQL)
(複寫係數=3)
RU/秒 (適用於 MongoDB 第 4.0 版的 API)
(複寫係數=3)
3 600 1000
6 1200 2000
12 2400 4000
24 4800 8000
48 9600 16000
96 19200 32000
192 38400 64000
384 76800 128000

下一步