Ошибка Scylladb. LWT пока не поддерживается планшетами

я хочу реализовать последовательность в Scylladb, поэтому я создал таблицу:

CREATE TABLE project.sequence (
 name ascii PRIMARY KEY,
 value bigint
);

Затем я вставил строку:

INSERT INTO project.sequence (name,value) VALUES ('UID', 1000);

Теперь я просто хочу обновить последовательность, в которой имя — «UID», но я получил ошибку LWT от Scylla.

UPDATE project.sequence SET value=? WHERE name='UID' IF value=?;

Это ошибка:

InvalidRequest: Error from server: code=2200 [Invalid query] message = "Cannot use LightWeight Transactions for table project.sequence: LWT is not yet supported with tablets"

Фактически, я получаю эту ошибку везде, где использую LWT (при условии) !!!! В чем проблема ?

Я предполагаю, что вы используете Scylla OSS 6.0, в которой планшеты включены по умолчанию, и, как говорится в ошибке, планшеты еще не совместимы с LWT. Если вам нужно использовать LWT, вам следует создать пространство ключей без планшетов, добавив «AND Tablets = {'enabled': false}» к CREATE KEYSPACE.

Piotr Smaroń 14.06.2024 17:51

Другая идея — использовать более старую версию Scylla.

Piotr Smaroń 14.06.2024 22:12

См. ограничения планшетов, включая отсутствие поддержки LWT, в ScyllaDB 6.0 здесь: opensource.docs.scylladb.com/stable/architecture/…

Tzach Livyatan 15.06.2024 18:02

@PiotrSmaroń Предлагаю вам превратить это в ответ, а не в комментарий. Обратите внимание: когда вы создаете пространство ключей в Scylla 6.0 с включенными планшетами (по умолчанию), вас предупреждают, что вы не сможете использовать LWT. В предупреждении также сообщается, что вы можете сделать (удалить пространство ключей и создать его заново с отключенными планшетами). Я думаю, это предупреждение было недостаточно заметным - или вы создали пространство ключей с помощью кода, а не ручной команды, и код не замечает предупреждений :-(

Nadav Har'El 15.06.2024 20:27
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
1
4
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я суммирую комментарии Петра и Цаха в организованный ответ:

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

Планшеты имеют много интересных преимуществ и перспектив, но, будучи новой функцией, они также имеют некоторые временные ограничения, пока все складки не будут разглажены. Эти ограничения перечислены на этой странице. Как вы заметили, одной из функций, которые в настоящее время не поддерживаются на планшетах, является LWT.

Функция «таблетки» предназначена для каждого пространства ключей, поэтому, хотя она включена по умолчанию в новых пространствах ключей, вы можете легко создать пространство ключей без планшетов (т. е. использовать классическую реализацию vnode), и тогда таблицы, созданные в этом пространстве ключей, не будут использовать планшетов и, как и прежде, будет поддерживать LWT.

Обратите внимание: если вы СОЗДАЕТЕ ПРОСТРАНСТВО КЛАВИШ при включенном планшете (это значение по умолчанию в ScyllaDB 6.0), вы получите следующее предупреждающее сообщение:

Таблицы в этом пространстве ключей будут реплицироваться с помощью планшетов. и не будет поддерживать функцию CDC (проблема № 16317) и LWT. может чаще страдать от проблемы № 5251. Если вы хотите использовать CDC или LWT, удалите это пространство ключей и создайте его заново. без таблеток, добавив AND TABLETS = {'enabled': false} к оператору CREATE KEYSPACE.");

Это сообщение об ошибке немного вводит в заблуждение — дело не только в том, что «LWT может пострадать» от такой проблемы — на данном этапе мы полностью запрещаем LWT для планшетов, и такие запросы будут полностью отклонены. Но предупреждающее сообщение полезно тем, что оно сообщает точный синтаксис отключения планшетов в команде CREATE KEYSPACE.

Другие вопросы по теме