關鍵範圍分區

將資料分區到已排序的關鍵範圍中,以有效率地處理範圍查詢。

問題

要將資料分割到一組叢集節點中,每個資料項目都需要對應到一個節點。如果使用者想要查詢一個範圍的關鍵字,只指定開始和結束關鍵字,則需要查詢所有分區才能取得值。針對單一要求查詢每個分區遠遠不是最佳方式。

以一個鍵值儲存為例。我們可以使用基於雜湊的對應來儲存作者名稱,如同 固定分區 中所述。

關鍵字雜湊分區 †節點
alice13329981961369446064419793803145191220800
bob6347973842901524673835900045302204729111
mary3772485630403578937249017108484324112651
philip8398096373121616050667119639833941886622

† 分區 = 雜湊 % 分區數量 (9)

如果使用者想要取得一個範圍名稱的值,例如從字母「a」到「f」開始,如果使用關鍵字的雜湊來將關鍵字對應到分區,則無法知道應該從哪個分區擷取資料。需要查詢所有分區才能取得所需的值。

解決方案

為以已排序順序排列的關鍵字建立邏輯分區。然後可以將分區對應到叢集節點。若要查詢一個範圍的資料,客戶端可以取得包含給定範圍中關鍵字的所有分區,並只查詢那些特定分區來取得所需的值。

有關更多詳細資訊,請參閱 oreilly.com 上線上電子書的 第 20 章

此模式是 分散式系統模式 的一部分

2023 年 11 月 23 日