2016-02-18 3 views
1

Согласно Question regarding Tombstone, почему не upserts не создают надгробные плиты? Согласно документации datastax, How is data updated ? для каждого upsert, cassandra считается удаленным с последующим вставкой, так как новые метки времени вставки перезаписывают старую временную метку. Предыдущие данные метки времени должны быть отмечены как удаление, относящееся к надгробию.Почему не воссоздают Могилы в Кассандре?

Почему у нас есть противоречивые заявления? или я здесь ничего не пропал?

USECASE: данных вставляется с уникальным ключом (UUID) в Кассандре и некоторые из столбцов в этих данных продолжает часто обновлять. Какой подход вы рекомендуете?

  1. Вставка тех же данных с новыми значениями столбцов в Вставить запрос.
  2. Обновление существующей записи на основе заданного uuid с новыми значениями столбцов в запросе на обновление.

Какой подход делает или не создает надгробные плиты? и как Кассандра обрабатывает оба запроса?

+0

Возможный дубликат [Кассандра и надгробия: создание строки, удаление строки, воссоздание строки = производительность?] (Http://stackoverflow.com/questions/7293973/cassandra-and-tombstones-creating-a-row -deleting-в-ряд-воссоздания-The-я строка) – RussS

ответ

3

Как указал Русс, вы можете прочитать другие подобные вопросы по этой теме. Однако

Восстанавливает/перезаписывает только-другую ячейку с именем, меткой времени и значением.

Надгробный камень - это как перезапись, за исключением того, что он получает одно дополнительное поле, указывающее, что оно было удалено, так что оно не возвращается как допустимый результат. Причина, по которой надгробия часто вредны, заключается в том, что они могут накапливаться в плохих моделях данных, даже когда люди думают, что данные ушли - и пропустить их, чтобы добраться до живых данных, на самом деле требует памяти.

Когда вы обновляете/обновляете, как вы описали, ячейка, которую вы создаете SHADOWS (устаревает) предыдущей ячейки, которая будет удалена при уплотнении. Эта предыдущая ячейка НЕ ​​является надгробным камнем, хотя она больше не живая/активная - она ​​будет уплотнена и полностью заменена новым, живым, наивысшим значением времени, как только уплотнение позволит.

Самое большое, о чем следует помнить: надгробия не обязательно удаляются путем уплотнения - они сохраняются (сохраняются/переписываются), по крайней мере, за gc_grace_seconds и, возможно, даже долго, если им необходимо затенять/закрыть другие ячейки в sstables еще не уплотнены. Из-за этого надгробные плиты остаются в течение длительного времени, но затененные/перезаписанные ячейки являются gc'd, как только sstable, в котором они находятся, уплотняется.