Для движка ReplacingMergeTree можно передать поле version в качестве параметра. version - это версия строки. Т.е. может быть N версий одного primary key.
Обычно для version удобно использовать timestamp изменения строки во внешней таблице, например.
Самая старшая версия в КХ является актуальной во внешней системе.
Далее используете модификатор FINAL для выборки самых последних версий строк.
SELECT * FROM table FINAL WHERE ...
И КХ вернет самую последнюю версию строк.
Так же вместо FINAL можно использовать ORDER BY pk, version DESC LIMIT 1 By pk, а так же argMax(field, version) с группировкой по pk.
Я вчера релизнул socks для asyncio/aiohttp: github.com/nibrag/aiosocks.
Либа пока сыровата, но уже что-то.
По поводу асинхронных днс запросов, то в мастер ветке уже есть решение с aiodns.
Для движка ReplacingMergeTree можно передать поле version в качестве параметра. version - это версия строки. Т.е. может быть N версий одного primary key.
Обычно для version удобно использовать timestamp изменения строки во внешней таблице, например.
Самая старшая версия в КХ является актуальной во внешней системе.
Далее используете модификатор FINAL для выборки самых последних версий строк.
SELECT * FROM table FINAL WHERE ...
И КХ вернет самую последнюю версию строк.
Так же вместо FINAL можно использовать ORDER BY pk, version DESC LIMIT 1 By pk, а так же argMax(field, version) с группировкой по pk.
Версионирование строк + FINAL не подходит?
И что будет, если вы вставили в mongo ключи, но при этом в КХ вставить не удалось по какой то причине?
fsync = off
full_page_writes = off
Имел ввиду все таки не wal, а fsync
Естественно отключать нужно только для тестового кластера.
Либа пока сыровата, но уже что-то.
По поводу асинхронных днс запросов, то в мастер ветке уже есть решение с aiodns.