Моя проблема в том, что cassandra создает надгробия при вставке значений NULL.
Насколько я понимаю, cassandra не поддерживает NULL, а когда вставляется NULL, он просто удаляет соответствующий столбец.С одной стороны, это очень эффективно, но с другой стороны создает надгробия, которые ухудшают производительность чтения.
Это противоречит философии NoSql, потому что Кассандра экономит место, но снижает производительность чтения.В мире NoSql пространство дешевое, но производительность имеет значение.Я полагаю, что это философия сохранения таблиц в денормализованной форме.
Я бы хотел, чтобы cassandra использовала ту же технику для вставки NULL, что и для любого другого значения - используйте метку времени и во время сжатия сохраняйте последнюю запись - даже еслизапись имеет значение NULL (или мы можем назвать это "unset").Есть ли какие-либо изменения в конфигурации cassandra или какой-либо подход, как я мог бы добиться upserts с нулями, не имея надгробий?
Я сталкивался эта проблема однако он позволяет игнорировать только значения NULL
Мой сценарий использования : у меня есть поток событий, каждое событие идентифицировано по причине.Я получаю много событий с одним и тем же причиной, и я хочу сохранить только последнее событие для одного и того же причины (используя upsert).Свойства события могут изменяться с NULL на конкретное значение, но также и с конкретного значения на NULL.К сожалению, в последнем случае генерируются надгробия и ухудшается производительность чтения.
Обновление
Кажется, я никак не могу избежать надгробий.Не могли бы вы посоветовать мне методы, как минимизировать их (установите для gc_grace_seconds очень низкое значение).Каковы риски, что делать, когда узел выходит из строя на более длительный период, чем gc_grace_seconds?