stringtranslate.com

PostgreSQL

PostgreSQL ( / ˌ p s t ɡ r ɛ s k j u ˈ ɛ l / POHST -gres -kew- EL ) [11] [12] también conocido como Postgres , es un sistema de gestión de bases de datos relacionales (RDBMS) gratuito y de código abierto que enfatiza la extensibilidad y la conformidad con SQL . PostgreSQL presenta transacciones con propiedades de atomicidad , consistencia , aislamiento y durabilidad ( ACID ), vistas actualizables automáticamente , vistas materializadas , activadores , claves externas y procedimientos almacenados . [13] Es compatible con todos los principales sistemas operativos , incluidos Windows , Linux , macOS , FreeBSD y OpenBSD , y maneja una variedad de cargas de trabajo desde máquinas individuales hasta almacenes de datos , lagos de datos [ 14] o servicios web con muchos usuarios simultáneos .

El Grupo de Desarrollo Global de PostgreSQL se centra únicamente en el desarrollo de un motor de base de datos y componentes estrechamente relacionados. Este núcleo es, técnicamente, lo que comprende PostgreSQL en sí, pero existe una extensa comunidad de desarrolladores y un ecosistema que proporciona otros conjuntos de características importantes que, tradicionalmente, podrían proporcionarse por un proveedor de software propietario. Estos incluyen características de motor de base de datos de propósito especial, como las necesarias para soportar una base de datos geoespacial [15] o temporal [16] o características que emulan otros productos de base de datos. [17] [18] [19] [20] También están disponibles de terceros una amplia variedad de características de interfaz de usuario y de máquina, como interfaces gráficas de usuario [21] [22] [23] o conjuntos de herramientas de equilibrio de carga y alta disponibilidad . [24] La gran red de soporte de PostgreSQL de terceros de personas, empresas, productos y proyectos, aunque no forman parte del Grupo de Desarrollo de PostgreSQL, son esenciales para la adopción y el uso del motor de base de datos PostgreSQL y conforman el ecosistema PostgreSQL en general. [25]

PostgreSQL se denominó originalmente POSTGRES, en referencia a sus orígenes como sucesor de la base de datos Ingres desarrollada en la Universidad de California, Berkeley . [26] [27] En 1996, el proyecto pasó a llamarse PostgreSQL para reflejar su compatibilidad con SQL . Después de una revisión en 2007, el equipo de desarrollo decidió mantener el nombre PostgreSQL y el alias Postgres. [28]

Historia

PostgreSQL evolucionó a partir del proyecto Ingres en la Universidad de California, Berkeley. En 1982, el líder del equipo Ingres, Michael Stonebraker , dejó Berkeley para crear una versión propietaria de Ingres. [26] Regresó a Berkeley en 1985 y comenzó un proyecto posterior a Ingres para abordar los problemas con los sistemas de bases de datos contemporáneos que se habían vuelto cada vez más claros a principios de la década de 1980. Ganó el Premio Turing en 2014 por estos y otros proyectos, [29] y las técnicas que se utilizaron en ellos.

El nuevo proyecto, POSTGRES, tenía como objetivo añadir la menor cantidad de características necesarias para soportar completamente los tipos de datos . [30] Estas características incluían la capacidad de definir tipos y describir completamente las relaciones, algo que se usa ampliamente, pero que el usuario mantiene completamente. En POSTGRES, la base de datos entendía las relaciones y podía recuperar información en tablas relacionadas de manera natural usando reglas . POSTGRES utilizó muchas de las ideas de Ingres, pero no su código. [31]

A partir de 1986, los artículos publicados describieron la base del sistema y se mostró una versión prototipo en la Conferencia ACM SIGMOD de 1988. El equipo lanzó la versión 1 a un pequeño número de usuarios en junio de 1989, seguida de la versión 2 con un sistema de reglas reescrito en junio de 1990. La versión 3, lanzada en 1991, volvió a reescribir el sistema de reglas y agregó soporte para múltiples administradores de almacenamiento [32] y un motor de consultas mejorado. En 1993, la cantidad de usuarios comenzó a abrumar al proyecto con solicitudes de soporte y características. Después de lanzar la versión 4.2 [33] el 30 de junio de 1994, principalmente una limpieza, el proyecto finalizó. Berkeley lanzó POSTGRES bajo una variante de la Licencia MIT , que permitía a otros desarrolladores usar el código para cualquier uso. En ese momento, POSTGRES usaba un intérprete de lenguaje de consulta POSTQUEL influenciado por Ingres , que podía usarse de forma interactiva con una aplicación de consola llamada monitor.

En 1994, los estudiantes de posgrado de Berkeley Andrew Yu y Jolly Chen reemplazaron el intérprete de lenguaje de consulta POSTQUEL por uno para el lenguaje de consulta SQL, creando Postgres95. La monitorconsola también fue reemplazada por psql. Yu y Chen anunciaron la primera versión (0.01) a los evaluadores beta el 5 de mayo de 1995. La versión 1.0 de Postgres95 se anunció el 5 de septiembre de 1995, con una licencia más liberal que permitía que el software se modificara libremente.

El 8 de julio de 1996, Marc Fournier de Hub.org Networking Services proporcionó el primer servidor de desarrollo no universitario para el esfuerzo de desarrollo de código abierto. [3] Con la participación de Bruce Momjian y Vadim B. Mikheev, se comenzó a trabajar para estabilizar el código heredado de Berkeley.

En 1996, el proyecto cambió su nombre a PostgreSQL para reflejar su compatibilidad con SQL. La presencia en línea en el sitio web PostgreSQL.org comenzó el 22 de octubre de 1996. [34] La primera versión de PostgreSQL, la 6.0, se lanzó el 29 de enero de 1997. Desde entonces, desarrolladores y voluntarios de todo el mundo han mantenido el software como The PostgreSQL Global Development Group. [2]

El proyecto continúa publicando versiones bajo su licencia PostgreSQL de software libre y de código abierto . El código proviene de contribuciones de proveedores propietarios, empresas de soporte y programadores de código abierto.

Control de concurrencia multiversión (MVCC)

PostgreSQL administra la concurrencia a través del control de concurrencia multiversión (MVCC), que proporciona a cada transacción una "instantánea" de la base de datos, lo que permite realizar cambios sin afectar a otras transacciones. Esto elimina en gran medida la necesidad de bloqueos de lectura y garantiza que la base de datos mantenga los principios ACID . PostgreSQL ofrece cuatro niveles de aislamiento de transacciones : lectura no confirmada, lectura confirmada, lectura repetible y serializable. Debido a que PostgreSQL es inmune a las lecturas sucias, solicitar un nivel de aislamiento de transacción de lectura no confirmada proporciona lectura confirmada en su lugar. PostgreSQL admite la serialización completa a través del método de aislamiento de instantáneas serializables (SSI). [35] La implementación de PostgreSQL MVCC es propensa a problemas de rendimiento que requieren ajustes cuando se encuentra bajo una carga de escritura pesada que actualiza las filas existentes. [36]

Almacenamiento y replicación

Replicación

PostgreSQL incluye replicación binaria incorporada basada en el envío de los cambios ( registros de escritura anticipada (WAL)) a los nodos de réplica de forma asincrónica, con la capacidad de ejecutar consultas de solo lectura contra estos nodos replicados. Esto permite dividir el tráfico de lectura entre varios nodos de manera eficiente. El software de replicación anterior que permitía un escalamiento de lectura similar normalmente dependía de agregar activadores de replicación al maestro, lo que aumentaba la carga.

PostgreSQL incluye una replicación sincrónica incorporada [37] que garantiza que, para cada transacción de escritura, el maestro espera hasta que al menos un nodo de réplica haya escrito los datos en su registro de transacciones. A diferencia de otros sistemas de bases de datos, la durabilidad de una transacción (ya sea asincrónica o sincrónica) se puede especificar por base de datos, por usuario, por sesión o incluso por transacción. Esto puede ser útil para cargas de trabajo que no requieren tales garantías y puede que no sea deseable para todos los datos, ya que ralentiza el rendimiento debido al requisito de la confirmación de que la transacción llega al nodo de reserva sincrónico.

