stringtranslate.com

PostgreSQL

PostgreSQL ( / ˈ p s t ɡ r ɛ s ˌ k juː ˈ ɛ l / , POHST -gres kyoo el ), [12] [13] también conocido como Postgres , es un sistema de gestión de bases de datos relacionales gratuito y de código abierto ( RDBMS) que enfatiza la extensibilidad y el cumplimiento de SQL . PostgreSQL presenta transacciones con propiedades de atomicidad , consistencia , aislamiento , durabilidad ( ACID ), vistas actualizables automáticamente , vistas materializadas , activadores , claves externas y procedimientos almacenados . [14] Es compatible con todos los principales sistemas operativos , incluidos Linux , FreeBSD , OpenBSD , macOS y Windows , y maneja una variedad de cargas de trabajo, desde máquinas individuales hasta almacenes de datos 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 el propio PostgreSQL, pero existe una extensa comunidad de desarrolladores y un ecosistema que proporciona otros conjuntos de características importantes que, tradicionalmente, podrían ser proporcionadas por un proveedor de software propietario. Estos incluyen funciones 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 funciones que emulan otros productos de bases de datos. [17] [18] [19] [20] También están disponibles de terceros una amplia variedad de funciones de interfaz de usuario y 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 terceros de personas, empresas, productos y proyectos de PostgreSQL, aunque no forma parte del Grupo de Desarrollo de PostgreSQL, es esencial para la adopción y el uso del motor de base de datos PostgreSQL y constituye el ecosistema de PostgreSQL en general. [25]

PostgreSQL originalmente se llamó 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 soporte para 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 de la Universidad de California, Berkeley. En 1982, el líder del equipo de 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 técnicas pioneras en ellos.

El nuevo proyecto, POSTGRES, tenía como objetivo agregar la menor cantidad de funciones necesarias para admitir 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 en su totalidad. En POSTGRES, la base de datos entendía las relaciones y podía recuperar información en tablas relacionadas de forma natural mediante 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 para 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, reescribió nuevamente 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 el proyecto con solicitudes de soporte y funciones. Después de lanzar la versión 4.2 [33] el 30 de junio de 1994 –principalmente una limpieza– el proyecto terminó. Berkeley lanzó POSTGRES bajo una variante de licencia MIT , que permitía a otros desarrolladores utilizar 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 interactivamente con una aplicación de consola llamada monitor.

En 1994, los estudiantes graduados de Berkeley, Andrew Yu y Jolly Chen, reemplazaron el intérprete del 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 probadores 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 pudiera modificar 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 pasó a llamarse PostgreSQL para reflejar su soporte para 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 formó la versión 6.0 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 ofreciendo lanzamientos bajo su licencia PostgreSQL de software gratuito 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 gestiona 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 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. PostgreSQL admite la serialización total 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 gran carga de escritura que actualiza las filas existentes. [36]

Almacenamiento y replicación

Replicación

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

PostgreSQL incluye replicación sincrónica incorporada [37] que garantiza que, para cada transacción de escritura, el maestro espere 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 asíncrona o síncrona) se puede especificar por base de datos, por usuario, por sesión o incluso por transacción. Esto puede resultar útil para cargas de trabajo que no requieren dichas garantías y es posible que no sea necesario para todos los datos, ya que ralentiza el rendimiento debido al requisito de que la confirmación de la transacción alcance el modo de espera sincrónico.

Los servidores en espera pueden ser síncronos o asíncronos. Los servidores en espera síncronos se pueden especificar en la configuración que determina qué servidores son candidatos para la replicación síncrona. 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 fila.

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

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

Hay disponibles varios paquetes de replicación asincrónica basada en desencadenadores. Estos siguen siendo útiles incluso después de la introducción de las capacidades principales ampliadas, para situaciones en las que la replicación binaria de un clúster de base de datos completo no es apropiada:

Índices

PostgreSQL incluye soporte integrado para índices de tablas hash y de árbol 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] y bloques. Índices de rango (BRIN). Además, se pueden crear métodos de índice definidos por el usuario, aunque se trata de un proceso bastante complicado. Los índices en PostgreSQL también admiten las siguientes características:

esquemas

Los esquemas 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 organizativa, estructural y abstracta que define cómo los datos de cada tabla se relacionan con los datos dentro de otras tablas. Todos los objetos de la base de datos PostgreSQL, excepto algunos objetos globales como roles y espacios de tabla , 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 verifica los esquemas en busca de objetos no calificados (aquellos sin un esquema prefijado). De forma predeterminada, está configurado en $user, public( $userse refiere al usuario de la base de datos actualmente conectado). Este valor predeterminado se puede establecer en una base de datos o a nivel de rol, pero como es un parámetro de sesión, se puede cambiar libremente (incluso varias veces) durante una sesión de cliente, afectando solo a esa sesión.

Los esquemas inexistentes u otros esquemas a los que el usuario que ha iniciado sesión no puede acceder y que aparecen en search_path se omiten silenciosamente durante la búsqueda de objetos.

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

Tipos de datos

Se admite una amplia variedad de tipos de datos nativos, que incluyen:

Además, los usuarios pueden crear sus propios tipos de datos, que normalmente pueden volverse totalmente indexables mediante las infraestructuras de indexación de PostgreSQL: GiST, GIN, SP-GiST. Ejemplos de estos incluyen los tipos de datos del sistema de información geográfica (GIS) del proyecto PostGIS para PostgreSQL.

También existe un tipo de datos llamado 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 usando el dominio deberá cumplir con las restricciones que se definieron como parte del dominio.

Se puede utilizar un tipo de datos que represente un rango de datos, lo que se denomina tipos de rango. Estos pueden ser rangos discretos (por ejemplo, todos los valores enteros del 1 al 10) o rangos continuos (por ejemplo, en cualquier momento entre las 10:00 a. m. y las 11:00 a. m .). Los tipos de rangos 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 rangos 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 flotantes como base. Los tipos de rango admiten límites de rango inclusivos y exclusivos utilizando los caracteres []y respectivamente. (por ejemplo, representa todos los números enteros desde 4 inclusive hasta 9, pero sin incluirlo). Los tipos de rango también son compatibles con los operadores existentes utilizados para verificar superposición, contención, 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 parecerán existir en las tablas principales, a menos que se seleccionen datos de la tabla principal utilizando la palabra clave ÚNICA, es decir . Agregar una columna en la tabla principal hará que esa columna aparezca 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 las tablas actualmente no son heredables. Todas las restricciones de verificación y las restricciones no nulas de una tabla principal las heredan automáticamente sus hijos. Otros tipos de restricciones (restricciones de clave única, primaria y de clave externa) no se heredan.

La herencia proporciona una manera de asignar las características de las jerarquías de generalización representadas en los diagramas de relación entre entidades (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 habituales de 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 la base de datos. El protocolo tiene una versión (actualmente 3.0, a partir de PostgreSQL 7.4) y tiene una especificación detallada. [47]

La implementación de cliente oficial de este protocolo de comunicación es una API C , libpq. [48] ​​Además, la herramienta ECPG oficialmente admitida permite incrustar comandos SQL en 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 , incluido C++ , [51] Java , [52] Julia , [53] [54] [55] Python , [56] Node.js , [57] Go. , [58] y Óxido . [59]

Lenguajes procesales

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

Los idiomas se dividen en dos grupos: Los procedimientos escritos en idiomas seguros están protegidos y cualquier usuario puede crearlos y utilizarlos de forma segura. Los procedimientos escritos en lenguajes inseguros sólo pueden ser creados por superusuarios , porque 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 e inseguras.

PostgreSQL tiene soporte integrado para tres lenguajes de procedimientos:

Además, PostgreSQL permite cargar lenguajes procedimentales en la base de datos mediante extensiones. PostgreSQL incluye tres extensiones de lenguaje para admitir Perl , Tcl y Python . Para Python, se usa el Python 3 actual y el Python 2 descontinuado ya no es compatible a partir de PostgreSQL 15. Ambos eran compatibles anteriormente, de manera predeterminada Python 2 , mientras que las versiones antiguas y nuevas no se podían usar en la misma sesión. [62] Los proyectos externos brindan soporte para muchos otros lenguajes, [63] incluidos PL/ Java , JavaScript (PL/V8), PL/ Julia , [55] PL/ R , [64] PL/ Ruby y otros.

Desencadenantes

Los desencadenantes son eventos desencadenados por la acción de declaraciones del lenguaje de manipulación de datos (DML) SQL. Por ejemplo, una declaración INSERT podría activar un disparador que verifique si los valores de la declaración son válidos. La mayoría de los activadores solo se activan mediante declaraciones INSERT o UPDATE .

Los disparadores son totalmente compatibles y se pueden conectar a mesas. 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 puede indicar a los activadores que se ejecuten bajo un conjunto de condiciones como se especifica en la cláusula WHERE del activador. Los desencadenadores se pueden adjuntar a las vistas utilizando la condición EN LUGAR DE. Se activan varios activadores en orden alfabético. Además de llamar a funciones escritas en PL/pgSQL nativo, los disparadores 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 asíncrono al que se accede mediante 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 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 actualizó 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 realizar un sondeo continuo por parte de las aplicaciones para ver si algo ha cambiado aún 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 fueron enviados. Esto elimina el problema de que se envíen mensajes para realizar una acción que luego se revierte.

Muchos conectores para PostgreSQL brindan 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 "pub/sub" o servidor de trabajo eficaz y persistente combinando ESCUCHAR con PARA ACTUALIZAR SALTAR BLOQUEADO. [65] [66] [67]

Normas

Las reglas permiten reescribir el "árbol de consultas" de una consulta entrante; son un lenguaje de macros para SQL que se invoca automáticamente. Las "Reglas de reescritura de consultas" se adjuntan a una tabla/clase y "Reescriben" el DML entrante (seleccionar, insertar, actualizar y/o eliminar) en una o más consultas que reemplazan la declaración DML original o se ejecutan en además de ello. 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 proporcionan las reglas se duplicó posteriormente, en casi todos los sentidos, con la introducción de nuevos tipos de activadores. Generalmente se prefiere el uso de desencadenantes a las reglas, ya que es más fácil razonar sobre el comportamiento y las interacciones de los desencadenantes 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 múltiples procesos de trabajo en segundo plano, aprovechando múltiples CPU o núcleos. [74] Las aplicaciones cliente pueden utilizar subprocesos y crear múltiples conexiones de bases de datos a partir de cada subproceso. [75]

Seguridad

PostgreSQL gestiona su seguridad interna por función . Generalmente se considera que un rol es un usuario (un rol que puede iniciar sesión) o un grupo (un rol del que otros roles son miembros). Los permisos se pueden otorgar o revocar sobre cualquier objeto hasta el nivel de columna, y 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 SECURITY LABEL de PostgreSQL (extensión a los estándares SQL) permite seguridad adicional; con un módulo cargable incluido que admite control de acceso obligatorio (MAC) basado en etiquetas basado en la política de seguridad Security-Enhanced Linux (SELinux). [76] [77]

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

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

Estos métodos se especifican en el archivo de configuración de autenticación basada 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 Transport Layer Security (TLS).

Cumplimiento de normas

PostgreSQL afirma una conformidad alta, pero no completa, con el último estándar SQL ("a partir del lanzamiento de la versión 15 en octubre de 2022, PostgreSQL cumple con al menos 170 de las 179 características obligatorias para la conformidad con SQL:2016 Core", y ninguna otra base de datos completamente conforme a ella [79] ). Una excepción es el manejo de identificadores sin comillas, como nombres de tablas o columnas. En PostgreSQL, internamente, se pliegan a caracteres en minúscula [80] , mientras que el estándar dice que los identificadores sin comillas se deben doblar a mayúsculas. Por lo tanto, Foodebería ser equivalente a FOOno fooconforme a la norma. 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 necesaria ] aunque hay disponibles extensiones de terceros relativamente compatibles con SQL. [dieciséis]

