Можно ли указать WRITETIME в команде INSERT Cassandra?

У меня возникла проблема, когда несколько команд INSERT рассматриваются как отправляемые одновременно на стороне Cassandra, когда мой код явно не отправляет их одновременно. (Когда в сети возникает небольшая перегрузка, возникает проблема, в противном случае все работает просто отлично.)

То, что я думаю, решило бы эту проблему, является способом для меня, чтобы быть в состоянии указать WRITETIME самостоятельно. Из того, что я помню, это было возможно в экономном, но, возможно, нет (то есть мы могли бы прочитать это наверняка.)

Так что-то вроде этого (для имитации TTL):

INSERT INTO table_name (a, b, c) VALUES (1, 2, 3) USING WRITETIME = 123;

Проблема, с которой я сталкиваюсь, заключается в перезаписи одних и тех же данных, и время от времени обновление игнорируется, потому что оно заканчивается той же или даже более старой отметкой времени (возможно, потому что оно отправляется на другой узел, а время каждого узла немного отличается, и так как процесс C ++ использует потоки, он может быть отправлен до / после без вашего контроля …)

0

Решение

Волшебный синтаксис, который вы ищете:

INSERT INTO tbl (col1, col2) VALUES (1,2) USING TIMESTAMP 123456789000

Будьте очень осторожны при использовании этого подхода — убедитесь, что вы используете правильные единицы измерения (обычно микросекунды).

В некоторых случаях вы можете переопределить значение меток времени — это хитрый трюк, который мы использовали в прошлом, чтобы делать умные вещи, такие как первые записи-выигрыши, и даже хранить значения в таблице лидеров в поле TIMESTAMP, чтобы наивысший балл сохранялся, но Вы должны ДЕЙСТВИТЕЛЬНО понять концепцию, прежде чем пытаться это (удаление становится нетривиальным)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]