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). Да, и таблица и вью дублируются на каждой ноде - кто его знает, на какую ноду вы будете писать? А дальше записали на любой ноде - и данные, которые вью сбросила в таблицу, разъехались по остальным нодам.
Обсуждают сегодня