Рекомендуется ли использовать аэроспайк для фильтрации на каком-либо поле - PullRequest
0 голосов
/ 30 марта 2020

У меня около 2 миллионов записей, каждая из которых имеет 10-12 полей (в основном это строки). Теперь я хочу фильтровать записи на основе какого-либо поля. Желательно ли сделать это, используя вторичный индекс, или есть какой-то другой лучший вариант? Кроме того, сколько времени потребуется, чтобы получить все записи / только ключи (после применения фильтра)?

Заранее спасибо.

1 Ответ

2 голосов
/ 30 марта 2020

Вы можете выполнить сканирование с использованием фильтра предикатов - который является довольно универсальным (вы можете даже сделать регулярное выражение) или запрос вторичного индекса, который учитывает только фильтр равенства для строк.

Сканирования более надежны и будут еще лучше в следующем выпуске (март / апрель 2020 г.) с точки зрения управления их прогрессом. При сканировании необходимо сначала прочитать все записи с диска, а затем применить фильтр.

SI будет быстрее, потому что вы фильтруете (вторичный индекс в памяти) перед извлечением записи с диска, но менее надежен, если нижележащие узлы кластера не являются стабильными - то есть, если вы потеряете или добавите узел во время запроса SI. Запрос выполняется параллельно на всех узлах кластера и передает результаты обратно клиенту в произвольном порядке. Вы можете уменьшить это, используя опцию «failOnClusterChange» и перезапуская, когда кластер стабилен. (Сканирования также имеют такую ​​же опцию.)

Что лучше? сделать A / B тест по вашей конкретной проблеме c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...