Puntos de referencia y rendimiento

Se han realizado muchos estudios informales de 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]

La primera evaluación comparativa estándar de la industria y validada por pares se completó en junio de 2007, utilizando Sun Java System Application Server (versión propietaria de GlassFish ) 9.0 Platform Edition, el servidor Sun Fire basado en UltraSPARC T1 y PostgreSQL 8.2. [83] Este resultado de 778.14 SPECjAppServer2004 JOPS@Standard se compara favorablemente con el 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 bajo 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 sólo una pequeña cantidad de memoria dedicada para fines críticos para el rendimiento, como el almacenamiento en caché de bloques de bases de datos y la clasificación. Esta limitación se debe principalmente a que los sistemas operativos más antiguos requerían cambios en el kernel para permitir la asignación de grandes bloques de memoria compartida . [85] PostgreSQL.org proporciona consejos sobre prácticas de rendimiento básicas recomendadas 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 determinar su capacidad para procesar 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, formando regiones aleatorias de ADN humano. La inserción y 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 de 64 bits y x86-64 disponibles y probados para macOS (OS X) [89] versión 10.12 y posteriores, Windows (con instaladores disponibles y probados para Windows Server 2019 y 2016 de 64 bits ; algunas versiones anteriores de PostgreSQL se probaron en Windows 2012 R2 [90] ), FreeBSD , OpenBSD , [91] NetBSD , y estas sin ejecutables binarios oficiales (aunque probablemente no oficiales), Solaris , [ 92] AIX y HP-UX . [93] La mayoría de los demás sistemas (modernos) similares a Unix también funcionan.

Se puede esperar que PostgreSQL funcione en cualquiera de las siguientes arquitecturas de conjunto de instrucciones (y sistemas operativos): x86-64 de 64 bits y x86 de 32 bits en Windows XP (o posterior) y otros sistemas operativos; estos son compatibles con otros sistemas además de Windows: ARM de 64 bits [94] y el antiguo ARM de 32 bits , incluidos los anteriores como ARMv6 en Raspberry Pi [95] ), z/Architecture , S/390 , PowerPC (incl. 64- bit Power ISA ), SPARC (también de 64 bits), IA-64 Itanium ( HP-UX ), MIPS y PA-RISC . También se sabía que funcionaba en otras plataformas (aunque no se había probado en ellas durante años, es decir, en las últimas versiones). [96]

