compresión de datos postgresql tcp

¿Existe algún método interno en postgresql para habilitar la compresión de datos a través de la conexión psql a través del socket tcp?

También puedo usar algún otro método que no sea interno de postgresql, como la compresión ssh o cualquier otra compresión vpn. Sin embargo, esto puede aumentar la complejidad.

Saludos,

preguntado el 28 de agosto de 11 a las 01:08

Ajustar sus consultas para devolver solo lo que se necesita probablemente sería un enfoque más simple. -

Esto sería genial para jdbc así como. ETL que usa Java generalmente requiere una gran cantidad de datos (y, por lo tanto, mucho tráfico de red). -

Sin embargo, puede valer la pena. En nuestro tráfico de replicación mixto, la compresión SSL reduce el volumen de tráfico en casi un 70% y el recuento de paquetes a la mitad. Si está ejecutando un servidor ocupado con una asignación de transferencia limitada, eso es un ahorro que puede llevar al banco. Tenga en cuenta que esto es adicional a la opción para WAL comprimido. -

2 Respuestas

Parece que a partir de postgresql 9.2 hay un opción sslcompression que por defecto es verdadero. Sin embargo, requiere que la biblioteca openssl usada esté construida con soporte zlib para funcionar. Por ejemplo, los binarios de openssl en los instaladores de bases de datos empresariales de Windows no tienen este soporte. ¡También ambos lados tienen por supuesto que apoyarlo!

respondido 02 mar '18, 14:03

Esto es cada vez más difícil gracias a CRIME. No solo debe establecer sslcompression = 1 en la cadena de conexión (o usar la variable de entorno PGSSLCOMPRESSION = 1), sino también compilar OpenSSL con las opciones zlib-dynamic o zlib (no no-zlib) y (para OpenSSL 1.1.1) establecer Compresión = On y MaxProtocol = TLSv1.2 en /etc/ssl/openssl.cnf (para Debian, de todos modos). Esto se debe a que TLS 1.3 elimina la compresión zlib y requiere que los clientes envíen un TLS 1.3 ClientHello sin método de compresión; si el servidor se degrada a TLS 1.2, no tendrá compresión, solo lo hará si el cliente envía un TLS 1.2 ClientHello. - GreenReaper

Cuando hacía la misma pregunta hace unos dos meses, la única respuesta era: use SSH. Sin embargo, no lo he comprobado, ya que logramos dividir la columna en dos y descargar alrededor de 200 kB por consulta en lugar de 20 MB y fue suficiente.

Teníamos grandes filas en una tabla (con JSON adentro). Tu problema puede ser ligeramente diferente. ¿Quizás está obteniendo filas que no necesita? Lo he visto demasiadas veces: obtenga todas las filas de una tabla, ordene la aplicación, luego obtenga las primeras 10 ... cuando sea suficiente para usar order by y limit.

Respondido 28 ago 11, 13:08

ssh no es útil para este propósito. Para implementar la compresión ssh tenemos que tener un túnel ssh anclado a localhost: someport y tenemos que mostrarle al software este puerto virtual como puerto postgresql. ¿Puedes sugerir alguna otra forma? Es difícil entender por qué no se desarrolla tal compresión si el protocolo se basa en tcp y trata con grandes cantidades de datos. - Seaquest

Puede llamar a psql en una máquina remota como esta: ssh -t psql - Amandasaurus

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.