Итератор RocksDB ищет до последнего совпадающего префикса - PullRequest
0 голосов
/ 07 марта 2020

Как мне указать итератору RocksDB искать до последнего совпадающего префикса?

В Clojure с использованием API RocksDB Java:

(import '(org.rocksdb RocksDB Options ReadOptions RocksIterator Slice))
(let [opts (-> (ReadOptions.)
               (.setPrefixSameAsStart true)
               (.setTotalOrderSeek true))
      iter (.newIterator db)]
  (.seek iter (.getBytes ("some-prefix:"))
  (.key iter))
=> "not-matching-prefix"

Нужно ли вручную проверять, следующий ключ соответствует префиксу? Это кажется неоптимальным, потому что мне нужно выполнить потоковую передачу всего ключа, чтобы проверить его, когда RocksDB может извлечь раньше.

1 Ответ

0 голосов
/ 07 марта 2020

Да, вы можете предоставить RocksDB верхнюю границу для ее оптимизации - используйте setIterateUpperBound в ReadOptions.

...