Los servidores en espera pueden ser sincrónicos o asincrónicos. Los servidores en espera sincrónicos se pueden especificar en la configuración, lo que determina qué servidores son candidatos para la replicación sincrónica. El primero de la lista que esté transmitiendo activamente se utilizará como servidor sincrónico actual. Cuando esto falla, el sistema pasa al siguiente en la lista.

La replicación sincrónica multimaestro no está incluida en el núcleo de PostgreSQL. Postgres-XC, que se basa en PostgreSQL, proporciona una replicación sincrónica multimaestro escalable. [38] Tiene la misma licencia que PostgreSQL. Un proyecto relacionado se llama Postgres-XL . Postgres-R es otra bifurcación . [39] La replicación bidireccional (BDR) es un sistema de replicación asincrónica multimaestro para PostgreSQL. [40]

Herramientas como repmgr facilitan la gestión de clústeres de replicación.

Hay varios paquetes de replicación basados ​​en activadores asincrónicos disponibles. Estos siguen siendo útiles incluso después de la introducción de las capacidades básicas ampliadas, para situaciones en las que la replicación binaria de un clúster de base de datos completo no es adecuada:

Índices

PostgreSQL incluye soporte integrado para índices de tablas hash y árboles B regulares , y cuatro métodos de acceso a índices: árboles de búsqueda generalizados ( GiST ), índices invertidos generalizados (GIN), GiST con particiones espaciales (SP-GiST) [42] e índices de rango de bloques (BRIN). Además, se pueden crear métodos de índice definidos por el usuario, aunque se trata de un proceso bastante complejo. Los índices en PostgreSQL también admiten las siguientes características:

Esquemas

Los esquemas de PostgreSQL son espacios de nombres que permiten que objetos del mismo tipo y nombre coexistan en una única base de datos. No deben confundirse con un esquema de base de datos (la especificación abstracta, estructural y organizativa que define cómo se relacionan los datos de cada tabla con los datos de otras tablas). Todos los objetos de la base de datos de PostgreSQL, excepto algunos objetos globales como roles y tablespaces , existen dentro de un esquema. No se pueden anidar, los esquemas no pueden contener esquemas. El sistema de permisos controla el acceso a los esquemas y su contenido. De forma predeterminada, las bases de datos recién creadas tienen un solo esquema llamado público , pero se pueden agregar otros esquemas y el esquema público no es obligatorio.

Una search_pathconfiguración determina el orden en el que PostgreSQL comprueba los esquemas en busca de objetos no calificados (aquellos sin un esquema prefijado). De manera predeterminada, está establecida en $user, public( $userse refiere al usuario de la base de datos conectado actualmente). Este valor predeterminado se puede establecer en un nivel de base de datos o de rol, pero como es un parámetro de sesión, se puede cambiar libremente (incluso varias veces) durante una sesión de cliente, lo que afecta solo a esa sesión.

Los esquemas inexistentes u otros esquemas no accesibles para el usuario conectado, que se enumeran en search_path, se omiten silenciosamente durante la búsqueda de objetos.

Los nuevos objetos se crean en cualquier esquema válido (al que se pueda acceder) que aparezca primero en search_path.

Tipos de datos

Se admite una amplia variedad de tipos de datos nativos, incluidos:

Además, los usuarios pueden crear sus propios tipos de datos, que normalmente pueden indexarse ​​completamente a través de las infraestructuras de indexación de PostgreSQL (GiST, GIN, SP-GiST). Algunos ejemplos de estos son los tipos de datos del sistema de información geográfica (GIS) del proyecto PostGIS para PostgreSQL.

También existe un tipo de datos denominado dominio , que es igual que cualquier otro tipo de datos, pero con restricciones opcionales definidas por el creador de ese dominio. Esto significa que cualquier dato ingresado en una columna que utilice el dominio deberá cumplir con las restricciones que se hayan definido como parte del dominio.

Se puede utilizar un tipo de datos que represente un rango de datos, denominados tipos de rango. Estos pueden ser rangos discretos (por ejemplo, todos los valores enteros del 1 al 10) o rangos continuos (por ejemplo, cualquier hora entre las 10:00 a. m. y las 11:00 a. m. ). Los tipos de rango integrados disponibles incluyen rangos de números enteros, números enteros grandes, números decimales, marcas de tiempo (con y sin zona horaria) y fechas.

Se pueden crear tipos de rango personalizados para que estén disponibles nuevos tipos de rangos, como rangos de direcciones IP que utilizan el tipo inet como base, o rangos flotantes que utilizan el tipo de datos flotante como base. Los tipos de rango admiten límites de rango inclusivos y exclusivos utilizando los caracteres []y respectivamente. (p. ej., representa todos los números enteros a partir del 4 inclusive hasta el 9, pero sin incluirlo). Los tipos de rango también son compatibles con los operadores existentes que se utilizan para comprobar la superposición, la contención, el derecho de, etc.()[4,9)

Objetos definidos por el usuario

Se pueden crear nuevos tipos de casi todos los objetos dentro de la base de datos, incluidos:

Herencia

Las tablas se pueden configurar para heredar sus características de una tabla principal . Los datos de las tablas secundarias aparecerán como si existieran en las tablas principales, a menos que se seleccionen datos de la tabla principal mediante la palabra clave ONLY, es decir , . Al agregar una columna en la tabla principal, dicha columna aparecerá en la tabla secundaria.SELECT * FROM ONLY parent_table;

La herencia se puede utilizar para implementar la partición de tablas, utilizando activadores o reglas para dirigir las inserciones de la tabla principal a las tablas secundarias adecuadas.

Esta característica no es totalmente compatible. En particular, las restricciones de tabla no son heredables actualmente. Todas las restricciones de comprobación y restricciones de valores no nulos de una tabla principal son heredadas automáticamente por sus tablas secundarias. Otros tipos de restricciones (restricciones de clave única, clave principal y clave externa) no se heredan.

La herencia proporciona una manera de mapear las características de las jerarquías de generalización representadas en los diagramas entidad-relación (ERD) directamente en la base de datos PostgreSQL.

Otras funciones de almacenamiento

Control y conectividad

Envoltorios de datos extranjeros

PostgreSQL puede vincularse a otros sistemas para recuperar datos a través de contenedores de datos externos (FDW). [46] Estos pueden tomar la forma de cualquier fuente de datos, como un sistema de archivos, otro sistema de gestión de bases de datos relacionales (RDBMS) o un servicio web. Esto significa que las consultas regulares a bases de datos pueden utilizar estas fuentes de datos como tablas normales e incluso unir varias fuentes de datos.

Interfaces

PostgreSQL admite un protocolo de comunicación binario que permite que las aplicaciones se conecten al servidor de base de datos. El protocolo tiene versiones (actualmente 3.0, a partir de PostgreSQL 7.4) y una especificación detallada. [47]

La implementación oficial del cliente de este protocolo de comunicación es una API C , libpq. [48] Además, la herramienta ECPG oficialmente compatible permite que los comandos SQL se incorporen en el código C. [49] Ambos son parte de la distribución estándar de PostgreSQL. [50]

Hay bibliotecas de terceros disponibles para conectarse a PostgreSQL para muchos lenguajes de programación , incluidos C++ , [51] Java , [52] Julia , [53] [54] [55] Python , [56] Node.js , [57] Go , [58] y Rust . [59]

Lenguajes procedimentales

Los lenguajes procedimentales permiten a los desarrolladores ampliar la base de datos con subrutinas personalizadas (funciones), a menudo llamadas procedimientos almacenados . Estas funciones se pueden utilizar para crear activadores de bases de datos (funciones que se invocan al modificar ciertos datos) y tipos de datos personalizados y funciones agregadas . [60] Los lenguajes procedimentales también se pueden invocar sin definir una función, utilizando un comando DO a nivel de SQL. [61]

Los lenguajes se dividen en dos grupos: los procedimientos escritos en lenguajes seguros están aislados y cualquier usuario puede crearlos y usarlos de forma segura. Los procedimientos escritos en lenguajes no seguros solo pueden ser creados por superusuarios , ya que permiten eludir las restricciones de seguridad de una base de datos, pero también pueden acceder a fuentes externas a la base de datos. Algunos lenguajes como Perl ofrecen versiones seguras y no seguras.

PostgreSQL tiene soporte integrado para tres lenguajes procedimentales:

Además, PostgreSQL permite cargar lenguajes procedimentales en la base de datos a través de extensiones. Se incluyen tres extensiones de lenguaje con PostgreSQL para soportar Perl , Tcl y Python . Para Python, se utiliza el actual Python 3 , y el discontinuado Python 2 ya no es compatible a partir de PostgreSQL 15. Ambos eran compatibles anteriormente, con Python 2 como valor predeterminado , mientras que las versiones antiguas y nuevas no se podían usar en la misma sesión. [62] Los proyectos externos proporcionan soporte para muchos otros lenguajes, [63] incluyendo PL/ Java , JavaScript (PL/V8), PL/ Julia , [55] PL/ R , [64] PL/ Ruby y otros.

Desencadenantes

Los activadores son eventos que se activan mediante la acción de las instrucciones del lenguaje de manipulación de datos (DML) de SQL. Por ejemplo, una instrucción INSERT puede activar un activador que comprueba si los valores de la instrucción son válidos. La mayoría de los activadores solo se activan mediante instrucciones INSERT o UPDATE .

Los activadores son totalmente compatibles y se pueden adjuntar a las tablas. Los activadores pueden ser por columna y condicionales, en el sentido de que los activadores UPDATE pueden apuntar a columnas específicas de una tabla y se les puede indicar que se ejecuten bajo un conjunto de condiciones, como se especifica en la cláusula WHERE del activador. Los activadores se pueden adjuntar a las vistas utilizando la condición INSTEAD OF. Se activan varios activadores en orden alfabético. Además de llamar a funciones escritas en el PL/pgSQL nativo, los activadores también pueden invocar funciones escritas en otros lenguajes como PL/Python o PL/Perl.

Notificaciones asincrónicas

PostgreSQL proporciona un sistema de mensajería asincrónica al que se accede a través de los comandos NOTIFY, LISTEN y UNLISTEN. Una sesión puede emitir un comando NOTIFY, junto con el canal especificado por el usuario y una carga útil opcional, para marcar la ocurrencia de un evento en particular. Otras sesiones pueden detectar estos eventos emitiendo un comando LISTEN, que puede escuchar un canal en particular. Esta funcionalidad se puede utilizar para una amplia variedad de propósitos, como informar a otras sesiones cuando se ha actualizado una tabla o para que aplicaciones independientes detecten cuándo se ha realizado una acción en particular. Un sistema de este tipo evita la necesidad de que las aplicaciones realicen sondeos continuos para ver si algo ha cambiado y reduce la sobrecarga innecesaria. Las notificaciones son completamente transaccionales, en el sentido de que los mensajes no se envían hasta que se confirma la transacción desde la que se enviaron. Esto elimina el problema de que se envíen mensajes para una acción que se está realizando y luego se revierte.

Muchos conectores para PostgreSQL proporcionan soporte para este sistema de notificación (incluidos libpq, JDBC, Npgsql, psycopg y node.js) para que pueda ser utilizado por aplicaciones externas.

PostgreSQL puede actuar como un servidor de "publicación/suscripción" o servidor de trabajos eficaz y persistente al combinar LISTEN con FOR UPDATE SKIP LOCKED. [65] [66] [67]

Normas

Las reglas permiten reescribir el "árbol de consultas" de una consulta entrante; son un lenguaje de macros que se invoca automáticamente para SQL. Las "reglas de reescritura de consultas" se adjuntan a una tabla o clase y "reescriben" la consulta DML entrante (seleccionar, insertar, actualizar y/o eliminar) en una o más consultas que reemplazan la declaración DML original o se ejecutan además de ella. La reescritura de consultas se produce después del análisis de la declaración DML y antes de la planificación de la consulta.

La funcionalidad que brindan las reglas se duplicó más tarde, en casi todos los sentidos, con la introducción de nuevos tipos de activadores. El uso de activadores suele preferirse al de reglas, ya que resulta más fácil razonar sobre el comportamiento y las interacciones de los activadores que cuando se utilizan reglas equivalentes.

Otras funciones de consulta

Modelo de concurrencia

El servidor PostgreSQL está basado en procesos (no en subprocesos) y utiliza un proceso del sistema operativo por sesión de base de datos. El sistema operativo distribuye automáticamente varias sesiones entre todas las CPU disponibles. Muchos tipos de consultas también se pueden paralelizar entre varios procesos de trabajo en segundo plano, aprovechando la posibilidad de utilizar varias CPU o núcleos. [74] Las aplicaciones cliente pueden utilizar subprocesos y crear varias conexiones de base de datos desde cada subproceso. [75]

Seguridad

PostgreSQL administra su seguridad interna en función de cada rol . Por lo general, se considera que un rol es un usuario (un rol que puede iniciar sesión) o un grupo (un rol del cual otros roles son miembros). Se pueden otorgar o revocar permisos sobre cualquier objeto hasta el nivel de columna, y se pueden permitir o impedir la visibilidad/creación/alteración/eliminación de objetos en los niveles de base de datos, esquema, tabla y fila.

La función ETIQUETA DE SEGURIDAD de PostgreSQL (extensión de los estándares SQL) permite una seguridad adicional; con un módulo cargable incluido que admite el control de acceso obligatorio basado en etiquetas (MAC) basado en la política de seguridad de Security-Enhanced Linux (SELinux). [76] [77]

PostgreSQL admite de forma nativa una amplia cantidad de mecanismos de autenticación externos, incluidos:

Los métodos GSSAPI, SSPI, Kerberos, peer, ident y certificate también pueden usar un archivo "mapa" específico que enumera qué usuarios coinciden con ese sistema de autenticación y tienen permitido conectarse como un usuario de base de datos específico.

Estos métodos se especifican en el archivo de configuración de autenticación basado en host del clúster ( pg_hba.conf), que determina qué conexiones están permitidas. Esto permite controlar qué usuario puede conectarse a qué base de datos, desde dónde puede conectarse (dirección IP, rango de direcciones IP, socket de dominio), qué sistema de autenticación se aplicará y si la conexión debe utilizar seguridad de la capa de transporte (TLS).

Cumplimiento de normas

PostgreSQL afirma tener una alta, pero no completa, conformidad con el último estándar SQL ("a partir del lanzamiento de la versión 17 en septiembre de 2024, PostgreSQL cumple con al menos 170 de las 177 características obligatorias para la conformidad con SQL:2023 Core", y ninguna otra base de datos se ajustaba completamente a él [79] ). Una excepción es el manejo de identificadores sin comillas como nombres de tablas o columnas. En PostgreSQL se convierten, internamente, a caracteres en minúscula [80] mientras que el estándar dice que los identificadores sin comillas deben convertirse a mayúsculas. Por lo tanto, Foodebería ser equivalente a FOOno foosegún el estándar. Otras deficiencias se refieren a la ausencia de tablas temporales que permitan el registro automático de versiones de filas durante las transacciones con la posibilidad de navegar en el tiempo (predicado FOR SYSTEM TIME), [ cita requerida ] aunque hay disponibles extensiones de terceros relativamente compatibles con SQL. [16]

Puntos de referencia y rendimiento

Se han realizado muchos estudios informales sobre el rendimiento de PostgreSQL. [81] Las mejoras de rendimiento destinadas a mejorar la escalabilidad comenzaron en gran medida con la versión 8.1. Los puntos de referencia simples entre la versión 8.0 y la versión 8.4 mostraron que esta última era más de diez veces más rápida en cargas de trabajo de solo lectura y al menos 7,5 veces más rápida en cargas de trabajo de lectura y escritura. [82]

