Последствия сохранения Cassandra ResultSet на некоторое время открытым - PullRequest
0 голосов
/ 18 сентября 2018

Я использую драйвер Cassandra Java с размером выборки, установленным на 1 КБ. Мне нужно запросить все записи в таблице и выполнить некоторые трудоемкие действия для каждой строки. Что произойдет, если я оставлю ResultSet открытым (не полностью повторным) в течение одного дня? Что меня не волнует:

  • последовательность. Если какая-то новая запись будет написана тем временем, я в порядке, чтобы получить ее. Тем не менее, я в порядке, если я не получу это
  • отказоустойчивость. Если во время этого процесса какой-нибудь узел выйдет из строя, я в порядке, если запрос тоже не удастся. Однако я хотел бы обнаружить это с точки зрения клиента.

О чем я забочусь:

  • Использование ресурсов Cassandra - я не хочу вызывать сбой кластера из-за некоторых заблокированных ресурсов
  • задержка - я не хочу блокировать (или сильно замедлять) кластер для других потребителей этой таблицы
  • Я хотел бы получить все записи, которые существовали, когда я начал запрос (при условии отсутствия удалений). Тем не менее, они не должны быть в курсе

1 Ответ

0 голосов
/ 18 сентября 2018

Состояние подкачки - это информация о последних прочитанных данных (буквально сериализованный ключ раздела, кластеризация и оставшиеся).При отправке координатору он будет искать все, что больше, чем это.Таким образом, на сервере нет ресурсов, потраченных на это, и никакого влияния на производительность по сравнению с обычным чтением.

Cassandra не имеет никаких функций, позволяющих изолировать даже внутри одного запроса.Если данные изменились с момента первого и второго запроса, вы получите актуальную информацию.

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