關鍵範圍分區
將資料分區到已排序的關鍵範圍中,以有效率地處理範圍查詢。
問題
要將資料分割到一組叢集節點中,每個資料項目都需要對應到一個節點。如果使用者想要查詢一個範圍的關鍵字,只指定開始和結束關鍵字,則需要查詢所有分區才能取得值。針對單一要求查詢每個分區遠遠不是最佳方式。
以一個鍵值儲存為例。我們可以使用基於雜湊的對應來儲存作者名稱,如同 固定分區 中所述。
關鍵字 | 雜湊 | 分區 † | 節點 |
---|---|---|---|
alice | 133299819613694460644197938031451912208 | 0 | 0 |
bob | 63479738429015246738359000453022047291 | 1 | 1 |
mary | 37724856304035789372490171084843241126 | 5 | 1 |
philip | 83980963731216160506671196398339418866 | 2 | 2 |
† 分區 = 雜湊 % 分區數量 (9)
如果使用者想要取得一個範圍名稱的值,例如從字母「a」到「f」開始,如果使用關鍵字的雜湊來將關鍵字對應到分區,則無法知道應該從哪個分區擷取資料。需要查詢所有分區才能取得所需的值。
解決方案
為以已排序順序排列的關鍵字建立邏輯分區。然後可以將分區對應到叢集節點。若要查詢一個範圍的資料,客戶端可以取得包含給定範圍中關鍵字的所有分區,並只查詢那些特定分區來取得所需的值。
有關更多詳細資訊,請參閱 oreilly.com 上線上電子書的 第 20 章
此模式是 分散式系統模式 的一部分
2023 年 11 月 23 日