sql >> Base de Datos >  >> RDS >> PostgreSQL

Características nuevas y en evolución de PostgreSQL Enterprise con versiones recientes

PostgreSQL también introdujo muchas otras funciones innovadoras en las versiones 10 a 11, 12 y 13 que lo convierten en un verdadero competidor de Oracle, como mejoras en la partición, consultas paralelas y replicación lógica. En esta publicación de blog, mostraremos algunas de las características nuevas y notables de PostgreSQL incluidas en las versiones más recientes de PostgreSQL.

Características de partición

Particionamiento declarativo

Hasta la versión 9.4 de PostgreSQL, no había particiones reales en PostgreSQL. Se logró solo a través de la herencia de tablas, que ofrecía una funcionalidad y beneficios de rendimiento muy limitados. Gran parte de la funcionalidad se administra manualmente a través de disparadores o comandos SQL. Por ejemplo, tuvimos que usar disparadores para dirigir una fila antes de INSERTAR a la partición correcta. Tenemos que crear índices para cada partición por separado. La versión 10 de PostgreSQL dio origen a la partición declarativa, pero aún teníamos que crear restricciones e índices para cada partición.

PostgreSQL 11 viene completo con un impresionante conjunto de nuevas funciones de particionamiento para ayudar a mejorar el rendimiento y también para ayudar a que las tablas particionadas sean más transparentes para las aplicaciones.

Replicación lógica de tablas particionadas

Con PostgreSQL 13, introdujeron la compatibilidad con la replicación lógica de tablas particionadas. Anteriormente, se vio obligado a replicar particiones en sus recursos de reserva de forma individual. Ahora, sin embargo, puede replicar automáticamente todas sus particiones al mismo tiempo

Métodos de partición

Los métodos de partición admitidos actualmente son rango, lista y hash.

Teclas e índices

Se agregó soporte completo para claves foráneas en tablas particionadas en PostgreSQL 12. PostgreSQL también cuenta con soporte para claves primarias, índices y disparadores en tablas particionadas.

Partición predeterminada

PostgreSQL permite la creación de una partición "predeterminada" para almacenar datos que no coinciden con ninguna de las particiones restantes. A los usuarios de Oracle les encantará esta función, ya que no está disponible en Oracle Database.

Movimiento de fila

Las instrucciones UPDATE que cambian una columna de clave de partición ahora hacen que las filas afectadas se muevan a las particiones apropiadas.

Poda de partición

Mejore el rendimiento de SELECT a través de estrategias mejoradas de eliminación de particiones durante la planificación y ejecución de consultas. Se ha agregado un nuevo método para realizar la eliminación de particiones. Este nuevo algoritmo puede determinar las particiones coincidentes observando la cláusula WHERE de la consulta. El algoritmo anterior verificó cada partición, a su vez, para ver si podía coincidir con la cláusula WHERE de la consulta. Esto dio como resultado un aumento adicional en el tiempo de planificación a medida que crecía el número de particiones.

Depuración de particiones durante la ejecución de consultas

En cuanto a las declaraciones preparadas, los parámetros de consulta no se conocen antes de la ejecución. Query Planner no puede eliminar particiones durante la fase de planificación porque no se conocen los parámetros. Por lo tanto, el ejecutor elimina la partición durante la ejecución para acceder solo a las particiones que coinciden con los parámetros.

Funciones empresariales de PostgreSQL nuevas y en evolución con versiones recientesHaga clic para twittear

Características de indexación

Índice de cobertura

PostgreSQL ahora le permite agregar columnas que no son clave en el índice btree. Dado que las consultas generalmente necesitan recuperar más columnas que solo las que buscan, PostgreSQL le permite crear un índice en el que algunas columnas son solo "carga útil" y no son parte de la clave de búsqueda. Ayuda a realizar escaneos de solo índice para recuperar las filas requeridas.

Reindexar simultáneamente

Iniciando PostgreSQL 12, es posible reconstruir un índice con REINDEX CONCURRENTEMENTE sin bloquear la tabla para lectura/escritura, al igual que el comando Oracle REBUILD INDEX.

Creación de índices paralelos

Con la creación de índices paralelos (introducida en PostgreSQL 11, actualmente aplicable solo para índices b-tree), los índices se pueden crear más rápido hasta el valor de max_parallel_workers y al establecer el valor de maintenance_work_mem lo suficientemente grande como para contener múltiples copias de datos. La creación de índices paralelos puede reducir significativamente el tiempo de creación de índices.

Deduplicación de datos en índices B-Tree

A veces habrá entradas duplicadas en un índice. Esto significa que un nodo de hoja en un índice B-Tree con al menos dos entradas de índice en el mismo índice contiene los mismos datos para todas las columnas de índice. Con la adición de la deduplicación en PostgreSQL 13, puede agrupar estas entradas de índice B-Tree duplicadas y reunirlas en una entrada de grupo. El beneficio de esto es ahorrar espacio y reducir la carga en el disco y la RAM, ya que no tendrá que duplicar los datos de las columnas. Las entradas duplicadas también provocan un índice inflado no deseado.

Autenticación

SCRAM-SHA-256

En PostgreSQL 11 vino soporte para la autenticación de contraseña SCRAM-SHA-256. Este método evita la detección de contraseñas en conexiones que no son de confianza y le permite almacenar sus contraseñas en forma de hash criptográfico.

De todos los métodos de autenticación de contraseña admitidos actualmente, este es el más seguro.

GSSAPI

