Комментарии 19
1) Неэффективные большие JOIN'ы. Ограничения на sub-select'ы. Совсем произвольный отчёт из ста больше таблиц не так просто построить.
2) Свой SQL. Нужно вручную различать и понимать разницу между LOCAL \ GLOBAL JOIN, ANY \ ALL, WHERE \ PREWHERE. Непросто будет мигрировать на другой SQL-совместимый софт.
3) Нет транзакций, нет апдейтов в простой форме.
Но, если систему изначально строить с учётом этих особенностей, то всё решаемо.
Ой ли. Это только для компаний верхнего эшелона, которых можно пересчитать по пальцам.
Для простых смертных иллюзия это как раз наоборот то, что нужно хранить сырые события, на случай «а вдруг завтра понадобится построить новый ЛЮБОЙ репорт по событиям».
Ну вот реальная ситуация: у нас за день собирается с десяток лярдов событий (каждую минуту поступают пачками пре-аггрегированные данные), и сохраняются в таблице для дальнейшей аналитики (аггрегируются уже по часам\суткам). Все это происходит на одном простеньком PostgreSQL сервере и использует какие-то жалкие десятки гиг хранилища.
При этом если использовать ClickHouse описанным вами способом и хранить «сырые события», то конечно понадобится 400 серверов и 3Петабайта под хранилища…
Я был также впечатлен удобством и скоростью работы ClickHouse и написал плагин для хранения аналитики по фильтрации спама для своего Rspamd: https://www.rspamd.com/doc/modules/clickhouse.html Получилось крайне удобно, так как можно получать данные в реальном времени — до 10 секунд примерно. Единственная проблема, на которую я наткнулся, — это необходимость помещать промежуточные результаты джоинов в память, которая от такой грубости имеет свойство быстро кончаться. Впрочем, допускаю, что это я ненастоящий сварщик в данном случае.
А можете, если возможно, сказать пару слов о том, как соотносятся ClickHouse и Amazon Redshift? На работе есть юзкейс под который как будто идеально ложится ClickHouse, но босс хочет Redshift. По позиционированию смотрятся близкими продуктами, так ли это?
Сделайте Метрику человеческой. http://www.liveinternet.ru/stat/bizmania.ru/visitors.html — показывает информацию по аудитории. Где найти аналогичный вариант у вас — за долгие годы я так и не нашел ответ.
Каунт вообще одиночный мало полезен — юзайте таблицы статистики, а чаще используется с группировкой — и там опять же зависит от того группирует по полю распределения по кластеру — быстро, нет — медленно
Не All up, а OLAP.
И еще вопрос. Есть, к примеру, логи netflow. Там фигурирует src ip, dst ip, src port, dst port, bytes, packets и все в таком духе.
Типичный паттерн когда клиент с одного и того же IP адреса устанавливает кучу соединений к другим адресам, а они ему отвечают (torrent).
Насколько эфективно база CH может сжать вот эти последовательности в логах?
ClickHouse: очень быстро и очень удобно