El primer benchmark estándar de la industria y validado por pares se completó en junio de 2007, utilizando Sun Java System Application Server (versión propietaria de GlassFish ) 9.0 Platform Edition, servidor Sun Fire basado en UltraSPARC T1 y PostgreSQL 8.2. [83] Este resultado de 778.14 SPECjAppServer2004 JOPS@Standard se compara favorablemente con 874 JOPS@Standard con Oracle 10 en un sistema HP-UX basado en Itanium . [81]

En agosto de 2007, Sun presentó una puntuación de referencia mejorada de 813,73 SPECjAppServer2004 JOPS@Standard. Con el sistema en prueba a un precio reducido, la relación precio/rendimiento mejoró de $84,98/JOPS a $70,57/JOPS. [84]

La configuración predeterminada de PostgreSQL utiliza solo una pequeña cantidad de memoria dedicada para fines críticos de rendimiento, como el almacenamiento en caché de bloques de bases de datos y la ordenación. Esta limitación se debe principalmente a que los sistemas operativos más antiguos requerían cambios en el núcleo para permitir la asignación de grandes bloques de memoria compartida . [85] PostgreSQL.org ofrece consejos sobre prácticas básicas recomendadas de rendimiento en una wiki . [86]

En abril de 2012, Robert Haas de EnterpriseDB demostró la escalabilidad lineal de la CPU de PostgreSQL 9.2 utilizando un servidor con 64 núcleos. [87]

Matloob Khushi realizó una evaluación comparativa entre PostgreSQL 9.0 y MySQL 5.6.15 para evaluar su capacidad de procesamiento de datos genómicos. En su análisis de rendimiento, descubrió que PostgreSQL extrae regiones genómicas superpuestas ocho veces más rápido que MySQL utilizando dos conjuntos de datos de 80.000 cada uno que forman regiones aleatorias de ADN humano. La inserción y la carga de datos en PostgreSQL también fueron mejores, aunque la capacidad de búsqueda general de ambas bases de datos fue casi equivalente. [88]

Plataformas

PostgreSQL está disponible para los siguientes sistemas operativos: Linux (todas las distribuciones recientes), instaladores ARM y x86-64 de 64 bits disponibles y probados para macOS (OS X) [89] versión 10.14 y más recientes, Windows (con instaladores disponibles y probados para Windows Server 2022 y 2016 de 64 bits [90] ), FreeBSD , OpenBSD , [91] NetBSD , DragonFlyBSD y estos sin ejecutables binarios oficiales (aunque probablemente no oficiales disponibles), Solaris , [92] e illumos .

Se puede esperar que PostgreSQL funcione en cualquiera de las siguientes arquitecturas de conjuntos de instrucciones (y sistemas operativos): x86-64 de 64 bits y x86 de 32 bits en Windows y otros sistemas operativos; estos son compatibles con otros sistemas además de Windows: ARM de 64 bits [93] y el antiguo ARM de 32 bits , incluido el ARMv6 en Raspberry Pi [94] ), RISC-V , z/Architecture , S/390 , PowerPC (incl. Power ISA de 64 bits ), SPARC (también de 64 bits), MIPS y PA-RISC . También se sabía que funcionaba en algunas otras plataformas (aunque no se había probado durante años, es decir, para las últimas versiones). [95]

Administración de bases de datos

Las interfaces y herramientas de código abierto para administrar PostgreSQL incluyen:

psql
La interfaz principal de PostgreSQL es el psql programa de línea de comandos , que se puede utilizar para ingresar consultas SQL directamente o ejecutarlas desde un archivo. Además, psql proporciona una serie de metacomandos y varias funciones similares a las de un shell para facilitar la escritura de scripts y la automatización de una amplia variedad de tareas; por ejemplo, la función de completar nombres de objetos y sintaxis SQL mediante tabulaciones.
Administrador de pg
El paquete pgAdmin es una herramienta de administración de interfaz gráfica de usuario (GUI) libre y de código abierto para PostgreSQL, que es compatible con muchas plataformas informáticas. [96] El programa está disponible en más de una docena de idiomas. El primer prototipo, llamado pgManager, fue escrito para PostgreSQL 6.3.2 a partir de 1998, y reescrito y publicado como pgAdmin bajo la Licencia Pública General GNU (GPL) en meses posteriores. La segunda encarnación (llamada pgAdmin II) fue una reescritura completa, publicada por primera vez el 16 de enero de 2002. La tercera versión, pgAdmin III, se publicó originalmente bajo la Licencia Artística y luego se publicó bajo la misma licencia que PostgreSQL. A diferencia de las versiones anteriores que se escribieron en Visual Basic , pgAdmin III está escrito en C++, utilizando el marco wxWidgets [97] que le permite ejecutarse en los sistemas operativos más comunes. La herramienta de consulta incluye un lenguaje de script llamado pgScript para respaldar las tareas de administración y desarrollo. En diciembre de 2014, Dave Page, el fundador y desarrollador principal del proyecto pgAdmin, [98] anunció que con el cambio hacia modelos basados ​​en la web, se había comenzado a trabajar en pgAdmin 4 con el objetivo de facilitar las implementaciones en la nube. [99] En 2016, se lanzó pgAdmin 4. El backend de pgAdmin 4 se escribió en Python , utilizando Flask y el marco Qt . [100]
Administrador de phpPg
phpPgAdmin es una herramienta de administración basada en web para PostgreSQL escrita en PHP y basada en la popular interfaz phpMyAdmin escrita originalmente para la administración de MySQL . [101]
Estudio PostgreSQL
PostgreSQL Studio permite a los usuarios realizar tareas esenciales de desarrollo de bases de datos PostgreSQL desde una consola basada en la web. PostgreSQL Studio permite a los usuarios trabajar con bases de datos en la nube sin necesidad de abrir cortafuegos. [102]
Equipo PostgreSQL
Interfaz web basada en AJAX/JavaScript para PostgreSQL. Permite explorar, mantener y crear datos y objetos de bases de datos a través de un navegador web. La interfaz ofrece un editor SQL con pestañas con autocompletado, widgets de edición de filas, navegación entre filas y tablas mediante claves externas con solo hacer clic, administración de favoritos para scripts de uso común, entre otras funciones. Admite SSH tanto para la interfaz web como para las conexiones a bases de datos . Hay instaladores disponibles para Windows, Macintosh y Linux, y un archivo multiplataforma simple que se ejecuta desde un script. [103]
LibreOffice, OpenOffice.org
LibreOffice y OpenOffice.org Base se pueden utilizar como interfaz para PostgreSQL. [104] [105]
pgTejón
El analizador de registros PostgreSQL pgBadger genera informes detallados a partir de un archivo de registro PostgreSQL. [106]
pgDevOps
pgDevOps es un conjunto de herramientas web para instalar y administrar múltiples versiones, extensiones y componentes comunitarios de PostgreSQL, desarrollar consultas SQL, monitorear bases de datos en ejecución y encontrar problemas de rendimiento. [107]
Administrador
Adminer es una sencilla herramienta de administración basada en web para PostgreSQL y otros, escrita en PHP.
pgRespaldo
pgBackRest es una herramienta de copia de seguridad y restauración para PostgreSQL que proporciona soporte para copias de seguridad completas, diferenciales e incrementales. [108]
pgaudito
pgaudit es una extensión de PostgreSQL que proporciona un registro detallado de auditoría de sesiones y/o objetos a través de la función de registro estándar proporcionada por PostgreSQL. [109]
WAL-E
WAL-E es una herramienta de copia de seguridad y restauración para PostgreSQL que proporciona soporte para copias de seguridad físicas ( basadas en WAL ), escritas en Python. [110]

