簡體   English   中英

RocksDB:數字范圍查詢

[英]RocksDB: range query on numbers

是否可以有效地使用 RocksDB 進行數字范圍查詢

例如,如果我有數十億個元組(price, product_id) ,我可以使用 RocksDB 檢索所有具有10 <= price <= 100的產品嗎? 或者它不能用於那個?

我很困惑,因為我找不到任何關於數字鍵和范圍查詢的特定文檔。 然而,我也讀到 RocksDB 被用作許多 DBMS 的數據庫引擎,這表明在這種情況下可以有效地查詢它。

在 RocksDB 等鍵值存儲中組織上述元組以獲得任意范圍(事先不知道)的推薦方法是什么?

你會使用什么樣的鑰匙? 你會使用什么類型的查詢?

是的,rocksdb 支持有效的范圍查詢 [即使是事先不知道的任意范圍]

范圍查詢。

https://github.com/facebook/rocksdb/wiki/Prefix-Seek

數字鍵

沒有關於如何 model 你的數據這樣的文檔 - 如果你不知道如何 model 已經你不應該首先使用rocksdb,因為它太低了

在 RocksDB 等鍵值存儲中組織上述元組以獲得任意范圍(事先不知道)的推薦方法是什么?

在您的示例中 - 它正在創建價格索引以查找產品 ID

因此,您將價格編碼為字節數組並將其用作鍵,然后將產品 ID 作為字節數組用作值

示例格式

key => value
priceIndex:<price>#<productId> => <productId>

然后你會

  1. 創建一個迭代器
  2. 尋找價格的下限 [ priceIndex:10在這種情況下]
  3. 設置選項的上限 [ priceIndex:100在這種情況下]
  4. 循環直到迭代器有效

這將為您提供該范圍內的所有鍵值對 - 在您的情況下,這將是價格范圍內的所有價格、產品 ID 元組

必須小心,因為許多產品可以具有相同的價格,並且rocksdb 密鑰是唯一的 - 因此您也可以在價格后綴產品 ID 以使密鑰唯一

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM