выбора одного против другого)
Например, PostgresqlEngine(https://clickhouse.com/docs/en/engines/database-engines/postgresql/) vs Postgresql в external dictionary (https://clickhouse.com/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources/#dicts-external_dicts_dict_sources-postgresql)
обычно вся эта оптимизация делается для джойнов. Надо соединить много источников данных в отдном отчете. Ответ зависит от того насколько велики данные и сколько вы готовы ждать. Если запросы раз в день и ожидание в несколько минут-часов вас устраивает, то можно джойнить напрямую с таблицами в постгресе. Но если запросы идут огромным потоком, и отвечать надо быстро, то лучше сделать словарь, который живет в памяти сервера. Но памяти тогда нужно достаточное количество.
Но там же написано. PostgresqlEngine по сути postgres_fdw, то есть представление, не хранит данные, выполняется на лету. Postgresql в external dictionary - хранение данных в памяти или на диске (если конечно не указано direct)
в чем тогда разница между MaterializedPostgreSQL и Postgresql в external dictionary ?
Почитайте доку. В целом то что это абсолютно разные способы получения данных из PostgreSQL.
в первом случае вы читаете локальную таблицу (КХ как узел PG кластера), во втором идет обращение по сети к удаленному PG. Но вы там поосторожнее с источниками словарей - не все способы хранения поддерживают все источники. Вот к примеру для cached - Supported sources: MySQL, ClickHouse, executable, HTTP.
Это лучше на практике проверить, могли просто забыть добавить
Спасибо за ответы
Обсуждают сегодня