O sistema de gerenciamento de banco de dados objeto-relacional hoje conhecido por PostgreSQL, é derivado do pacote POSTGRES escrito na Universidade da Califórnia em Berkeley. Com mais de uma década de desenvolvimento por trás, o PostgreSQL é atualmente o mais avançado banco de dados de código aberto disponível em qualquer lugar.
O projeto POSTGRES, liderado pelo Professor Michael Stonebraker, foi patrocinado pela Defense Advanced Research Projects Agency (DARPA), pelo Army Research Office (ARO), pela National Science Foundation (NSF)) e pela ESL, Inc. A implementação do POSTGRES começou em 1986. Os conceitos iniciais para o sistema foram apresentados em The design of POSTGRES , e a definição do modelo de dados inicial foi descrita em The POSTGRES data model . O projeto do sistema de regras desta época foi descrito em The design of the POSTGRES rules system. Os fundamentos lógicos e a arquitetura do gerenciador de armazenamento foram detalhados em The design of the POSTGRES storage system .
O Postgres passou por várias versões principais desde então. A primeira "versão de demonstração" do sistema se tornou operacional em 1987, e foi exibida em 1988 na Conferência ACM-SIGMOD. A versão 1, descrita em The implementation of POSTGRES , foi liberada para alguns poucos usuários externos em junho de 1989. Em resposta à crítica ao primeiro sistema de regras (A commentary on the POSTGRES rules system ), o sistema de regras foi reprojetado (On Rules, Procedures, Caching and Views in Database Systems ), e a versão 2 foi liberada em junho de 1990, contendo um novo sistema de regras. A versão 3 surgiu em 1991 adicionando suporte a múltiplos gerenciadores de armazenamento, um executor de comandos melhorado, e um sistema de regras reescrito. Em sua maior parte as versões seguintes, até o Postgres95 (veja abaixo), focaram a portabilidade e a confiabilidade.
O POSTGRES tem sido usado para implementar muitos aplicativos diferentes de pesquisa e de produção, incluindo: sistema de análise de dados financeiros, pacote de monitoração de desempenho de motor a jato, banco de dados de acompanhamento de asteróides, banco de dados de informações médicas, e vários sistemas de informações geográficas. O POSTGRES também tem sido usado como ferramenta educacional por várias universidades. Por fim, a Illustra Information Technologies (posteriormente incorporada pela Informix, que agora pertence à IBM) pegou o código e o comercializou. O POSTGRES se tornou o gerenciador de dados principal do projeto de computação científica Sequoia 2000 no final de 1992.
O tamanho da comunidade de usuários externos praticamente dobrou durante o ano de 1993. Começou a ficar cada vez mais óbvio que a manutenção do código do protótipo e o suporte estavam consumindo grande parte do tempo que deveria ser dedicado a pesquisas de banco de dados. Em um esforço para reduzir esta sobrecarga de suporte, o projeto do POSTGRES de Berkeley terminou oficialmente na versão 4.2.
Em 1994, Andrew Yu e Jolly Chen adicionaram um interpretador da linguagem SQL ao POSTGRES. Sob um novo nome, o Postgres95 foi em seguida liberado na Web para encontrar seu próprio caminho no mundo, como descendente de código aberto do código original do POSTGRES de Berkeley.
O código do Postgres95 era totalmente escrito em ANSI C, com tamanho reduzido em 25%. Muitas mudanças internas melhoraram o desempenho e a facilidade de manutenção. O Postgres95 versão 1.0.x era 30-50% mais rápido que o POSTGRES versão 4.2, pelo Wisconsin Benchmark. Além da correção de erros, as principais melhorias foram as seguintes:
A linguagem de comandos PostQUEL foi substituída pela linguagem SQL (implementada no servidor). Não foram permitidas subconsultas até o PostgreSQL (veja abaixo), mas estas podiam ser simuladas no Postgres95 por meio de funções SQL definidas pelo usuário. As funções de agregação foram reimplementadas. Também foi adicionado suporte a cláusula GROUP BY nas consultas.
Foi fornecido um novo programa para executar comandos SQL interativos, o psql, utilizando o Readline do GNU, que substituiu com vantagens o programa monitor antigo.
Uma nova biblioteca cliente, a libpgtcl, dava suporte a clientes baseados no Tcl. O interpretador de comandos pgtclsh fornecia novos comandos Tcl para interfacear programas Tcl com o servidor Postgres95.
A interface para objetos grandes foi revisada. A inversão de objetos grandes [1] era o único mecanismo para armazenar objetos grandes (O sistema de arquivos inversão foi removido).
O sistema de regras no nível de instância foi removido. As regras ainda eram disponíveis como regras de reescrita.
Um breve tutorial introduzindo as funcionalidades regulares da linguagem SQL, assim como as do Postgres95, foi distribuído junto com o código fonte.
O utilitário make do GNU (em vez do make do BSD) foi utilizado para a geração. Além disso, o Postgres95 podia ser compilado com o GCC sem correções (o alinhamento de dados para a precisão dupla foi corrigido).
Em 1996 ficou claro que o nome "Postgres95" não resistiria ao teste do tempo. Foi escolhido um novo nome, PostgreSQL, para refletir o relacionamento entre o POSTGRES original e as versões mais recentes com capacidade SQL. Ao mesmo tempo, foi mudado o número da versão para começar em 6.0, colocando a numeração de volta à seqüência original começada pelo projeto POSTGRES de Berkeley.
A ênfase durante o desenvolvimento do Postgres95 era identificar e compreender os problemas existentes no código do servidor. Com o PostgreSQL a ênfase foi reorientada para o aumento das funcionalidades e recursos, embora o trabalho continuasse em todas as áreas.
Os detalhes sobre o que aconteceu com o PostgreSQL desde então podem ser encontrados no Apêndice E.
[1] |
A implementação da inversão de objetos grandes divide os objetos grandes em "pedaços", e armazena os pedaços em linhas no banco de dados. Um índice B-tree garante a procura rápida do número correto do pedaço ao serem feitos acessos aleatórios de leitura e gravação. Manual de Referência do PostgreSQL 6.3 (N. do T.) |