хранения постоянно обновляющихся данных из внешнго источника, которые хочется синхронизировать с CH раз в какое-то время? Количество инсертов ~ 1M/сутки, то есть таблица сама не большая, но данные меняются стабильно - а трекать предыдущие значения и дописывать дельты как-то больно.
1 М в сутки в строках это ?
можно ещё в сторону EmbeddedRocksDB глянуть
1М строки? тогда никаких проблем
а забират "последние" данные просто с argMax(tuple(val1, val2, ..., valN), version) и не париться?
если будете использовать её в качестве джойна, то нужно будет учесть, что JOIN t FINAL не работает
это для хранения словаря "того, что уже было" вы предлагаете?
по разному, зависит... например вы знаете что закончили обновлять и запускаете optimize final , дальше просто select есть например параметры которые ускоряют select final, возможно их можно использовать и еще 49 вариантов
если у вас апдейты по ключу, то оно просто перезапишет всю строку, а не так как ReplacingMergeTree потом может быть когда-нибудь в фоне
это не совсем правда, нужен подзапрос select .... from ... join (select * from t final) as t и это баг, его починят
ну вот тут напряжение в том, что "закончили обновлять" считай не бывает. есть грубо говоря внешняя база, которую периодически опрашиваем и получаем "актуальные" значения, и поменяться они могут как для свежих записей, там и для достаточно старых
я и говорю у меня есть 51 вариант
Обсуждают сегодня