計算 Amazon Keyspaces 中每個邏輯分割區的靜態資料欄大小 - Amazon Keyspaces (適用於 Apache Cassandra)

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

計算 Amazon Keyspaces 中每個邏輯分割區的靜態資料欄大小

本節提供如何估計 Amazon Keyspaces 中靜態資料欄編碼大小的詳細資訊。當您計算帳單和配額用量時,會使用編碼大小。計算資料表的佈建輸送量需求時,您也應該使用編碼大小。若要計算 Amazon Keyspaces 中靜態資料欄的編碼大小,您可以使用下列準則。

  • 分割區金鑰最多可包含 2048 個位元組的資料。分割區金鑰中的每個金鑰欄最多需要 3 個位元組的中繼資料。這些中繼資料位元組會計入每個分割區 1 MB 的靜態資料大小配額。計算靜態資料的大小時,您應該假設每個分割區索引鍵資料欄使用完整 3 個位元組的中繼資料。

  • 根據資料類型使用靜態資料欄資料值的原始大小。如需資料類型的詳細資訊,請參閱 資料類型

  • 將 104 個位元組新增至中繼資料的靜態資料大小。

  • 叢集資料欄和一般、非主要金鑰資料欄不會計入靜態資料的大小。若要了解如何估算資料列內非靜態資料的大小,請參閱 估計 Amazon Keyspaces 中的行大小

靜態資料欄的總編碼大小以下列公式為基礎:

partition key columns + static columns + metadata = total encoded size of static data

請考慮下列資料表範例,其中所有資料欄都是類型整數。資料表有兩個分割區金鑰欄、兩個叢集欄、一個一般欄和一個靜態欄。

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

在此範例中,我們會計算下列陳述式的靜態資料大小:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, static_col1) values(1,2,6);

若要估算此寫入操作所需的總位元組數,您可以使用下列步驟。

  1. 透過新增儲存在資料欄中的資料類型位元組和中繼資料位元組,來計算分割區金鑰資料欄的大小。對所有分割區金鑰資料欄重複此操作。

    1. 計算分割區金鑰 (pk_col1) 第一欄的大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    2. 計算分割區金鑰 (pk_col2) 的第二欄大小:

      4 bytes for the integer data type + 3 bytes for partition key metadata = 7 bytes
    3. 新增兩個資料欄,以取得分割區金鑰資料欄的預估總大小:

      7 bytes + 7 bytes = 14 bytes for the partition key columns
  2. 新增靜態資料欄的大小。在此範例中,我們只有一個靜態資料欄可存放整數 (需要 4 個位元組)。

  3. 最後,若要取得靜態資料欄資料的總編碼大小,請為主要金鑰資料欄和靜態資料欄新增位元組,並為中繼資料新增額外的 104 個位元組:

    14 bytes for the partition key columns + 4 bytes for the static column + 104 bytes for metadata = 122 bytes.

您也可以使用相同的陳述式更新靜態和非靜態資料。若要估算寫入操作的總大小,您必須先計算非靜態資料更新的大小。然後計算列更新的大小,如 的範例所示估計 Amazon Keyspaces 中的行大小,並新增結果。

在此情況下,您可以寫入總計 2 MB,1 MB 是資料列大小配額上限,而 1 MB 是每個邏輯分割區的靜態資料大小上限配額。

若要計算相同陳述式中靜態和非靜態資料更新的總大小,您可以使用下列公式:

(partition key columns + static columns + metadata = total encoded size of static data) + (partition key columns + clustering columns + regular columns + row metadata = total encoded size of row) = total encoded size of data written

請考慮下列資料表範例,其中所有資料欄都是類型整數。資料表有兩個分割區金鑰欄、兩個叢集欄、一個一般欄和一個靜態欄。

CREATE TABLE mykeyspace.mytable(pk_col1 int, pk_col2 int, ck_col1 int, ck_col2 int, reg_col1 int, static_col1 int static, primary key((pk_col1, pk_col2),ck_col1, ck_col2));

在此範例中,我們會在將資料列寫入資料表時計算資料的大小,如下列陳述式所示:

INSERT INTO mykeyspace.mytable (pk_col1, pk_col2, ck_col1, ck_col2, reg_col1, static_col1) values(2,3,4,5,6,7);

若要估算此寫入操作所需的總位元組數,您可以使用下列步驟。

  1. 計算靜態資料的總編碼大小,如先前所示。在此範例中,它是 122 個位元組。

  2. 根據非靜態資料的更新,依照 的步驟新增資料列的總編碼大小估計 Amazon Keyspaces 中的行大小。在此範例中,資料列更新的總大小為 134 個位元組。

    122 bytes for static data + 134 bytes for nonstatic data = 256 bytes.