Дедупликация данных при INSERT.

523 views
Skip to first unread message

vacuu...@gmail.com

unread,
Sep 14, 2016, 3:27:49 AM9/14/16
to ClickHouse
Возник вопрос по поводу использования движков группы Mergetree, правильно ли я понимаю, что данные в таблицах всегда уникальны по первичному ключу?  То есть, если я вставлю строку с уже существующим первичным ключом, данные будут "перезаписаны", следовательно операция вставки идемпотентна, и запрос на COUNT, включающий данную строку учтет ее только один раз? 

man...@gmail.com

unread,
Sep 14, 2016, 2:46:08 PM9/14/16
to ClickHouse
Нет, первичный ключ не является уникальным. Может быть вставлено много строк с одинаковым значением первичного ключа.

Идемпотентность вставки есть для совсем другого случая: для таблиц типа ReplicatedMergeTree при вставке блока данных, содержащего такие же строки в таком же порядке, как у блока данных, вставленного ранее. Подробнее смотрите в документации, поиск по слову "идемпотентность".

vacuu...@gmail.com

unread,
Sep 14, 2016, 7:54:17 PM9/14/16
to ClickHouse


среда, 14 сентября 2016 г., 21:46:08 UTC+3 пользователь man...@gmail.com написал:
Нет, первичный ключ не является уникальным. Может быть вставлено много строк с одинаковым значением первичного ключа.

Идемпотентность вставки есть для совсем другого случая: для таблиц типа ReplicatedMergeTree при вставке блока данных, содержащего такие же строки в таком же порядке, как у блока данных, вставленного ранее. Подробнее смотрите в документации, поиск по слову "идемпотентность".
Спасибо, но мне надо получить дедупликацию данных, например по первичному ключу.  возможно и добиться этого, или мне необходимо использовать запросы типа uniq()? 

man...@gmail.com

unread,
Sep 15, 2016, 9:14:46 PM9/15/16
to ClickHouse
Нет возможности добиться уникальности первичного ключа при вставке. Это связано со способом организации индекса.
Индекс сделан "разреженным" - он не позволяет адресовать или проверить существование каждой отдельной записи в таблице, а позволяет лишь выполнять чтение диапазонов.
Reply all
Reply to author
Forward
0 new messages