постгри в КХ. Есть какие-нибудь проверенные варианты? Пока что всё что нашёл, совсем недоделанное
Скорее нет, чем да Ну и смотря на объемы конечно же. Просто так скопировать таблицы с ПГ в КХ врядли что-то даст, а скорее будет хуже
Некоторые люди делают через debezium + Kafka А у вас какой объем данных в постгре
да смешной объём. 8 гиг
А вы как их использовать будете?
Egor, [15 февр. 2022 г., 22:00:52]: в таблице клиентов 2млн записей. это копейки Руслан, [15 февр. 2022 г., 22:02:00]: из этой таблицы я делаю таблицу на несколько сотен миллионов записей чтобы после построить график активных клиентов на определенный период времени и тут у меня по памяти все падает)
зависит от того, как таблицу разместили и о каком расходе памяти идет речь кидайте больше информации и вам подскажут
Выглядит так как будто у вас подписочный сервис и записи о подписка хранятся в виде полей start, end. А аналитик эти интервалы в памяти разворачивает в столбцы суточной гранулярности
Добрый вечер, таблицы заведены через движок таблиц PostgreSQL, по расходу памяти точно не могу сказать, но при запросах вsдает ошибки Clickhouse: DB::Exception: Memory limit (for query) exceeded ClickHouse exception, code: 210, host: xxx.xxx.x.xx, port: xxxx; Connect to xxx.xxx.x.xx:xxxx failed: Connection refused (Connection refused) Сами данные нужны для формирования графиков, отчетов, дашбордов (через BI систему)
Легче не стало) приведите пример данных источника и что хотите получить на выходе. Ну и какие лимиты стоят на сервере
не советую данные из Engine=PostgreSQL напрямую использовать в отчетах это Proxy движок запрос просто переписывается пробрасывается в Postgres с WHERE но без ORDER BY и GROUP BY которые потом делаются на clickhouse и требуют памяти лучше всего через dbt какой нибудь или просто через INSERT INTO ... SELECT ... сделать ENgine=MergeTree() Таблицы тогда от ClickHouse Будет толк
Ну конкретно сейчас есть таблица с пользователями: № Пользователя Дата начала Дата окончания 123456 2022-02-01 2022-02-03 Нужно получить: № Дата 123456 2022-02-01 123456 2022-02-02 123456 2022-02-03 В таблице 2 миллиона пользователей, период действия может быть от 1 года и более, в итоге получается таблица на несколько сотен миллионов строк. Памяти выделено 8 гб на сервере и на запрос стоит значение по умолчанию - 10 гб Если действовать через движок постри то выпадают ошибки по нехватки памяти, по истечению времени на выполнение запроса либо просто отваливается подключение к серверу. Я перенес данные в таблицу КХ с движком MergeTree(), и все заработало без ошибок, вывод формируется за считанные секунды. Подобные запросы периодически нужно делать для разных задач. Вопрос есть ли способы импортировать данные из постгри в КХ, чтоб данные хранились в КХ и так же чтоб в таблицах добавлялись новые записи?
Если у Вас в таблице записи не обновляется, а только добавляются, то что мешает их добавлять в КХ?
И еще один вопрос возник. А зачем размножать так строки? Я так понимаю, Вы же потом их все равно агрегируете? Если же нужно собрать данные без пропусков, то вряд ли это нужно за очень длительное время. В этом случае выборка будет уже содержать не так уж и много, наверное.
на 2млн записей самый простой вариант фул апдейт, просто перезаливать периодически, должно за несколько секунд проходить потом уже можно смотреть на вариант debezium + kafka или движок MaterializedPostgreSQL
Обновляться они тоже должны, забыл указать
Тогда просто перезаливать, действительно.
Даже если брать за прошедший год, записей все равно много. В этом случае данные могут понадобится и за конкретный день
Попробуем, спасибо!
Тогда есть смысл оптимизировать запрос, ограничивая выборку по периоду и уже потом размножать строки
явно где то есть какое то условие о котором вы забыли упомянуть. Вот я иду в постгре: SELECT user_id, toDate(start) AS s, toDate(end) AS e, arrayJoin(arrayMap(x -> (s + x), range(assumeNotNull(toUInt16(e - s))))) AS days FROM postgresql(...) Из квери лога: query_duration_ms: 55 196 result_rows: 348 846 727 memory_usage: 427 745 710 Откуда потребление в 8Гб?
Я дико извиняюсь, за своевременный ответ, не могли бы вы подсказать, как вы сгенерировали таблицу? Хочу сравнить данные у меня получается по такому же запросу из моей таблицы query_duration_ms: 14 732 result_rows: 17 627 581 memory_usage: 4 304 970 671 при том что результат на запрос select count(*) from ( select policy_id, toDate(start_date) AS s, toDate(end_date) AS e, arrayJoin(arrayMap(x -> (s + x), range(assumeNotNull(toUInt16(e - s))))) AS days from policies_test p ) выдает - 2 595 716 571
про генерацию не уловил, я просто взял таблицу из постгре в которой 20млн записей ну и скрипт выше
Обсуждают сегодня