Cassandra data modeling respects «Денормализация и дублирование данных - это факт жизни с Кассандрой». Но один из недостатков демармализованных данных делает обновления очень сложными. Например, если у меня есть три стола, обслуживающих разные запросы, выбор в порядке. Однако, если в моем приложении я хочу обновить имя пользователя, и мне нужно обновить эти три таблицы? Обновление в первой таблице выглядит нормально. Как насчет последних двух? Исходы будут очень дорогими? Как я должен обрабатывать этот случай?Обновления в cassandra
CREATE TABLE users_by_username (
username text PRIMARY KEY,
email text,
age int
)
CREATE TABLE users_by_email (
email text PRIMARY KEY,
username text,
age int
)
CREATE TABLE groups (
groupname text,
username text,
email text,
age int,
hash_prefix int,
PRIMARY KEY ((groupname, hash_prefix), username)
)
Да, вы должны обновить их отдельно. Это не дорого, с точки зрения вычисления, но это должно быть довольно быстро. По крайней мере, это то, что я видел на практике. –
Но последние обновления arr эквивалент поиска плюс изменение вправо? Разве это не должно быть медленным, так как вы фактически работаете над непервичным ключом? – Hammer
Запустили ли вы свои обновления и приурочили их? Это способ узнать наверняка. –