GSSAPI permite la autenticación segura, así como el inicio de sesión único automático para los sistemas que lo admiten. Este método de autenticación se basa en una biblioteca de seguridad compatible con GSSAPI. Los datos enviados a través de la conexión de la base de datos no estarán encriptados a menos que se use SSL; sin embargo, la autenticación en sí es segura. GSSAPI con autenticación Kerberos es posible con PostgreSQL de acuerdo con los estándares de la industria. Cuando se utiliza Kerberos, se utiliza un principal estándar con el formato "nombre de servicio/nombre de host@reino". Cualquier principal incluido en la tabla de claves utilizada por el servidor será aceptado por el servidor PostgreSQL.

LDAP

Al funcionar de manera similar a la autenticación de contraseña, este método de autenticación utiliza LDAP como método de verificación. Solo se usa para validar pares de nombre de usuario y contraseña, por lo tanto, el usuario ya debe existir en la base de datos para que funcione la autenticación. La autenticación LDAP funciona en un modo de vinculación simple o en lo que se denomina búsqueda+vinculación. Search+bind le permite usar otros identificadores en comparación con el modo de enlace simple, que solo permite usar el nombre distinguido, el nombre de dominio o el correo electrónico.

Certificado

El método de autenticación de certificados utiliza certificados SSL para la autenticación. En consecuencia, solo está disponible para conexiones SSL. Con la autenticación de certificado, no se requiere contraseña. El cliente simplemente necesita proporcionar un certificado válido y confiable para poder autenticarse. El nombre común del certificado se comparará con el nombre de usuario de la base de datos y, si se encuentra una coincidencia, el cliente iniciará sesión.

Otras características notables

Vacío paralelo

Con el lanzamiento de PostgreSQL 13, se implementaron mejoras en el comando VACUUM. La mejora en cuestión es la opción de parámetro agregado PARALLEL. Con PARALLEL, puede realizar las fases de vacío de índice y limpieza de índice de VACÍO. Esto le permite aspirar en paralelo múltiples índices correspondientes a una sola tabla.

Consulta paralela

La mayoría de las consultas de Reportes, que generalmente analizan una gran cantidad de datos, sufren una degradación del rendimiento debido a la necesidad de analizar o agregar datos de muchas filas, incluso con un análisis de índice. Estas consultas pueden usar solo una CPU hasta 9.4 y ejecutarse en serie.

Con la consulta en paralelo (que ofrece análisis secuencial en paralelo, unión por fusión, unión hash, agregación y otras características del plan de consultas en paralelo), estas consultas pueden aprovechar varios trabajadores y el rendimiento puede mejorar de 2x a 10x según la documentación.

Consulte esta publicación para saber cuándo usar consultas paralelas.

Replicación lógica nativa

PostgreSQL introdujo la replicación lógica nativa en la versión 10 para brindar una opción de replicación más flexible, a diferencia de la replicación de transmisión y más como Oracle Streams, para replicar tablas, columnas o filas específicas. Esto se puede usar para dividir entre múltiples bases de datos o consolidar desde múltiples bases de datos. Y también puede replicar entre diferentes versiones principales de PostgreSQL.

Procedimientos almacenados con transacciones integradas

Otra adición más que hace que PostgreSQL sea compatible para migraciones desde la base de datos Oracle.

No tenemos ningún control de transacción dentro del programa pgsql (bloque DO o función) en la versión 9.4, y tenemos que usar una solución alternativa como dblink para iniciar y confirmar/revertir transacciones .

Con los procedimientos almacenados, que se estrenaron en la versión 11, ahora podemos implementar el control de transacciones dentro de cualquier estructura de pgsql como bucle while, bucle for o declaración if else. Aunque los procedimientos almacenados son similares a las funciones, deben invocarse mediante el comando CALL y pueden funcionar como programas independientes.

Columnas generadas

Al igual que la base de datos de Oracle, las columnas generadas en PostgreSQL pueden almacenar los datos calculados automáticamente a partir de otras columnas dentro de la fila. Esto acelera las consultas al no tener que calcular el valor durante la ejecución de la consulta y, en su lugar, el valor de la columna generada se calcula al INSERTAR o ACTUALIZAR en la fila.

Compilación JIT

PostgreSQL 11, 12 y 13 son compatibles con la compilación Just-in-Time (JIT), que se agregó en 2018. La compilación JIT es el proceso de convertir una evaluación de programa interpretada en un programa nativo. Con la compilación JIT, este proceso se puede realizar en tiempo de ejecución. Una ventaja de JIT es la posibilidad de generar funciones específicas de expresión que la CPU puede ejecutar de forma nativa. A su vez, el proceso te da una aceleración.

Sumas de comprobación de página

Las sumas de comprobación de página son una función que le ayuda a verificar la integridad de los datos almacenados en el disco. Anteriormente, solo podía habilitar sumas de verificación de página durante la inicialización de un clúster de PostgreSQL. PostgreSQL 12 introdujo la capacidad de habilitar o deshabilitar sumas de verificación de página en un clúster fuera de línea a través del comando pg_checksums.

Resumen

Como puede ver en este artículo, PostgreSQL es un sistema de base de datos en constante evolución que trae muchas características poderosas a la mesa. Cada nueva versión agrega nuevas funciones interesantes que lo convierten en un verdadero competidor para otras bases de datos como Oracle. Sus funciones de creación de particiones e indexación obtienen muchas actualizaciones nuevas que se suman a su ya amplia caja de herramientas.

Si está buscando una solución administrada para su base de datos PostgreSQL, no dude en consultar nuestro servicio ScaleGrid para PostgreSQL. Ofrecemos una prueba gratuita de 30 días que le permite utilizar todas nuestras funciones de administración sin restricciones. El precio comienza en solo $ 10 / mes y le brinda acceso a una solución de alojamiento PostgreSQL de nivel empresarial totalmente administrada con soporte 24/7.