選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用寫入碎片,將工作負載平均分散到各個分割區

焦點模式

在本頁面

使用寫入碎片,將工作負載平均分散到各個分割區 - Amazon Keyspaces (適用於 Apache Cassandra)

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

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

在 Amazon Keyspaces 中更好地將寫入分佈到分割區的方法之一是擴展空間。您可以數種不同的方式來執行此動作:您可以新增額外的分割區索引鍵資料欄,以將資料列分散到分割區之間,以撰寫隨機數字。或者,您可以使用根據您查詢內容計算的數字。

使用複合分割區索引鍵和隨機值的碎片

跨分割區更平均地分配負載的一個策略是新增一個額外的分割區索引鍵欄,您寫入隨機數字。如此您就能在較大的空間中將寫入隨機化。

例如,請考慮下表,其具有代表日期的單一分割區索引鍵。

CREATE TABLE IF NOT EXISTS tracker.blogs ( publish_date date, title text, description int, PRIMARY KEY (publish_date));

若要在分割區之間更平均地分配此資料表,您可以包含存放shard隨機數字的額外分割區索引鍵資料欄。例如:

CREATE TABLE IF NOT EXISTS tracker.blogs ( publish_date date, shard int, title text, description int, PRIMARY KEY ((publish_date, shard)));

插入資料時,您可以在資料shard欄的 1200 之間選擇隨機數字。這會透過 產生複合分割區索引鍵值,例如 (2020-07-09, 1)(2020-07-09, 2)(2020-07-09, 200)。因為您隨機化了分割區索引鍵,每天對資料表的寫入會平均分配在多個分割區中。這可帶來更優良的平行處理與更高的整體傳輸量。

不過,若要讀取指定日期的所有資料列,您必須查詢所有碎片的資料列,然後合併結果。例如,您會先發出分割區索引鍵值 的SELECT陳述式(2020-07-09, 1)。然後(2020-07-09, 2),透過 為 發出另一個SELECT陳述式,以此類推(2020-07-09, 200)。最後,您的應用程式必須合併所有這些SELECT陳述式的結果。

使用複合分割區索引鍵和計算值的碎片

隨機化的策略可大幅改善寫入傳輸量。但讀取特定資料列並不容易,因為您不知道資料列寫入時寫入資料shard欄的值。若要更輕鬆地讀取個別資料列,您可以使用不同的策略。使用您可以根據要查詢的內容計算的數字,而不是使用隨機數字在分割區之間分配資料列。

考量先前的範例,其中資料表會使用分割區索引鍵中的今天日期。現在假設每個資料列都有可存取的資料title欄,而且除了日期之外,您通常還需要依標題尋找資料列。在應用程式將資料列寫入資料表之前,它可以根據標題計算雜湊值,並使用它來填入資料shard欄。計算應會產生介於 1 到 200 之間的數字,此分佈非常平均,與隨機策略產生的結果相當類似。

簡單計算可能就足夠了,例如標題中字元的 UTF-8 程式碼點值乘積、模數 200、+ 1。然後,複合分割區索引鍵值會是日期和計算結果的組合。

有了這項策略,即可在分割區索引鍵值之間,以及實體分割區之間平均分配寫入。您可以輕鬆為特定資料列和日期執行SELECT陳述式,因為您可以計算特定值的分割區索引鍵title值。

若要讀取指定日期的所有資料列,您仍然必須SELECT每個(2020-07-09, N)金鑰 (其中 N 1–200),然後您的應用程式必須合併所有結果。好處是您能避免讓單一「經常性」分割區索引鍵值承受所有工作負載。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。