Pregunta

Tengo una tabla que tiene que ser poblada cada hora a partir de los datos que se sacó de Greenplum.Esta tabla se almacena en el Greenplum servidor.

Así,lo que quiero saber es que ¿qué método(secuencia de comandos de python, el programador de windows o cualquier cosa) será el adecuado para mi de datos(que supongo que puede ser tan enorme como la de 60 gb o más) debe ser utilizado para la programación de la consulta(escrito en postgreSQL) para que se ejecute cada hora.

Alguien puede adjuntar un código de ejemplo para el mismo?

¿Fue útil?

Solución

Usted va a querer hacer un paralelo COPY de los rangos de los datos de Greenplum y en PostgreSQL.Asegúrese de PostgreSQL está configurado para una rápida carga de datos.Si es posible, utilice un UNLOGGED la tabla;de lo contrario, el uso de wal_level = 'minimal' al menos.

Cuántos paralelo a los trabajadores depende del servidor PostgreSQL subsistema de e/s más que nada.Probar y ver.

Me gustaría recomendar el uso de Python con psycopg2 y la copy_expert función de cursor.Ver el docs.El uso de multiprocesamiento con un tubo para compartir un archivo como objeto entre un lector y un escritor trabajador, con el lector conectado a greenplum y el escritor a PostgreSQL.

Así que efectivamente cada trabajador hace algo que es un poco como el shell siguiente pseudo-código:

psql -h greenplum-box \
     -c "COPY (SELECT * FROM mytable WHERE id BETWEEN 1 AND 10000) TO stdin" \
  | \
psql -h postgres-box \
     -c "COPY myttable FROM stdin";

(pero de conectar los dos hasta el uso de pyscopg2, copy_export, multiprocesamiento, y un tubo).

Hacer todo lo rápido de la carga de trabajo como la creación de índices después.Ver cómo acelerar el rendimiento de la inserción en PostgreSQL.

Si usted tiene el espacio en disco, crear una tabla como dataload_temp, rellenar, a continuación, en una transacción de la caída de la antigua y cambiar el nombre de la nueva a la vieja del nombre.De esa manera hay una mínima interrupción.

Alternativamente, echa un vistazo a pg_bulkload para off-line (pero no de streaming) a granel carga de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top