PostgreSQL ( POHST-gres-kew-EL), também conhecido como Postgres, é um sistema de gestão de bases de dados relacionais (RDBMS) gratuito e de código aberto que enfatiza a extensibilidade e a conformidade com SQL. A base de dados apresenta transações com propriedades de atomicidade, consistência, isolamento e durabilidade (ACID), juntamente com vistas atualizáveis automaticamente, vistas materializadas, triggers, chaves estrangeiras e procedimentos armazenados. É suportado em todos os principais sistemas operativos, incluindo Windows, Linux, macOS, FreeBSD e OpenBSD, e lida com uma variedade de cargas de trabalho, desde máquinas individuais até data warehouses, data lakes ou serviços web com muitos utilizadores simultáneos.
O PostgreSQL Global Development Group concentra-se apenas no desenvolvimento de um motor de base de dados e componentes estreitamente relacionados. Este núcleo é tecnicamente o que constituye o próprio PostgreSQL, mas uma extensa comunidade de desenvolvedores e um ecossistema fornecem outros conjuntos de funcionalidades importantes que tradicionalmente poderían ser fornecidos por um fornecedor de software proprietário. Estes incluyen funcionalidades de motor de base de dados para propósitos especiais, como as necessárias para suportar uma base de datos geoespacial ou temporal, ou funcionalidades que emulam outros produtos de base de datos. Também estão disponíveis de terceiros uma amplia variedad de funcionalidades de interface de utilizador e de máquina, como interfaces gráficas de utilizador ou conjuntos de ferramentas de balanceamento de carga e alta disponibilidade. A amplia rede de suporte de terceiros para PostgreSQL - pessoas, empresas, produtos e projetos - embora não faça parte do PostgreSQL Development Group, é essencial para a adoção e uso do motor de base de datos e constituye o ecossistema PostgreSQL em sentido amplio.
História
Ingres e POSTGRES da Universidade (1982-1994)
PostgreSQL evolucionou a partir do projeto Ingres na Universidade da Califórnia, Berkeley. Em 1982, o líder da equipe Ingres, Michael Stonebraker, deixou Berkeley para fazer uma versión proprietária de Ingres. Regresó a Berkeley em 1985 e começou um projeto pós-Ingres para abordar os problemas com os sistemas de base de datos contemporáneos que se haviam tornado cada vez mais claros durante o início dos anos 1980. Ganó o Prêmio Turing em 2014 por estes e outros projetos, e pelas técnicas pioneiras neles.
O novo projeto, POSTGRES, visava a acrescentar o mínimo de funcionalidades necessárias para suportar completamente tipos de datos. Estas funcionalidades incluían a capacidade de definir tipos e de descrever completamente relações, algo ampliamente utilizado mas mantido inteiramente pelo utilizador. Em POSTGRES, a base de datos entendía as relações e podía recuperar informação em tabelas relacionadas de forma natural usando regras. POSTGRES usou muitas das ideias de Ingres pero non o seu código.
A partir de 1986, artigos publicados descreveron a base do sistema, e uma versión prototipo foi mostrada na Conferencia ACM SIGMOD de 1988. A equipe lançou a versión 1 a um pequeno número de utilizadores em junho de 1989, seguida da versión 2 com um sistema de regras reescrito em junho de 1990. A versión 3, lançada em 1991, reescribiu novamente o sistema de regras e acrescentou suporte para múltiples gestores de almacenamento e um motor de consultas melhorado. Em 1993, o número de utilizadores começou a sobrecargar o projeto com solicitudes de suporte e funcionalidades. Após lançar a versión 4.2 em 30 de junho de 1994, principalmente uma limpieza, o projeto terminou. Berkeley lançou POSTGRES sob uma variante da licencia MIT, que permitiu a outros desenvolvedores usar o código para qualquer uso. Na época, POSTGRES usaba um intérprete de linguaxe de consultas POSTQUEL influenciado por Ingres, que podía ser usado interactivamente com uma aplicación de consola chamada monitor.
Postgres95 (1994-1996)
Em 1994, os estudantes de posgrao de Berkeley Andrew Yu e Jolly Chen substituíron o intérprete de linguaxe de consultas POSTQUEL por um para a linguaxe de consultas SQL, criando Postgres95. A consola monitor também foi substituída por psql. Yu e Chen anunciaron a primeira versión (0.01) a testadores beta em 5 de maio de 1995. A versión 1.0 de Postgres95 foi anunciada em 5 de setembro de 1995, com uma licencia mais liberal que permitía que o software fosse libremente modificable.
Em 8 de julho de 1996, Marc Fournier em Hub.org Networking Services proporcionou o primeiro servidor de desenvolvimento não universitario para o esforço de desenvolvimento de código aberto. Coa participación de Bruce Momjian e Vadim B. Mikheev, o trabalho começou para estabilizar o código herdado de Berkeley.
PostgreSQL (1996-presente)
Em 1996, o projeto foi renomeado a PostgreSQL para refletir o seu suporte para SQL. A presença en línea no sitio web PostgreSQL.org começou em 22 de outubro de 1996. A primeira versión de PostgreSQL formou a versión 6.0 em 29 de janeiro de 1997. Desde entón, desenvolvedores e voluntarios de todo o mundo mantiveron o software como The PostgreSQL Global Development Group.
O projeto continúa facendo versións disponibles baixo a súa licencia de software libre e de código aberto PostgreSQL License. O código provén de contribucións de fornecedores proprietarios, empresas de soporte e programadores de código aberto.
PostgreSQL 18, lançada em 25 de setembro de 2025, introduciu un novo subsistema de E/S asíncrona (AIO), que permite aos utilizadores de bases de datos realizar tarefas de E/S concurrentes como lectura anticipada e escaneo secuencial, demostrando ata unha mellora de rendemento de 3x para lecturas de almacenamento nalgúns cargas de traballo. A versión tamén engadiu soporte para que as estatísticas do planificador persistan entre actualizacións de versión maior, reducindo a degradación do rendemento que ocorría anteriormente mentres as estatísticas se reconstruían despois dunha actualización. A mediados de 2026, PostgreSQL 19 estaba en probas beta, cunha versión xeral prevista para máis tarde ese ano.
Control de Concurrencia Multiversión (MVCC)
PostgreSQL xestiona a concurrencia mediante o control de concurrencia multiversión (MVCC), que dá a cada transacción unha "instantánea" da base de datos, permitindo que se fagan cambios sen afectar a outras transaccións. Isto elimina en gran medida a necesidade de bloqueos de lectura e garante que a base de datos manteña os principios ACID. PostgreSQL ofrece catro niveis de illamento de transaccións: Read Uncommitted, Read Committed, Repeatable Read e Serializable. Debido a que PostgreSQL é inmune ás lecturas sucias, solicitar un nivel de illamento de transacción Read Uncommitted proporciona Read Committed no seu lugar. PostgreSQL soporta serializabilidade completa mediante o método de illamento de instantánea serializable (SSI). A implementación MVCC de PostgreSQL é propensa a problemas de rendemento que requiren axuste cando está baixo unha carga de escritura pesada que actualiza filas existentes.
Almacenamento e Replicación
Replicación
PostgreSQL inclúe replicación binaria integrada baseada en enviar os cambios (write-ahead logs, ou WAL) aos nodos réplica de forma asíncrona, coa capacidade de executar consultas de só lectura contra estes nodos replicados. Isto permite dividir o tráfico de lectura entre varios nodos de forma eficiente. Software de replicación anterior que permitía un escalado de lectura similar normalmente dependía de solucións baseadas en triggers, que eran menos robustas. A replicación síncrona tamén está dispoñible, garantindo que unha transacción se confirma só despois de que se escribiu en polo menos un servidor de reserva, proporcionando garantías de durabilidade máis fortes ao custo dunha maior latencia.
Almacenamento e Indexación
PostgreSQL soporta unha variedade de técnicas de almacenamento e indexación. O almacenamento heap predeterminado organiza as filas en páxinas, e están dispoñibles varios tipos de índices, incluíndo B-tree, hash, GiST, SP-GiST, GIN e BRIN. Estes índices soportan consultas eficientes para diferentes tipos de datos e patróns de acceso. A partición de táboas, introducida en versións anteriores e mellorada co tempo, permite que táboas grandes se dividan en partes máis pequenas e manexables, mellorando o rendemento das consultas e as operacións de mantemento. O sistema tamén soporta tablespaces, permitindo aos administradores controlar a colocación física do almacenamento en disco.
Extensibilidade e Tipos de Datos
Unha característica definitoria de PostgreSQL é a súa extensibilidade. Os usuarios poden definir tipos de datos personalizados, operadores, métodos de índice e funcións. Esta extensibilidade levou ao desenvolvemento de extensións especializadas como PostGIS para datos geoespaciais, que engade soporte para obxectos xeográficos e consultas espaciais. Outras extensións proporcionan capacidades de busca de texto completo, funcionalidade de almacén de clave-valor e integración con sistemas externos. O mecanismo de extensión permite aos desenvolvedores de terceiros engadir funcionalidades sen modificar o motor central da base de datos, contribuíndo ao rico ecosistema de PostgreSQL.
PostgreSQL soporta nativamente unha amplia gama de tipos de datos, incluíndo numéricos, cadeas, data/hora, booleanos e datos binarios. Tamén inclúe soporte para arrays, JSON e JSONB (JSON binario), XML e tipos de enderezos de rede. O tipo JSONB, en particular, permite o almacenamento e consulta eficientes de datos semi-estructurados, facendo de PostgreSQL unha opción viable para cargas de traballo orientadas a documentos xunto con datos relacionais tradicionais.
Conformidade SQL e Funcionalidades
PostgreSQL é coñecido polo seu alto grao de conformidade SQL. Implementa unha gran parte do estándar SQL, incluíndo consultas complexas, subconsultas, funcións de ventá, expresións de táboa común (CTEs) e consultas recursivas. A base de datos soporta chaves estranxeiras, restricións de verificación, restricións únicas e chaves primarias para facer cumprir a integridade dos datos. Os triggers, que poden escribirse en varias linguaxes procedimentais, permiten a execución automática de funcións en resposta a eventos da base de datos.
Os procedementos almacenados e funcións poden escribirse en múltiples linguaxes, incluíndo PL/pgSQL (a linguaxe procedimental integrada), PL/Python, PL/Perl e PL/Tcl. Esta flexibilidade permite aos desenvolvedores implementar lóxica de negocio directamente na base de datos. PostgreSQL tamén soporta funcións definidas polo usuario escritas en C, permitindo operacións personalizadas de alto rendemento. O sistema inclúe un planificador e optimizador de consultas sofisticado que pode manexar ordes de unión complexas e usar estatísticas para elixir plans de execución eficientes.
Comunidade e Ecosistema
O PostgreSQL Global Development Group coordina o desenvolvemento do motor central da base de datos, pero o ecosistema máis amplio é vasto. Numerosas empresas ofrecen soporte comercial, consultoría e formación para PostgreSQL. Provedores de nube, incluíndo Amazon Web Services, Azure e Google Cloud, ofrecen servizos xestionados de PostgreSQL, facilitando a implantación e escalado de bases de datos na nube. Estes servizos xestionan tarefas operativas como copias de seguridade, parches e alta dispoñibilidade, mentres proporcionan integración con outras ferramentas nativas da nube.
Ferramentas de terceiros melloran a usabilidade e funcionalidade. Interfaces gráficas de usuario como pgAdmin proporcionan ferramentas visuais de xestión e consulta. Solucións de alta dispoñibilidade e balanceamento de carga, como Patroni e repmgr, automatizan o failover e a xestión de clústeres. Ferramentas de copia de seguridade como pgBackRest e Barman ofrecen funcionalidades avanzadas de copia de seguridade e recuperación. O ecosistema tamén inclúe poolers de conexión como PgBouncer, que melloran o rendemento para aplicacións con moitas conexións concurrentes.
Casos de Uso e Adopción
PostgreSQL úsase nunha amplia gama de industrias e aplicacións. Serve como base de datos principal para aplicacións web, backends móbiles e sistemas empresariais. O seu soporte para JSONB faino atractivo para aplicacións que necesitan un almacén híbrido relacional e de documentos. As capacidades xeospaciais proporcionadas por PostGIS úsanse ampliamente en servizos baseados na localización e sistemas de información xeográfica (GIS).
No ámbito da intelixencia artificial e aprendizaxe automático, PostgreSQL úsase cada vez máis como almacén de datos para pipelines de adestramento e inferencia. Extensións como pgvector permiten o almacenamento e consulta eficientes de embeddings vectoriais, que son esenciais para aplicacións de modelos de linguaxe grande e sistemas de IA xenerativa. Isto permite aos desenvolvedores construír sistemas de busca semántica e recomendación directamente dentro da base de datos, reducindo a necesidade de bases de datos vectoriais separadas. A robustez, extensibilidade e licenza de código aberto da base de datos convertírona nunha opción popular para organizacións que van desde startups ata grandes empresas.
Licenza e Gobernanza
A PostgreSQL License é unha licenza permisiva de código aberto, similar á MIT License. Permite aos usuarios usar, modificar e distribuír o software para calquera propósito, incluíndo aplicacións comerciais, con restricións mínimas. A licenza require que se manteñan os avisos de dereitos de autor e que o software se proporcione sen garantía.
O proxecto está gobernado por unha comunidade de desenvolvedores e usuarios, cun equipo central que supervisa as decisións principais. O desenvolvemento está impulsado por listas de correo e un ciclo de lanzamento anual, con versións maiores normalmente lanzadas no outono. O modelo de gobernanza enfatiza a transparencia e o consenso, con contribucións de individuos e empresas de todo o mundo. Esta gobernanza aberta fomentou un proceso de desenvolvemento estable e innovador, garantindo que PostgreSQL siga sendo unha tecnoloxía de base de datos líder.