Потоковая передача данных события с динамически изменяющейся схемой в ClickHouse - PullRequest
0 голосов
/ 11 октября 2019

Я оцениваю Clickhouse для хранения потоковых событий, имеющих переменную схему событий. Схема событий является вложенной JSON. Новые свойства могут быть разных типов данных, поэтому мы не можем создать нормализованную пару ключ-значение.

Исходя из документации, похоже, что всякий раз, когда происходит изменение в схеме, мы должны явно изменить схему таблицы и затем вставить новую запись. Поскольку вставки выполняются несколькими исходными работниками, добавление предложения «ЕСЛИ НЕ СУЩЕСТВУЕТ» может помочь минимизировать условия гонки.

Может кто-нибудь посоветовать, если есть лучший способ продолжать вставлять события с динамически меняющимися схемами в Clickhouse? Есть ли способ заставить Clickhouse выводить обновленную схему на основе вставляемого события?

1 Ответ

1 голос
/ 11 октября 2019

Каждый столбец на вставке требует 2 МБ ОЗУ.

1000 Столбцы таблицы будут использовать 2 ГБ на вставке.

Каждый столбец = ~ 3 файла на диске + = 3 случайных чтения / записи при вставке.

Изменение таблицы иногда будет блокироваться слиянием / выбором и может выполняться часами.

Я бы выбрал ОСНОВНЫЕ столбцы (которые будут использоваться там, где чаще всего) из JSON и поместил их ввыделенные столбцы. Другие столбцы в столбцах K / V - 2 (Key Array (String), Value Array (String)). В противном случае используйте MongoDb.

...