TABLE IF NOT EXISTS url_events (
url_id UInt32,
date_hour DateTime DEFAULT toString(toStartOfHour(now()), 'UTC'),
click UInt32,
show UInt32
) ENGINE = Log
и
CREATE MATERIALIZED VIEW IF NOT EXISTS url_events_agg
ENGINE = SummingMergeTree((click, show)) /* столбцы для суммирования */
PARTITION BY date_hour
ORDER BY (url_id, date_hour) /* ключи */
AS
SELECT * FROM url_events
Как теперь с этим переехать в кластер? (2 шарда по 2 реплики)
Таблицу менять на ReplicatedMergeTree, над ней строить Distributed, а над ней уже View? И вью что, дублировать на каждой ноде?
Или есть лучше вариант?
Если данные view должны реплицироваться (а обычно так и есть), то в кластере создается ReplicatedSummingMergeTree таблица, на которую уже указывает вью (через TO). Да, и таблица и вью дублируются на каждой ноде - кто его знает, на какую ноду вы будете писать? А дальше записали на любой ноде - и данные, которые вью сбросила в таблицу, разъехались по остальным нодам.
Обсуждают сегодня