User Tools

Site Tools


arenadata_db

Наполнение ADB данными из PostgreSQL

1) Как лучше всего наполнять хранилище? CDC, pxf, через обычные batch/snapshot INSERT?

2) Как лучше организовать поток данных, когда есть 30+ транзакционных баз на PostgreSQL одно DWH для аналитики и нужно всё собрать в одном месте для аналитики, чтобы аналитики быстро получали свои инсайты в данных.

Сейчас есть GP, но он абсолютно пустой, надо его протестить, нагнать туда данных и прочее. Как это лучше всего сделать?


так как данные будут браться из PostgreSQL, то можно попробовать использовать команду COPY. Думаю, это будет самый быстрый способ. Сейчас попробовал перенести данные из PostgreSQL15 в GP6 - формат при использовании ключевого слова binary совпадает (таблица была create table t(i int, t text, d timestamp) - то есть как минимум для этих трех типов). Если известно распределение данных по сегментам, то загрузку можно выполнять параллельно сразу на все сегменты через параметр “on segment”. Без этого параметра загрузка будет через мастер - работать будет медленнее, зато сделать проще. если хочется еще быстрее, можно отключить gp_enable_segment_copy_checking, чтобы при вставке не выполнялась проверка на соответствие строки сегменту вот такой командой перегнал данные через мастер

su - keremet -c "/home/keremet/compile/postgresql_bin/bin/psql postgres -c \"copy t to stdout binary;\"" | psql postgres -c "copy t from stdin binary;"

https://gpdb.docs.pivotal.io/6-3/ref_guide/sql_commands/COPY.html

Команды:

export PGDATABASE=postgres
export PGDATA=/tmp/ggg
export PATH=/home/keremet/compile/postgresql_bin/bin:$PATH
rm -rf /tmp/ggg ; initdb -k
pg_ctl -w  -D /tmp/ggg -l /tmp/logfile start
/home/keremet/compile/postgresql_bin/bin/psql postgres -c "create table t(i int, t text, d timestamp); insert into t select i, (i+1)::text, clock_timestamp() from generate_series(1,500) i;"
/home/keremet/compile/postgresql_bin/bin/psql postgres -c "copy t to stdout;"
/home/keremet/compile/postgresql_bin/bin/psql postgres -c "copy t to stdout binary;" > /tmp/1
arenadata_db.txt · Last modified: 2023/01/03 20:31 by keremet