Varias empresas ofrecen herramientas propietarias para PostgreSQL. A menudo, consisten en un núcleo universal adaptado a varios productos de bases de datos específicos. Estas herramientas comparten en su mayoría las funciones de administración con las herramientas de código abierto, pero ofrecen mejoras en el modelado de datos , la importación, la exportación o la generación de informes.

Usuarios destacados

Entre las organizaciones y productos notables que utilizan PostgreSQL como base de datos principal se incluyen:

Implementaciones de servicios

Algunos proveedores destacados ofrecen PostgreSQL como software como servicio :

Historial de versiones

Leyenda:
Versión antigua, sin mantenimiento
Versión antigua, aún mantenida
Última versión
Última versión preliminar
Lanzamiento futuro

Véase también

Referencias

  1. ^ "PostgreSQL" . Consultado el 21 de septiembre de 2019 . PostgreSQL: la base de datos relacional de código abierto más avanzada del mundo
  2. ^ ab "Perfiles de colaboradores". PostgreSQL Global Development Group . Consultado el 14 de marzo de 2017 .
  3. ^ ab "¡Feliz cumpleaños, PostgreSQL!". PostgreSQL Global Development Group. 8 de julio de 2008.
  4. ^ "¡PostgreSQL 17 ya está disponible!". 26 de septiembre de 2024.
  5. ^ ab "Licencia". PostgreSQL Global Development Group . Consultado el 20 de septiembre de 2010 .
  6. ^ "Licencia PostgreSQL aprobada por OSI". Crynwr. 18 de febrero de 2010. Archivado desde el original el 8 de agosto de 2016 . Consultado el 18 de febrero de 2010 .
  7. ^ ab "OSI PostgreSQL Licence". Iniciativa de código abierto. 20 de febrero de 2010. Consultado el 20 de febrero de 2010 .
  8. ^ "Debian -- Detalles del paquete postgresql en sid". packages.debian.org . Consultado el 25 de enero de 2021 .
  9. ^ "Licencia:Principal". Proyecto Fedora .
  10. ^ "PostgreSQL". fsf.org .
  11. ^ "Preguntas frecuentes: ¿Qué es PostgreSQL? ¿Cómo se pronuncia? ¿Qué es Postgres?". Wiki de PostgreSQL . Comunidad de PostgreSQL . Consultado el 2 de octubre de 2021 .
  12. ^ "Muestra de audio, MP3 de 5,6 k".
  13. ^ "¿Qué es PostgreSQL?". Documentación de PostgreSQL 9.3.0 . PostgreSQL Global Development Group . Consultado el 20 de septiembre de 2013 .
  14. ^ "Parquet y Postgres en el Data Lake | Blog de Crunchy Data". Crunchy Data . 3 de mayo de 2022 . Consultado el 19 de septiembre de 2024 .
  15. ^ "PostGIS". postgis.net . 18 de diciembre de 2023 . Consultado el 18 de diciembre de 2023 . PostGIS amplía las capacidades de la base de datos relacional PostgreSQL al agregar compatibilidad para almacenar, indexar y consultar datos geoespaciales.
  16. ^ ab "Extensiones temporales". Wiki de PostgreSQL . 18 de diciembre de 2023. Consultado el 18 de diciembre de 2023. Postgres se puede ampliar para convertirse en una base de datos temporal. Dichas bases de datos rastrean el historial del contenido de la base de datos a lo largo del tiempo, reteniendo automáticamente dicho historial y permitiendo que se lo modifique y consulte.
  17. ^ "Orafce - Funciones y paquetes de compatibilidad de Oracle". GitHub.com . 17 de diciembre de 2023 . Consultado el 18 de diciembre de 2023 . Funciones y operadores que emulan un subconjunto de funciones y paquetes de Oracle RDBMS.
  18. ^ "pg_dbms_job". GitHub.com . 8 de noviembre de 2023 . Consultado el 18 de diciembre de 2023 . Extensión de PostgreSQL para programar y administrar trabajos en una cola de trabajos similar al paquete Oracle DBMS_JOB.
  19. ^ "WiltonDB". WiltonDB . 2023 . Consultado el 18 de diciembre de 2023 . WiltonDB [está] empaquetado para Windows. Su objetivo es poder utilizarse como un reemplazo directo de Microsoft SQL Server.
  20. ^ "Babelfish para PostgreSQL". babelfishpg.org . Consultado el 18 de diciembre de 2023 . Babelfish para PostgreSQL ... proporciona la capacidad para que PostgreSQL comprenda consultas de aplicaciones escritas para Microsoft SQL Server.
  21. ^ "Clientes PostgreSQL". wiki.postgresql.org . 18 de octubre de 2023 . Consultado el 18 de diciembre de 2023 . Esta página es una lista parcial de clientes SQL interactivos (GUI o de otro tipo) ... en los que puede escribir SQL y obtener resultados de ellos.
  22. ^ "Herramientas de diseño". wiki.postgresql.org . 23 de octubre de 2023 . Consultado el 18 de diciembre de 2023 . Herramientas para ayudar con el diseño de un esquema, mediante la creación de diagramas de entidad-relación y similares. La mayoría son GUI.
  23. ^ "Guía comunitaria de herramientas de interfaz gráfica de usuario de PostgreSQL". wiki.postgresql.org . 1 de diciembre de 2023 . Consultado el 18 de diciembre de 2023 . Esta página es una lista de utilidades diversas que funcionan con Postgres (por ejemplo, cargadores de datos, comparadores, etc.).
  24. ^ "Replicación, agrupación en clústeres y agrupación de conexiones". wiki.postgresql.org . 13 de julio de 2020 . Consultado el 18 de diciembre de 2023 . Hay muchos enfoques disponibles para escalar PostgreSQL más allá de ejecutarse en un solo servidor. ... No existe una solución única para todos...
  25. ^ Esto se reconoce por el permiso liberal para usar el nombre PostgreSQL, tal como se aprobó (para un uso justo, cuando no se confunde a las personas sobre una relación legal con el proyecto PostgreSQL real) cuando se usa en apoyo de PostgreSQL, sujeto a la Política de marca registrada de PostgreSQL: "Política de marca registrada". PostgreSQL.org . 8 de diciembre de 2020 . Consultado el 17 de diciembre de 2023 . Intentaremos trabajar con usted para permitir usos [del nombre PostgreSQL] que respalden el proyecto PostgreSQL y nuestra Comunidad.
  26. ^ ab Stonebraker, M.; Rowe, LA (mayo de 1986). El diseño de POSTGRES (PDF) . Proc. 1986 ACM SIGMOD Conference on Management of Data. Washington, DC . Consultado el 17 de diciembre de 2011 .
  27. ^ "PostgreSQL: Historia". PostgreSQL Global Development Group. Archivado desde el original el 26 de marzo de 2017. Consultado el 27 de agosto de 2016 .
  28. ^ "Nombre del proyecto: declaración del equipo central". archives.postgresql.org. 16 de noviembre de 2007. Consultado el 16 de noviembre de 2007 .
  29. ^ "Michael Stonebraker – Ganador del premio AM Turing". amturing.acm.org . Consultado el 20 de marzo de 2018 . Las técnicas iniciadas en Postgres se implementaron ampliamente [..] Stonebraker es el único ganador del premio Turing que se ha involucrado en emprendimientos en serie a una escala similar, lo que le otorga una perspectiva distintiva sobre el mundo académico.
  30. ^ Stonebraker, M.; Rowe, LA El modelo de datos POSTGRES (PDF) . Actas de la 13.ª Conferencia internacional sobre bases de datos de gran tamaño. Brighton, Inglaterra: Morgan Kaufmann Publishers. págs. 83–96. ISBN 0-934613-46-X.
  31. ^ Pavel Stehule (9 de junio de 2012). "Historie projektu PostgreSQL" (en checo).
  32. ^ Breve historia de PostgreSQL "La versión 3 apareció en 1991 y agregó compatibilidad con múltiples administradores de almacenamiento, un ejecutor de consultas mejorado y un sistema de reglas reescrito". postgresql.org . The PostgreSQL Global Development Group , Consultado el 18 de marzo de 2020.
  33. ^ "University POSTGRES, versión 4.2". 26 de julio de 1999.
  34. ^ Page, Dave (7 de abril de 2015). "Re: ¿20º aniversario de PostgreSQL?". pgsql-advocacy (lista de correo) . Consultado el 9 de abril de 2015 .
  35. ^ Dan RK Ports; Kevin Grittner (2012). "Aislamiento de instantáneas serializables en PostgreSQL" (PDF) . Actas de la Fundación VLDB . 5 (12): 1850–1861. arXiv : 1208.4179 . Código Bibliográfico :2012arXiv1208.4179P. doi :10.14778/2367502.2367523. S2CID  16006111.
  36. ^ Bohan Zhang; Andy Pavlo (2023). "La parte de PostgreSQL que más odiamos". OtterTune (blog).
  37. ^ PostgreSQL 9.1 con replicación sincrónica (novedad), H Online
  38. ^ "Página del proyecto Postgres-XC" (sitio web). Postgres-XC. Archivado desde el original el 1 de julio de 2012.
  39. ^ "Postgres-R: un sistema de replicación de bases de datos para PostgreSQL". Postgres Global Development Group. Archivado desde el original el 29 de marzo de 2010. Consultado el 27 de agosto de 2016 .
  40. ^ "Postgres-BDR". 2ndQuadrant Ltd. Consultado el 27 de agosto de 2016 .
  41. ^ Marit Fischer (10 de noviembre de 2007). "Backcountry.com finalmente devuelve algo a la comunidad de código abierto" (Comunicado de prensa). Backcountry.com. Archivado desde el original el 26 de diciembre de 2010.
  42. ^ Bartunov, O; Sigaev, T (mayo de 2011). SP-GiST: un nuevo marco de indexación para PostgreSQL (PDF) . PGCon 2011. Ottawa, Canadá . Consultado el 31 de enero de 2016 .
  43. ^ Bartunov, O; Sigaev, T (mayo de 2010). Búsqueda de vecinos más cercanos para PostgreSQL (PDF) . PGCon 2010. Ottawa, Canadá . Consultado el 31 de enero de 2016 .
  44. ^ "PostgreSQL, la base de datos NoSQL | Linux Journal". www.linuxjournal.com .
  45. ^ Geoghegan, Peter (23 de marzo de 2014). "Lo que pienso de jsonb".
  46. ^ Obe, Regina; Hsu, Leo S. (2012). "10: Replicación y datos externos". PostgreSQL: Up and Running (1.ª ed.). Sebastopol, CA: O'Reilly Media, Inc. pág. 129. ISBN 978-1-4493-2633-3. Recuperado el 17 de octubre de 2016. Los contenedores de datos externos (FDW) [...] son ​​mecanismos para consultar fuentes de datos externas. PostgreSQL 9.1 introdujo esta característica compatible con los estándares SQL/MED .
  47. ^ "Protocolo Frontend/Backend". postgresql.org . 9 de noviembre de 2023 . Consultado el 17 de diciembre de 2023 . Este documento describe la versión 3.0 del protocolo, implementado en PostgreSQL 7.4 y versiones posteriores.
  48. ^ "libpq". postgresql.org . 9 de noviembre de 2023 . Consultado el 17 de diciembre de 2023 .
  49. ^ "SQL embebido en C". postgresql.org . 9 de noviembre de 2023 . Consultado el 17 de diciembre de 2023 .
  50. ^ "Interfaces de cliente". postgresql.org . 9 de noviembre de 2023 . Consultado el 17 de diciembre de 2023 .
  51. ^ "libpqxx" . Consultado el 4 de abril de 2020 .
  52. ^ "PostgreSQL JDBC Driver" . Consultado el 4 de abril de 2020 .
  53. ^ "[ANN] PostgresORM.jl: Mapeo relacional de objetos para PostgreSQL". JuliaLang . 30 de junio de 2021 . Consultado el 26 de agosto de 2021 .
  54. ^ "GitHub - invenia/LibPQ.jl: un contenedor de Julia para libpq". GitHub . Consultado el 26 de agosto de 2021 .
  55. ^ ab "Extensión PL/Julia (mínimo)". JuliaLang . 8 de marzo de 2020 . Consultado el 26 de agosto de 2021 .
  56. ^ "PostgreSQL + Python | Psycopg". initd.org .
  57. ^ "node-postgres" . Consultado el 4 de abril de 2020 .
  58. ^ "Controladores de bases de datos SQL". Go wiki . golang.org . Consultado el 22 de junio de 2015 .
  59. ^ "Rust-Postgres" . Consultado el 4 de abril de 2020 .
  60. ^ "Programación de servidores". Documentación de PostgreSQL . Consultado el 19 de mayo de 2019 .
  61. ^ "DO". Documentación de PostgreSQL . Consultado el 19 de mayo de 2019 .
  62. ^ "PL/Python - Lenguaje procedimental de Python". Documentación de PostgreSQL . Consultado el 23 de octubre de 2022 .
  63. ^ "Lenguajes procedimentales". postgresql.org. 31 de marzo de 2016. Consultado el 7 de abril de 2016 .
  64. ^ "postgres-plr/plr". 17 de junio de 2021 – vía GitHub.
  65. ^ Chartier, Colin (8 de noviembre de 2019). "Truco de diseño de sistemas: Postgres es un gran servidor de publicación/suscripción y trabajos". Blog de LayerCI . Consultado el 24 de noviembre de 2019 .
  66. ^ "Versión 9.5". postgresql.org . 11 de febrero de 2021.
  67. ^ Ringer, Craig (13 de abril de 2016). "¿Para qué sirve SKIP LOCKED en PostgreSQL 9.5?". 2nd Quadrant . Consultado el 24 de noviembre de 2019 .
  68. ^ "Añadir una vista materializada a las relaciones". 4 de marzo de 2013. Consultado el 4 de marzo de 2013 .
  69. ^ "Compatibilidad con vistas actualizables automáticamente". 8 de diciembre de 2012. Consultado el 8 de diciembre de 2012 .
  70. ^ "Añadir sintaxis CREATE RECURSIVE VIEW". 1 de febrero de 2013. Consultado el 28 de febrero de 2013 .
  71. ^ Momjian, Bruce (2001). "Subconsultas". PostgreSQL: Introducción y conceptos. Addison-Wesley. ISBN 0-201-70331-9. Archivado desde el original el 9 de agosto de 2010 . Consultado el 25 de septiembre de 2010 .
  72. ^ Bernier, Robert (2 de febrero de 2006). "Uso de expresiones regulares en PostgreSQL". O'Reilly Media . Consultado el 25 de septiembre de 2010 .
  73. ^ "Algunas notas breves sobre PostgreSQL y POODLE". hagander.net .
  74. ^ Berkus, Josh (2 de junio de 2016). "PostgreSQL 9.6 Beta y PGCon 2016". LWN.net .
  75. ^ "Preguntas frecuentes – Wiki de PostgreSQL". wiki.postgresql.org . Consultado el 13 de abril de 2017 .
  76. ^ "Documentación de SEPostgreSQL – Wiki de PostgreSQL". wiki.postgresql.org .
  77. ^ "NB SQL 9.3 - Wiki de SELinux". selinuxproject.org .
  78. ^ "Documentación de PostgreSQL 10: Apéndice E. Notas de la versión". 12 de agosto de 2021.
  79. ^ "PostgreSQL: Acerca de". www.postgresql.org . Consultado el 14 de octubre de 2024 .
  80. ^ "Distinción entre mayúsculas y minúsculas de los identificadores". PostgreSQL Global Development Group. 11 de noviembre de 2021.
  81. ^ ab Berkus, Josh (6 de julio de 2007). «PostgreSQL publica el primer benchmark real». Archivado desde el original el 12 de julio de 2007. Consultado el 10 de julio de 2007 .
  82. ^ Vilmos, György (29 de septiembre de 2009). "Historia de PostgreSQL" . Consultado el 28 de agosto de 2010 .
  83. ^ "Resultado de SPECjAppServer2004". SPEC . 6 de julio de 2007 . Consultado el 10 de julio de 2007 .
  84. ^ "Resultado de SPECjAppServer2004". SPEC . 4 de julio de 2007 . Consultado el 1 de septiembre de 2007 .
  85. ^ "Administración de recursos del núcleo". Manual de PostgreSQL . PostgreSQL.org . Consultado el 12 de noviembre de 2011 .
  86. ^ Greg Smith (15 de octubre de 2010). PostgreSQL 9.0 High Performance. Packt Publishing . ISBN 978-1-84951-030-1.
  87. ^ Robert Haas (3 de abril de 2012). "¿Dije 32 núcleos? ¿Qué tal 64?" . Consultado el 8 de abril de 2012 .
  88. ^ Khushi, Matloob (junio de 2015). "Evaluación comparativa del rendimiento de bases de datos para datos genómicos". J Cell Biochem . 116 (6): 877–83. arXiv : 2008.06835 . doi :10.1002/jcb.25049. PMID  25560631. S2CID  27458866.
  89. ^ "Paquetes de Mac OS X". The PostgreSQL Global Development Group . Consultado el 27 de agosto de 2016 .
  90. ^ "PostgreSQL: instaladores de Windows". www.postgresql.org . Consultado el 26 de agosto de 2021 .
  91. ^ "postgresql-client-10.5p1 – PostgreSQL RDBMS (cliente)". Puertos OpenBSD . 4 de octubre de 2018 . Consultado el 10 de octubre de 2018 .
  92. ^ "Instalación y configuración de PostgreSQL: guía de Oracle Solaris Cluster Data Service for PostgreSQL". docs.oracle.com . Consultado el 4 de febrero de 2023 .
  93. ^ "AArch64 planea BoF en DebConf". debian.org .
  94. ^ Souza, Rubens (17 de junio de 2015). «Paso 5 (actualización): Instalación de PostgreSQL en mi Raspberry Pi 1 y 2». Raspberry PG . Consultado el 27 de agosto de 2016 .
  95. ^ "Plataformas compatibles". PostgreSQL Global Development Group . Consultado el 6 de abril de 2012 .
  96. ^ "pgAdmin: herramientas de administración y gestión de PostgreSQL". sitio web . Consultado el 12 de noviembre de 2011 .
  97. ^ "Debian -- Detalles del paquete pgadmin3 en jessie" . Consultado el 10 de marzo de 2017 .
  98. ^ "Equipo de desarrollo de pgAdmin". pgadmin.org . Consultado el 22 de junio de 2015 .
  99. ^ Dave, Page (7 de diciembre de 2014). "La historia de pgAdmin". Blog de Postgres de Dave . pgsnake.blogspot.co.uk . Consultado el 7 de diciembre de 2014 .
  100. ^ "pgAdmin 4 README". GitHub . Consultado el 15 de agosto de 2018 .
  101. ^ Proyecto phpPgAdmin (25 de abril de 2008). «Acerca de phpPgAdmin» . Consultado el 25 de abril de 2008 .
  102. ^ PostgreSQL Studio (9 de octubre de 2013). «Acerca de PostgreSQL Studio». Archivado desde el original el 7 de octubre de 2013. Consultado el 9 de octubre de 2013 .
  103. ^ "Sitio web de TeamPostgreSQL". 3 de octubre de 2013. Consultado el 3 de octubre de 2013 .
  104. ^ oooforum.org (10 de enero de 2010). «Back Ends for OpenOffice». Archivado desde el original el 28 de septiembre de 2011. Consultado el 5 de enero de 2011 .
  105. ^ libreoffice.org (14 de octubre de 2012). «Funciones básicas». Archivado desde el original el 7 de enero de 2012. Consultado el 14 de octubre de 2012 .
  106. ^ Greg Smith; Robert Treat y Christopher Browne. "Ajuste de su servidor PostgreSQL". Wiki . PostgreSQL.org . Consultado el 12 de noviembre de 2011 .
  107. ^ "pgDevOps". BigSQL.org . Archivado desde el original el 1 de abril de 2017 . Consultado el 4 de mayo de 2017 .
  108. ^ "pgbackrest/pgbackrest". GitHub . 21 de noviembre de 2021.
  109. ^ "pgaudit/pgaudit". GitHub . 21 de noviembre de 2021.
  110. ^ "wal-e/wal-e". 24 de junio de 2021 – vía GitHub.
  111. ^ Claire Giordano (31 de octubre de 2019). "Diseño de análisis a escala de petabytes mediante el escalado horizontal de Postgres en Azure con la extensión Citus". Blog . Comunidad tecnológica de Microsoft.
  112. ^ Emmanuel Cecchet (21 de mayo de 2009). Building PetaByte Warehouses with Unmodified PostgreSQL (PDF) . PGCon 2009 . Consultado el 12 de noviembre de 2011 .
  113. ^ "MySpace.com amplía la analítica para todos sus amigos" (PDF) . Caso práctico. Aster Data. 15 de junio de 2010. Archivado (PDF) desde el original el 14 de noviembre de 2010. Consultado el 12 de noviembre de 2011 .
  114. ^ "El corte de energía del fin de semana pasado". Blog . Geni. 1 de agosto de 2011.
  115. ^ "Base de datos". Wiki . OpenStreetMap.
  116. ^ Dominio .ORG de afiliados de PostgreSQL, Australia: Computer World, 24 de agosto de 2023
  117. ^ abc W. Jason Gilmore; RH Treat (2006). Introducción a PHP y PostgreSQL 8: de principiante a profesional. Apress. ISBN 978-1-43020-136-6. Recuperado el 30 de agosto de 2017 .
  118. ^ Sony Online opta por una base de datos de código abierto en lugar de Oracle, Computer World
  119. ^ "Estudio de caso de un grupo de comercio web sobre PostgreSQL" (PDF) (1.2 ed.). PostgreSQL.
  120. ^ "Descripción general de la arquitectura". Wiki de software de Reddit . Reddit. 27 de marzo de 2014. Consultado el 25 de noviembre de 2014 .
  121. ^ Pihlak, Martín. "PostgreSQL @Skype" (PDF) . wiki.postgresql.org . Consultado el 16 de enero de 2019 .
  122. ^ "¿Cuánto paga por su base de datos?". Blog de Sun Microsystems. 2007. Archivado desde el original el 7 de marzo de 2009. Consultado el 14 de diciembre de 2007 .
  123. ^ "Base de datos – MusicBrainz". Wiki de MusicBrainz . Consultado el 5 de febrero de 2011 .
  124. ^ Duncavage, Daniel P (13 de julio de 2010). "La NASA necesita la ayuda de Postgres-Nagios".
  125. ^ Roy, Gavin M (2010). "PostgreSQL at myYearbook.com" (discusión). USA East: Conferencia de PostgreSQL. Archivado desde el original el 27 de julio de 2011.
  126. ^ "Mantener Instagram en marcha con más de un millón de nuevos usuarios en doce horas". Instagram-engineering.tumblr.com. 17 de mayo de 2011. Consultado el 7 de julio de 2012 .
  127. ^ "Postgres en Disqus" . Consultado el 24 de mayo de 2013 .
  128. ^ Kelly, Matthew (27 de marzo de 2015). En el corazón de un gigante: Postgres en TripAdvisor. PGConf US 2015. Archivado desde el original el 23 de julio de 2015 . Consultado el 23 de julio de 2015 .(Vídeo de presentación)
  129. ^ "La migración exitosa de Yandex.Mail de Oracle a Postgres [pdf]". Hacker News: news.ycombinator.com . Consultado el 28 de septiembre de 2016 .
  130. ^ ab S. Riggs; G. Ciolli; H. Krosing; G. Bartolini (2015). Libro de recetas de administración de PostgreSQL 9: segunda edición. Paquete. ISBN 978-1-84951-906-9. Recuperado el 5 de septiembre de 2017 .
  131. ^ "Met Office cambia Oracle por PostgreSQL". computerweekly.com . 17 de junio de 2014 . Consultado el 5 de septiembre de 2017 .
  132. ^ "Software de código abierto". FlightAware . Consultado el 22 de noviembre de 2017 .
  133. ^ "Ansible en Grofers (Parte 2) — Managing PostgreSQL". Lambda - El blog de ingeniería de Grofers . 28 de febrero de 2017 . Consultado el 5 de septiembre de 2018 .
  134. ^ McMahon, Philip; Chiorean, Maria-Livia; Coleman, Susie; Askoolum, Akash (30 de noviembre de 2018). "Blog digital: Adiós Mongo, hola Postgres". The Guardian . ISSN  0261-3077.
  135. ^ "Errores elevados en API y ChatGPT" . Consultado el 2 de diciembre de 2023 .
  136. ^ Alex Williams (1 de abril de 2013). "Heroku obliga a los clientes a actualizar para solucionar un agujero de seguridad crítico en PostgreSQL". TechCrunch .
  137. ^ Barb Darrow (11 de noviembre de 2013). "Heroku embellece Postgres con recuperación de bases de datos y alertas proactivas". GigaOM.
  138. ^ Craig Kerstiens (26 de septiembre de 2013). "WAL-E y protección continua con Heroku Postgres". Blog de Heroku.
  139. ^ "EnterpriseDB ofrece una base de datos en la nube Postgres Plus". Techweekeurope.co.uk. 27 de enero de 2012. Consultado el 7 de julio de 2012 .
  140. ^ "Alibaba Cloud amplía su alianza técnica con EnterpriseDB". Milestone Partners . 26 de septiembre de 2018 . Consultado el 9 de junio de 2020 .
  141. ^ O'Doherty, Paul; Asselin, Stephane (2014). "3: Arquitectura del espacio de trabajo de VMware". VMware Horizon Suite: creación de servicios para el usuario final. VMware Press Technology. Upper Saddle River, Nueva Jersey: VMware Press. pág. 65. ISBN 978-0-13-347910-2. Recuperado el 19 de septiembre de 2016. Además de la versión de código abierto de PostgreSQL, VMware ofrece vFabric Postgres o vPostgres. vPostgres es un dispositivo virtual PostgreSQL que se ha optimizado para entornos virtuales.
  142. ^ Al Sargent (15 de mayo de 2012). "Presentación de VMware vFabric Suite 5.1: implementación automatizada, nuevos componentes y compatibilidad con código abierto". Blogs de VMware.
  143. ^ "VMware vFabric Suite EOA" (PDF) . 1 de septiembre de 2014. Consultado el 17 de diciembre de 2023 .
  144. ^ Jeff (14 de noviembre de 2013). "Amazon RDS para PostgreSQL: ya está disponible". Blog de Amazon Web Services.
  145. ^ Alex Williams (14 de noviembre de 2013). "PostgreSQL ya está disponible en el servicio de bases de datos relacionales de Amazon". TechCrunch .
  146. ^ "Actualización de Amazon Aurora: compatibilidad con PostgreSQL". Blog de AWS . 30 de noviembre de 2016. Consultado el 1 de diciembre de 2016 .
  147. ^ "Anuncio de Azure Database for PostgreSQL". Blog de Azure . 10 de mayo de 2017. Consultado el 19 de junio de 2019 .
  148. ^ "Aliyun PolarDB lanzó actualizaciones importantes para respaldar la migración con un solo clic de bases de datos como Oracle a la nube". Documento de desarrollo . 6 de julio de 2019.
  149. ^ "Replicación asincrónica maestro-esclavo de bases de datos PostgreSQL con un solo clic". DZone . Consultado el 26 de mayo de 2017 .
  150. ^ "Documentación de IBM Cloud Hyper Protect DBaaS para PostgreSQL". cloud.ibm.com . Consultado el 24 de junio de 2020 .
  151. ^ "Crunchy Data continúa brindando soporte para PostgreSQL con el lanzamiento de Crunchy Bridge". 18 de septiembre de 2020.
  152. ^ "SELECT 'Hola, mundo': Postgres sin servidor creado para la nube". 15 de junio de 2022.
  153. ^ "Presentamos Nile, Postgres sin servidor para SaaS moderno". 25 de octubre de 2023.
  154. ^ "Política de versiones". PostgreSQL Global Development Group . Consultado el 4 de octubre de 2018 .
  155. ^ Vaas, Lisa (2 de diciembre de 2002). «Databases Target Enterprises». eWeek . Consultado el 29 de octubre de 2016 .
  156. ^ Krill, Paul (20 de noviembre de 2003). «PostgreSQL impulsa una base de datos de código abierto». InfoWorld . Consultado el 21 de octubre de 2016 .
  157. ^ Krill, Paul (19 de enero de 2005). «La base de datos de código abierto PostgreSQL presume de un impulso para Windows». InfoWorld . Consultado el 2 de noviembre de 2016 .
  158. ^ Weiss, Todd R. (5 de diciembre de 2006). «Se publicó la versión 8.2 de la base de datos PostgreSQL de código abierto». Computerworld . Consultado el 17 de octubre de 2016 .
  159. ^ Gilbertson, Scott (5 de febrero de 2008). "PostgreSQL 8.3: base de datos de código abierto promete una velocidad increíble". Wired . Consultado el 17 de octubre de 2016 .
  160. ^ Huber, Mathias (2 de julio de 2009). "PostgreSQL 8.4 demuestra ser rico en características". Linux Magazine . Consultado el 17 de octubre de 2016 .
  161. ^ Brockmeier, Joe (30 de septiembre de 2010). "Cinco características empresariales en PostgreSQL 9". Linux.com . Linux Foundation . Consultado el 6 de febrero de 2017 .
  162. ^ Timothy Prickett Morgan (12 de septiembre de 2011). "PostgreSQL avanza a la versión 9.1 y apunta a la empresa". The Register . Consultado el 6 de febrero de 2017 .
  163. ^ "PostgreSQL: se lanzó PostgreSQL 9.2". www.postgresql.org . 10 de septiembre de 2012.
  164. ^ "Reintroducción de Hstore para PostgreSQL". InfoQ .
  165. ^ Richard, Chirgwin (7 de enero de 2016). "Oops, UPSERT your head: PostgreSQL version 9.5 has landing" (Oops, UPSERT en tu cabeza: la versión 9.5 de PostgreSQL ha llegado). The Register . Consultado el 17 de octubre de 2016 .
  166. ^ "PostgreSQL: Documentación: 10: Capítulo 31. Replicación lógica". www.postgresql.org . 12 de agosto de 2021.
  167. ^ "PostgreSQL 11 Released". 18 de octubre de 2018. Consultado el 18 de octubre de 2018 .
  168. ^ "Notas de la versión de PostgreSQL" . Consultado el 18 de octubre de 2018 .
  169. ^ "PostgreSQL: ¡PostgreSQL 12 ya está disponible!". Noticias de PostgreSQL . 3 de octubre de 2019.
  170. ^ "Notas de la versión de PostgreSQL 13". www.postgresql.org . 12 de agosto de 2021.
  171. ^ "¡PostgreSQL 13 ya está disponible!". www.postgresql.org . 24 de septiembre de 2020.
  172. ^ "Notas de la versión de PostgreSQL 14". www.postgresql.org . 11 de noviembre de 2021.
  173. ^ "¡PostgreSQL 14 ya está disponible!". www.postgresql.org . 30 de septiembre de 2021.
  174. ^ "¡PostgreSQL 16 ya está disponible!". 14 de septiembre de 2023.
  175. ^ "¡PostgreSQL 17 ya está disponible!". 26 de septiembre de 2024.

Lectura adicional

Enlaces externos