Administración de base 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, finalización con tabulación de nombres de objetos y sintaxis SQL.
pgAdmin
El paquete pgAdmin es una herramienta de administración de interfaz gráfica de usuario (GUI) gratuita y de código abierto para PostgreSQL, compatible con muchas plataformas informáticas. [97] El programa está disponible en más de una docena de idiomas. El primer prototipo, denominado pgManager, fue escrito para PostgreSQL 6.3.2 en 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, lanzada por primera vez el 16 de enero de 2002. La tercera versión, pgAdmin III, se lanzó originalmente bajo la Licencia Artística y luego bajo la misma licencia que PostgreSQL. A diferencia de las versiones anteriores escritas en Visual Basic , pgAdmin III está escrita en C++, utilizando el marco wxWidgets [98], lo que le permite ejecutarse en la mayoría de los sistemas operativos comunes. La herramienta de consulta incluye un lenguaje de secuencias de comandos llamado pgScript para respaldar las tareas de administración y desarrollo. En diciembre de 2014, Dave Page, fundador y desarrollador principal del proyecto pgAdmin, [99] anunció que con el cambio hacia modelos basados ​​en web, se había comenzado a trabajar en pgAdmin 4 con el objetivo de facilitar las implementaciones en la nube. [100] En 2016, se lanzó pgAdmin 4. El backend de pgAdmin 4 fue escrito en Python , usando Flask y el marco Qt . [101]
phpPgAdmin
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 . [102]
Estudio PostgreSQL
PostgreSQL Studio permite a los usuarios realizar tareas esenciales de desarrollo de bases de datos PostgreSQL desde una consola basada en web. PostgreSQL Studio permite a los usuarios trabajar con bases de datos en la nube sin necesidad de abrir firewalls. [103]
EquipoPostgreSQL
Interfaz web basada en AJAX/JavaScript para PostgreSQL. Permite navegar, 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 con clave externa mediante clic entre filas y tablas, administración de favoritos para scripts de uso común, entre otras características. Admite SSH tanto para la interfaz web como para las conexiones de la base de datos . Hay instaladores disponibles para Windows, Macintosh y Linux, y un archivo multiplataforma simple que se ejecuta desde un script. [104]
LibreOffice, OpenOffice.org
LibreOffice y OpenOffice.org Base se pueden utilizar como interfaz para PostgreSQL. [105] [106]
pgBadger
El analizador de registros pgBadger PostgreSQL genera informes detallados a partir de un archivo de registro PostgreSQL. [107]
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. [108]
administrador
Adminer es una sencilla herramienta de administración basada en web para PostgreSQL y otros, escrita en PHP.
pgEspaldaDescanso
pgBackRest es una herramienta de copia de seguridad y restauración para PostgreSQL que brinda soporte para copias de seguridad completas, diferenciales e incrementales. [109]
pgaudit
pgaudit es una extensión de PostgreSQL que proporciona un registro detallado de sesión y/o auditoría de objetos a través de la función de registro estándar proporcionada por PostgreSQL. [110]
WAL-E
WAL-E es una herramienta de copia de seguridad y restauración para PostgreSQL que brinda soporte para copias de seguridad físicas (basadas en WAL), escritas en Python. [111]

Varias empresas ofrecen herramientas patentadas para PostgreSQL. A menudo constan de un núcleo universal que se adapta a varios productos de bases de datos específicos. Estas herramientas comparten principalmente las funciones de administración con las herramientas de código abierto, pero ofrecen mejoras en el modelado , importación, exportación o generación de informes de datos.

Usuarios notables

Las organizaciones y productos notables que utilizan PostgreSQL como base de datos principal incluyen:

Implementaciones de servicios

Algunos proveedores destacados ofrecen PostgreSQL como software como servicio :

Historial de lanzamientos

Leyenda:
Versión antigua
Versión anterior, aún mantenida.
Ultima versión
Última versión preliminar
Lanzamiento futuro

Ver 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". Grupo de desarrollo global de PostgreSQL . Consultado el 14 de marzo de 2017 .
  3. ^ ab "¡Feliz cumpleaños, PostgreSQL!". Grupo de desarrollo global de PostgreSQL. 8 de julio de 2008.
  4. ^ "¡PostgreSQL 16.3, 15.7, 14.12, 13.15 y 12.19 lanzados!". 9 de mayo de 2024.
  5. ^ "¡Lanzamiento de PostgreSQL 17 Beta 2!". 27 de junio de 2024.
  6. ^ ab "Licencia". Grupo de desarrollo global de PostgreSQL . Consultado el 20 de septiembre de 2010 .
  7. ^ "Licencia PostgreSQL aprobada por OSI". Llorar. 18 de febrero de 2010. Archivado desde el original el 8 de agosto de 2016 . Consultado el 18 de febrero de 2010 .
  8. ^ ab "Licencia OSI PostgreSQL". Iniciativa de código abierto. 20 de febrero de 2010 . Consultado el 20 de febrero de 2010 .
  9. ^ "Debian - Detalles del paquete postgresql en sid". paquetes.debian.org . Consultado el 25 de enero de 2021 .
  10. ^ "Licencia: principal". Proyecto Fedora .
  11. ^ "PostgreSQL". fsf.org .
  12. ^ "Preguntas frecuentes: ¿Qué es PostgreSQL? ¿Cómo se pronuncia? ¿Qué es Postgres?". Wiki de PostgreSQL . Comunidad PostgreSQL . Consultado el 2 de octubre de 2021 .
  13. ^ "Muestra de audio, MP3 de 5,6k".
  14. ^ "¿Qué es PostgreSQL?". Documentación de PostgreSQL 9.3.0 . Grupo de desarrollo global de PostgreSQL . Consultado el 20 de septiembre de 2013 .
  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 agregando soporte 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 modificarlo y consultarlo.
  17. ^ "Orafce: paquetes y funciones 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 DBMS_JOB de Oracle.
  19. ^ "WiltonDB". WiltonDB . 2023 . Consultado el 18 de diciembre de 2023 . WiltonDB [está] empaquetado para Windows. Se esfuerza por ser utilizable como 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 GUI 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 único servidor. ... No hay una talla para todos...
  25. ^ Esto se reconoce por el permiso liberal para usar el nombre PostgreSQL, según lo aprobado (para uso justo, cuando no confunda 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 marcas comerciales de PostgreSQL: " Política de Marcas". PostgreSQL.org . 8 de diciembre de 2020 . Consultado el 17 de diciembre de 2023 . Intentaremos trabajar con usted para permitir usos [del nombre de 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 Conferencia ACM SIGMOD sobre Gestión de Datos. Washington DC . Consultado el 17 de diciembre de 2011 .
  27. ^ "PostgreSQL: Historia". Grupo de desarrollo global de PostgreSQL. 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". archivos.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 pioneras en Postgres se implementaron ampliamente [...] Stonebraker es el único ganador del premio Turing que se ha involucrado en un emprendimiento en serie a esta escala, lo que le brinda una perspectiva distintiva del mundo académico.
  30. ^ Stonebraker, M.; Rowe, LA El modelo de datos POSTGRES (PDF) . Actas de la 13ª Conferencia Internacional sobre Bases de Datos Muy Grandes. 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. ^ Una breve historia de PostgreSQL "La versión 3 apareció en 1991 y agregó soporte para múltiples administradores de almacenamiento, un ejecutor de consultas mejorado y un sistema de reglas reescrito". postgresql.org . The PostgreSQL Global Development Group , obtenido el 18 de marzo de 2020.
  33. ^ "Universidad POSTGRES, Versión 4.2". 26 de julio de 1999.
  34. ^ Página, Dave (7 de abril de 2015). "Re: ¿20 aniversario de PostgreSQL?". pgsql-advocacy (lista de correo) . Consultado el 9 de abril de 2015 .
  35. ^ Puertos Dan RK; Kevin Grittner (2012). "Aislamiento de instantáneas serializables en PostgreSQL" (PDF) . Actas del Fondo de Dotación VLDB . 5 (12): 1850–1861. arXiv : 1208.4179 . Código Bib : 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 síncrona (noticias), 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". Grupo de Desarrollo Global de Postgres. Archivado desde el original el 29 de marzo de 2010 . Consultado el 27 de agosto de 2016 .
  40. ^ "Postgres-BDR". 2do Cuadrante 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" (Presione soltar). 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 K-vecino más cercano 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: en funcionamiento (1 ed.). Sebastopol, CA: O'Reilly Media, Inc. p. 129.ISBN 978-1-4493-2633-3. Consultado el 17 de octubre de 2016 . Los Foreign Data Wrappers (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 de interfaz de usuario/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, implementada en PostgreSQL 7.4 y posteriores.
  48. ^ "libpq". postgresql.org . 9 de noviembre de 2023 . Consultado el 17 de diciembre de 2023 .
  49. ^ "SQL incorporado 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. ^ "Controlador JDBC PostgreSQL" . Consultado el 4 de abril de 2020 .
  53. ^ "[ANN] PostgresORM.jl: Mapeo relacional de objetos para PostgreSQL". Julia Lang . 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ínima)". Julia Lang . 8 de marzo de 2020 . Consultado el 26 de agosto de 2021 .
  56. ^ "PostgreSQL + Python | Psycopg". initd.org .
  57. ^ "nodo-postgres" . Consultado el 4 de abril de 2020 .
  58. ^ "Controladores de bases de datos SQL". Ir a wiki . golang.org . Consultado el 22 de junio de 2015 .
  59. ^ "Rust-Postgres" . Consultado el 4 de abril de 2020 .
  60. ^ "Programación del servidor". Documentación de PostgreSQL . Consultado el 19 de mayo de 2019 .
  61. ^ "HACER". Documentación de PostgreSQL . Consultado el 19 de mayo de 2019 .
  62. ^ "PL/Python - Lenguaje procesal Python". Documentación de PostgreSQL . Consultado el 23 de octubre de 2022 .
  63. ^ "Idiomas procesales". 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 del sistema: Postgres es un excelente servidor de pub/sub 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?". 2do Cuadrante . Consultado el 24 de noviembre de 2019 .
  68. ^ "Agregar relaciones de vista materializada". 4 de marzo de 2013 . Consultado el 4 de marzo de 2013 .
  69. ^ "Admite vistas que se actualizan automáticamente". 8 de diciembre de 2012 . Consultado el 8 de diciembre de 2012 .
  70. ^ "Agregar sintaxis CREAR VISTA RECURSIVA". 1 de febrero de 2013 . Consultado el 28 de febrero de 2013 .
  71. ^ Mamájian, 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". Medios O'Reilly . 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 SEPostgreSQL - Wiki de PostgreSQL". wiki.postgresql.org .
  77. ^ "NB SQL 9.3 - SELinux Wiki". 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 26 de agosto de 2021 .
  80. ^ "Distinguir entre mayúsculas y minúsculas de los identificadores". Grupo de desarrollo global de PostgreSQL. 11 de noviembre de 2021.
  81. ^ ab Berkus, Josh (6 de julio de 2007). "PostgreSQL publica el primer punto de referencia 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". ESPECIFICACIONES . 6 de julio de 2007 . Consultado el 10 de julio de 2007 .
  84. ^ "Resultado de SPECjAppServer2004". ESPECIFICACIONES . 4 de julio de 2007 . Consultado el 1 de septiembre de 2007 .
  85. ^ "Gestión de recursos del kernel". Manual PostgreSQL . PostgreSQL.org . Consultado el 12 de noviembre de 2011 .
  86. ^ Greg Smith (15 de octubre de 2010). PostgreSQL 9.0 Alto Rendimiento. Publicación de paquetes . 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 la base de datos para datos genómicos". Bioquímica de células J. 116 (6): 877–83. arXiv : 2008.06835 . doi :10.1002/jcb.25049. PMID  25560631. S2CID  27458866.
  89. ^ "Paquetes de Mac OS X". El grupo de desarrollo global de PostgreSQL . 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 del servicio de datos de Oracle Solaris Cluster para PostgreSQL". docs.oracle.com . Consultado el 4 de febrero de 2023 .
  93. ^ "Centro de archivo y portabilidad HP-UX | postgresql-12.4". hpux.connect.org.uk . Consultado el 4 de febrero de 2023 .
  94. ^ "AArch64 planifica BoF en DebConf". debian.org .
  95. ^ Souza, Rubens (17 de junio de 2015). "Paso 5 (actualización): Instalar PostgreSQL en mi Raspberry Pi 1 y 2". Frambuesa PG . Consultado el 27 de agosto de 2016 .
  96. ^ "Plataformas compatibles". Grupo de desarrollo global de PostgreSQL . Consultado el 6 de abril de 2012 .
  97. ^ "pgAdmin: herramientas de administración y gestión de PostgreSQL". sitio web . Consultado el 12 de noviembre de 2011 .
  98. ^ "Debian - Detalles del paquete pgadmin3 en jessie" . Consultado el 10 de marzo de 2017 .
  99. ^ "Equipo de desarrollo de pgAdmin". pgadmin.org . Consultado el 22 de junio de 2015 .
  100. ^ 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 .
  101. ^ "PgAdmin 4 LÉAME". GitHub . Consultado el 15 de agosto de 2018 .
  102. ^ Proyecto phpPgAdmin (25 de abril de 2008). "Acerca de phpPgAdmin" . Consultado el 25 de abril de 2008 .
  103. ^ Estudio PostgreSQL (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 .
  104. ^ "Sitio web de TeamPostgreSQL". 3 de octubre de 2013 . Consultado el 3 de octubre de 2013 .
  105. ^ oooforum.org (10 de enero de 2010). "Back-ends para OpenOffice". Archivado desde el original el 28 de septiembre de 2011 . Consultado el 5 de enero de 2011 .
  106. ^ libreoffice.org (14 de octubre de 2012). "Características básicas". Archivado desde el original el 7 de enero de 2012 . Consultado el 14 de octubre de 2012 .
  107. ^ Greg Smith; Robert Treat y Christopher Browne. "Ajustando su servidor PostgreSQL". Wiki . PostgreSQL.org . Consultado el 12 de noviembre de 2011 .
  108. ^ "pgDevOps". BigSQL.org . Archivado desde el original el 1 de abril de 2017 . Consultado el 4 de mayo de 2017 .
  109. ^ "respaldopg/respaldopg". GitHub . 21 de noviembre de 2021.
  110. ^ "pgaudit/pgaudit". GitHub . 21 de noviembre de 2021.
  111. ^ "wal-e/wal-e". 24 de junio de 2021 – vía GitHub.
  112. ^ Claire Giordano (31 de octubre de 2019). "Diseñar análisis a escala de petabytes mediante la ampliación horizontal de Postgres en Azure con la extensión Citus". Blog . Comunidad tecnológica de Microsoft.
  113. Emmanuel Cecchet (21 de mayo de 2009). Creación de almacenes PetaByte con PostgreSQL sin modificar (PDF) . PGCon 2009 . Consultado el 12 de noviembre de 2011 .
  114. ^ "MySpace.com amplía el análisis para todos sus amigos" (PDF) . caso de estudio. Datos de Aster. 15 de junio de 2010. Archivado (PDF) desde el original el 14 de noviembre de 2010 . Consultado el 12 de noviembre de 2011 .
  115. ^ "Apagón del fin de semana pasado". Blog . Genio. 1 de agosto de 2011.
  116. ^ "Base de datos". Wiki . Abrir StreetMap.
  117. ^ Dominio .ORG afiliados de PostgreSQL, Australia: Computer World, 24 de agosto de 2023
  118. ^ a b C W. Jason Gilmore; Tratamiento RH (2006). Principiantes de PHP y PostgreSQL 8: de principiante a profesional. Presione. ISBN 978-1-43020-136-6. Consultado el 30 de agosto de 2017 .
  119. ^ Sony Online opta por la base de datos de código abierto en lugar de Oracle, Computer World
  120. ^ "Un estudio de caso de Web Commerce Group sobre PostgreSQL" (PDF) (1.2 ed.). PostgreSQL.
  121. ^ "Descripción general de la arquitectura". Wiki del software Reddit . Reddit. 27 de marzo de 2014 . Consultado el 25 de noviembre de 2014 .
  122. ^ Pihlak, Martín. "PostgreSQL @Skype" (PDF) . wiki.postgresql.org . Consultado el 16 de enero de 2019 .
  123. ^ "¿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 .
  124. ^ "Base de datos - MusicBrainz". Wiki MusicBrainz . Consultado el 5 de febrero de 2011 .
  125. ^ Duncavage, Daniel P (13 de julio de 2010). "La NASA necesita ayuda de Postgres-Nagios".
  126. ^ Roy, Gavin M (2010). "PostgreSQL en myYearbook.com" (discusión). Este de EE. UU.: Conferencia PostgreSQL. Archivado desde el original el 27 de julio de 2011.
  127. ^ "Mantener Instagram con más de un millón de nuevos usuarios en doce horas". Instagram-ingeniería.tumblr.com. 17 de mayo de 2011 . Consultado el 7 de julio de 2012 .
  128. ^ "Postgres en Disqus" . Consultado el 24 de mayo de 2013 .
  129. ^ 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)
  130. ^ "Migración exitosa de Yandex.Mail de Oracle a Postgres [pdf]". Noticias de hackers: news.ycombinator.com . Consultado el 28 de septiembre de 2016 .
  131. ^ 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. Consultado el 5 de septiembre de 2017 .
  132. ^ "Met Office cambia Oracle por PostgreSQL". computerweekly.com . 17 de junio de 2014 . Consultado el 5 de septiembre de 2017 .
  133. ^ "Software de código abierto". Vuelo informado . Consultado el 22 de noviembre de 2017 .
  134. ^ "Ansible en Grofers (Parte 2): gestión de PostgreSQL". Lambda: el blog de ingeniería de Grofers . 28 de febrero de 2017 . Consultado el 5 de septiembre de 2018 .
  135. ^ McMahon, Felipe; Chiorean, María-Livia; Coleman, Susie; Askoolum, Akash (30 de noviembre de 2018). "Blog digital: Adiós Mongo, hola Postgres". El guardián . ISSN  0261-3077.
  136. ^ "Errores elevados en API y ChatGPT" . Consultado el 2 de diciembre de 2023 .
  137. ^ Alex Williams (1 de abril de 2013). "Heroku fuerza la actualización del cliente para solucionar un agujero crítico de seguridad de PostgreSQL". TechCrunch .
  138. ^ Barb Darrow (11 de noviembre de 2013). "Heroku mejora Postgres con reversión de bases de datos y alertas proactivas". GigaOM.
  139. ^ Craig Kerstiens (26 de septiembre de 2013). "WAL-E y protección continua con Heroku Postgres". Blog de Heroku.
  140. ^ "EnterpriseDB ofrece la base de datos en la nube Postgres Plus". Techweekeurope.co.uk. 27 de enero de 2012 . Consultado el 7 de julio de 2012 .
  141. ^ "Alibaba Cloud amplía su asociación técnica con EnterpriseDB". Socios de hitos . 26 de septiembre de 2018 . Consultado el 9 de junio de 2020 .
  142. ^ O'Doherty, Paul; Asselin, Stéphane (2014). "3: Arquitectura del espacio de trabajo de VMware". VMware Horizon Suite: creación de servicios para el usuario final. Tecnología de prensa VMware. Upper Saddle River, Nueva Jersey: VMware Press. pag. 65.ISBN 978-0-13-347910-2. Consultado 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 ha sido optimizado para entornos virtuales.
  143. ^ 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.
  144. ^ "EOA de VMware vFabric Suite" (PDF) . 1 de septiembre de 2014 . Consultado el 17 de diciembre de 2023 .
  145. ^ Jeff (14 de noviembre de 2013). "Amazon RDS para PostgreSQL: ahora disponible". Blog de servicios web de Amazon.
  146. ^ Alex Williams (14 de noviembre de 2013). "PostgreSQL ahora disponible en el servicio de bases de datos relacionales de Amazon". TechCrunch .
  147. ^ "Actualización de Amazon Aurora: compatibilidad con PostgreSQL". Blog de AWS . 30 de noviembre de 2016 . Consultado el 1 de diciembre de 2016 .
  148. ^ "Anuncio de Azure Database para PostgreSQL". Blog de Azure . 10 de mayo de 2017 . Consultado el 19 de junio de 2019 .
  149. ^ "Aliyun PolarDB lanzó actualizaciones importantes para admitir la migración con un solo clic de bases de datos como Oracle a la nube". Desarrollar papel . 6 de julio de 2019.
  150. ^ "Replicación asincrónica maestro-esclavo de bases de datos PostgreSQL con un solo clic". Zona D. Consultado el 26 de mayo de 2017 .
  151. ^ "Documentación de IBM Cloud Hyper Protect DBaaS para PostgreSQL". nube.ibm.com . Consultado el 24 de junio de 2020 .
  152. ^ "Crunchy Data continúa siendo compatible con PostgreSQL con el lanzamiento de Crunchy Bridge". 18 de septiembre de 2020.
  153. ^ "SELECCIONE 'Hola, mundo' Postgres sin servidor creado para la nube". 15 de junio de 2022.
  154. ^ "Política de versiones". Grupo de desarrollo global de PostgreSQL . Consultado el 4 de octubre de 2018 .
  155. ^ Vaas, Lisa (2 de diciembre de 2002). "Las bases de datos se dirigen a empresas". Semana electrónica . Consultado el 29 de octubre de 2016 .
  156. ^ Krill, Paul (20 de noviembre de 2003). "PostgreSQL impulsa la base de datos de código abierto". InfoMundo . Consultado el 21 de octubre de 2016 .
  157. ^ Krill, Paul (19 de enero de 2005). "La base de datos de código abierto PostgreSQL cuenta con el impulso de Windows". InfoMundo . Consultado el 2 de noviembre de 2016 .
  158. ^ Weiss, Todd R. (5 de diciembre de 2006). "Lanzada la versión 8.2 de la base de datos PostgreSQL de código abierto". Mundo de la informática . Consultado el 17 de octubre de 2016 .
  159. ^ Gilbertson, Scott (5 de febrero de 2008). "PostgreSQL 8.3: la base de datos de código abierto promete una velocidad increíble". Cableado . Consultado el 17 de octubre de 2016 .
  160. ^ Huber, Mathias (2 de julio de 2009). "PostgreSQL 8.4 demuestra ser rico en funciones". Revista Linux . Consultado el 17 de octubre de 2016 .
  161. ^ Brockmeier, Joe (30 de septiembre de 2010). "Cinco funciones empresariales en PostgreSQL 9". Linux.com . Fundación Linux . Consultado el 6 de febrero de 2017 .
  162. ^ Timothy Prickett Morgan (12 de septiembre de 2011). "PostgreSQL llega a 9.1, apunta a la empresa". El registro . Consultado el 6 de febrero de 2017 .
  163. ^ "PostgreSQL: PostgreSQL 9.2 lanzado". www.postgresql.org . 10 de septiembre de 2012.
  164. ^ "Reintroducción de Hstore para PostgreSQL". InfoQ .
  165. ^ Richard, Chirgwin (7 de enero de 2016). "Di ups, UPSERT tu cabeza: la versión 9.5 de PostgreSQL ha llegado". El registro . 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. ^ "Lanzamiento de PostgreSQL 11". 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: ¡Lanzamiento de PostgreSQL 12!". 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. ^ "¡Lanzamiento de PostgreSQL 13!". 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. ^ "¡Lanzamiento de PostgreSQL 14!". www.postgresql.org . 30 de septiembre de 2021.
  174. ^ "¡Lanzamiento de PostgreSQL 16!". 14 de septiembre de 2023.

Otras lecturas

enlaces externos