PostgreSQL: instalando e conhecendo seus recursos Adriana Paula Zamin Scherer 1, Daniel Gonçalves Jacobsen 2, Marcelo Luis dos Santos 3 Faculdade Dom Bosco de Porto Alegre Porto Alegre RS Brasil adriana.faculdade@dombosco.net, djacobsenoris@msn.com, celol_santos@hotmail.com Resumo. O objetivo do presente artigo é relatar o uso do banco de dados livre PostgreSQL em uma empresa que atua no mercado de meios de captura. Para tanto, o artigo apresenta uma revisão bibliográfica das principais características do banco de dados, desde sua instalação até a forma como o software trata a segurança das informações armazenadas. A coleta de dados foi exclusivamente realizada através de uma entrevista com os dois administradores do banco de dados na empresa. Os resultados mostram que a utilização do PostgreSQL é viável, pois os objetivos foram atendidos e em função da qualidade do produto, a empresa já tem novos projetos em andamento prevendo o uso do PostgreSQL. Palavras-chave: PostgreSQL, banco de dados, segurança 1. Introdução Na realidade econômica em que vivemos a disputa entre as empresas para conquistar uma fatia do mercado ou, pelo menos, manter os clientes que possui, as informações tornaram-se elementos essenciais para o bom funcionamento dos negócios. E se uma empresa pretende expandir seus negócios, é fundamental que as informações estejam disponíveis sempre que forem necessárias. Para isto, é imprescindível a utilização de um Sistema de Gerenciamento de Banco de Dados (SGBD). Atualmente existem diversos softwares gerenciadores de banco de dados disponíveis no mercado. É possível classificá-los quanto a sua distribuição que pode ser livre ou proprietária. Dentre os proprietários estão, entre outros, o Oracle e o SQL Server. Dentre os livres o PostgreSQL é o que mais se destaca por possuir recursos que o equipara aos bancos de dados proprietários. Este fator tem contribuído para que seu uso aumente significativamente. 1 Mestre em Ciências da Computação pela Universidade Federal do Rio Grande do Sul. Professora da Faculdade Dom Bosco de Porto Alegre, RS - Brasil. Tem experiência na área de Ciência da Computação, atuando principalmente nos seguintes temas: Banco de Dados, Programação, Oracle, Java. 2 Bacharelando do curso de Sistemas de Informação da Faculdade Dom Bosco de Porto Alegre. Atuando com desenvolvimento de aplicações web na empresa Embratec Good Card. Atua como programador em ColdFusion, Java, Sybase e Oracle. 3 Bacharelando do curso de Sistemas de Informação da Faculdade Dom Bosco de Porto Alegre. Atuando na área de desenvolvimento de sistemas na empresa InfoSaúde utilizando as tecnologias ASP.NET, C# e Oracle.
Este artigo pretende expor as características do PostgreSQL desde sua instalação passando pelos recursos e mostrando seu uso na prática, com o objetivo de servir como guia de referência para o aprofundamento dos assuntos abordados. O artigo apresenta-se dividido em seis seções além desta introdução. Na seção 2, serão abordadas as questões relativas à instalação do PostgreSQL. A seção 3 faz uma breve descrição das características do gerenciador de banco de dados, abordando os seus aspectos principais. Na seção 4 e 5, respectivamente, será descrita a metodologia utilizada para a coleta de dados e a apresentação e discussão dos dados levantados. A seção 6 irá conter a síntese do artigo e considerações finais. 2. Instalação O PostgreSQL é suportado pelas mais diversas plataformas, entre elas o Windows, o Linux, e o Unix. Será tratada a seguir, a instalação na plataforma Windows da versão 8.2.4. O PostgreSQL pode ser instalado nas versões 2000, 2003, NT e XP. No entanto, de acordo com [Oslei 2007] em tecnologia NT, o instalador não funciona corretamente e, por este motivo, o software deverá ser instalado manualmente fazendo algumas alterações. As versões 95, 98 e ME não são oficialmente suportados pelo PostgreSQL, entretanto, caso o usuário desejar instalá-lo nesses sistemas, uma das soluções é utilizar um emulador. Porém, desta forma, a confiabilidade e a integridade dos dados armazenados não são totalmente garantidas [Lucas 2006]. Inicialmente é possível ressaltar que o sistema de arquivos de disco ou a partição em que o software será instalado deverá ser NTFS devido à maior confiabilidade que este tipo de sistemas de arquivos garante [Lucas 2006]. Esta característica será discutida em maiores detalhes na seção 3.1. O usuário de login para iniciar a instalação do banco de dados necessariamente deverá ser o usuário administrador do sistema operacional. Assim, todos os direitos de uso para os recursos necessários para a instalação estarão garantidos. Por praticidade, o PostgreSQL deve ser instalado como um serviço do sistema operacional. Caso contrário, a inicialização deverá ser feita manualmente pelas pastas dos arquivos onde o PostgreSQL foi instalado, executando o arquivo initdb. Para instalar o PostgreSQL como serviço, o instalador solicita a conta do sistema operacional que irá executar o banco de dados. Caso a conta informada não exista, o instalador pode encarregar-se de criar a conta especificada e fica a critério do usuário determinar a senha, ou deixar que ele gere uma automaticamente. Se não, o usuário deverá informar a senha da conta já existente. Ainda durante a instalação, é possível determinar que o instalador faça a inicialização do banco de dados depois de concluído o processo. Para isto, devem ser fornecidas as seguintes informações: porta de conexão, locale, codificação e a conta do usuário interno do banco de dados. A porta de conexão é aquela, onde o banco de dados irá atender as requisições de conexão dos usuários. O PostgreSQL, por default, atende as requisições na porta 5432. Ainda sobre o gerenciamento das conexões dos usuários, pode-se, durante a instalação, determinar se o banco poderá ser acessado apenas pela própria máquina, ou por outras máquinas da rede. O locale e a codificação têm como
objetivo configurar os acentos e os caracteres arábicos e sugere-se para estes, Portuguese, Brazil e LATIN1, respectivamente. A conta do usuário interno do banco de dados não deve ser a mesma conta do sistema operacional utilizada anteriormente para criação do serviço e a senha também não deve ser a mesma, pois caso ocorra uma invasão ao banco de dados o invasor não conseguirá facilmente invadir o sistema como um todo. O próximo passo é a habilitação dos módulos do contrib. Estes módulos proporcionam funcionalidades adicionais ao banco de dados. São diversas, conforme pode ser visto na figura 2.1. FIGURA 2.1 Módulos do contrib Segundo [Oslei 2007], algumas delas são diferenciais: TSeach2: é um recurso capaz de fazer uma busca completa por texto dentro do PostgreSQL. É uma evolução dos módulos Full Text Index e TSeach, que como indica o próprio instalador, se tornaram obsoletos. Suporte PgAdmin: funções adicionais ao software de gerenciamento PgAdmin. L-Tree: permite trabalhar com dados organizados em estrutura de árvore. PgStartTuple: informa o comprimento de tabelas e a quantidade de tuplas inutilizáveis. Logo após, deverão ser habilitadas quais linguagens procedurais 4 o usuário deseja instalar. Feito isso, o banco estará pronto para ser instalado completamente e ser executado. 4 Linguagem procedural é uma linguagem baseada na execução seqüencial das instruções. No caso dos bancos de dados, a programação interna pode ser feita através delas.
3. Características Técnicas Atualmente, o PostgreSQL é um dos SGBD s (Sistema Gerenciador de Banco de Dados) baseados em software livre mais avançado. Resultante de um projeto que se iniciou na década de 80, na Universidade de Berkeley, Califórnia [Gonzaga 2007]. Era chamado inicialmente de Postgres. Foi patrocinado por quatro empresas, denominadas DARPA, ARO, NFS e ESL Inc e coordenado por um dos primeiros desenvolvedores de banco de dados relacionais: o professor Michael Stonebraker [Sourceforge.net, 2007]. Durante o processo de desenvolvimento, o projeto passou por inúmeras mudanças e modificações, inclusive em seu nome. Em 1995, ele adotou a linguagem SQL como linguagem padrão do banco de dados e chamava-se Postgres95. De acordo com, [PostgreSQLBR 2007], um ano após, tornou-se o atual PostgreSQL fazendo menção a sua linguagem padrão e foi disponibilizado pela Internet. Hoje o PostgreSQL é um poderoso software para gerenciamento de banco de dados, agregando algumas funções dos SGBDs mais avançados, como por exemplo, os softwares proprietários Oracle ou SQL Server. É conhecido pela sua robustez e extrema segurança. Seu desenvolvimento é feito por comunidades voluntárias do mundo inteiro. Todavia, o projeto é gerenciado pelo PostgreSQL Global Development Group [Gonzaga 2007]. Além disso, vem ganhando cada vez mais espaço no mercado e é utilizado tanto em organizações públicas quanto organizações privadas. Um dos fatores que gerou um aumento significativo de utilização foi a sua inclusão na maioria das distribuições do Linux. Possui um suporte bastante grande para os padrões ANSI SQL-92, ANSI 96 e ANSI SQL-99 [Neto 2006]. Segundo [Oliveira e Cruz 2007], alguns comandos do padrão ANSI SQL-2003 também já começam a ser suportados. Ainda de acordo com [Oliveira e Cruz 2007] o PostgreSQL tem um suporte bastante amplo em relação as linguagens procedurais internas, como por exemplo: PL/pgSQL, PL/Tcl, PL/Perl, PL/Python, PL/Java, entre outras. Se o usuário desejar, também podem ser criadas novas linguagens e instalá-las no software desde que sigam as regras da documentação. O banco de dados suporta grandes volumes de dados, sendo que o tamanho do mesmo, o número de linhas e o número de índices são ilimitados. As tabelas suportam um valor aproximado de 32 TB cada uma, uma linha pode conter cerca de 1.6 TB e um campo cerca de 1 GB [PostgreSQL Global Development Group 2007]. Ainda assim, possui poderosos recursos de armazenamento de dados, gerência de memória, sistemas de bakcup, controle de concorrência e agrega algumas características simples de orientação a objetos (principalmente o conceito de herança de tabelas). Em [Neto 2006], podem ser vistas as funções básicas do PostgreSQL como por exemplo: triggers, views, stored procedures, transactions, schemas ou funções que foram implementadas a partir da verão 8.0.0, tablespaces, melhorias nos algoritmos de gerenciamento de buffers e checkpoints. Também implementa um recurso chamado garbage collection, que se encarrega de retirar fisicamente dos índices, das tabelas e da memória os dados que foram excluídos [Neto 2006], melhorando o desempenho do sistema como um todo.
Um dos principais diferenciais do banco é seu sistema de armazenamento de dados, que difere totalmente dos bancos concorrentes. O PostgreSQL possui um sistema de armazenamento baseado em cluster, que é um diretório onde todos os arquivos do banco estão armazenados. Tanto os arquivos dos dados, quanto os arquivos de configuração do banco. Outro tópico que tem destaque é a forma de como os dados são gravados no cluster. Os dados são temporariamente armazenados em um diretório do cluster que contém um conjunto de arquivos chamado WAL (Write Ahead Log). A cada modificação no conteúdo dos dados do banco, os novos dados são gravados temporariamente no WAL, que podem ter até 16 MB de tamanho. Os dados somente são transferidos do WAL para a base de dados original quando a função de checkpoint for chamada. O recurso de checkpoint pode ser configurado para ser executado de tempos em tempos ou pode ser chamado através de comandos SQL [Lucas 2006]. Este sistema aumenta significativamente a performance do banco, pois diminui o número de escritas efetivas nas tabelas originais [Gonzaga 2007], já que os dados somente serão realmente escritos com a chamada do checkpoint. O funcionamento básico do PostgreSQL é através de processos. O principal processo é o postmaster que é responsável por gerenciar o cluster e os processos de conexão dos clientes. Os outros processos chamam-se postgres, e são os que se iniciam quando um cliente conecta-se ao banco. Quando o coletor de estatísticas estiver sendo executado existirá também um processo postgres referente ao coletor de estatísticas [Lucas 2006]. O coletor de estatísticas é um software de apoio à administração do banco de dados, pois ele possibilita ao administrador coletar informações acerca das atividades do servidor. Com base nas informações coletadas o administrador pode fazer os ajustes necessários para que o banco de dados permaneça atendendo às requisições dos usuários com eficiência. Este aplicativo é capaz de indicar desde a quantidade de transações efetivadas e canceladas até a quantidade de leituras seqüências para cada tabela do banco [Neto 2006]. O controle de concorrência é utilizado para controlar eficientemente a atualização e visualização dos dados por diferentes sessões ao mesmo tempo. Segundo [Tessati 2007], o PostgreSQL implementa esse conceito de duas formas: o read commited que é uma forma comum entre outros SGBD s e o serializable. Se a forma utilizada for read commited, os dados visualizados são aqueles que foram efetivados antes do comando iniciar e nunca os dados que não foram efetivados ou aqueles que foram efetivados pelas transações concorrentes. Desta forma, duas consultas dentro de uma única transação podem trazer valores diferentes, pois neste modo de isolamento, uma transação concorrente pode alterar os dados da tabela durante a primeira consulta e assim ao iniciar a segunda consulta à tabela, esta contém as alterações efetivadas. Se a forma utilizada for serializable, os comandos enxergam os dados efetivados antes de a transação iniciar, assim consultas sucessivas dentro da mesma transação enxergam sempre os mesmos dados. Esta é uma forma mais rígida de controle da concorrência e pode ser alterada através do comando set transaction utilizado dentro dos softwares que gerenciam o banco.
Para gerenciar todas as essas tarefas, o PostgreSQL possui um conjunto de softwares de gerenciamento bastante completo e eficaz para Windows e Linux, chama-se PgAdmin. Encontra-se na verão III e possui uma interface gráfica muito interativa, não dificultando a execução das atividades e conectando-se ao banco via ODBC. É possível instalar o PgAdmin logo na instalação do próprio banco, ou instalálo separadamente mais tarde. Ele conta com diversos softwares para facilitar o uso pelo administrador do banco como, por exemplo, um agendador de tarefas ou um gerenciador do cluster de dados. Pode ser utilizado como um cliente SQL e monitora detalhadamente todos os processos que estão ocorrendo dentro do banco. 3.1. Segurança O PostgreSQL é um SGBD que tem no que diz respeito à segurança um dos seus pontos fortes, sendo em muitos casos o fator determinante na escolha entre os SGBDs livres. Esta sempre foi uma das preocupações da equipe de desenvolvedores do PostgreSQL: oferecer um SGBD extremamente robusto e confiável, sendo recomendado sua utilização em aplicações complexas, que exijam o controle de grandes volumes de dados, ou em casos de tratamento de informações críticas. A análise da segurança oferecida pelo PostgreSQL levará em conta fatores tidos como essenciais em um SGBD, além de outras características de funcionamento do PostgreSQL que aumentam a sua segurança. Logo na instalação do PostgreSQL é possível perceber que a segurança é questão primordial. Isto porque, para o seu perfeito funcionamento, a sua instalação [Oliveira 2007] deve ser feita em uma partição NTFS (New Technology File System), nunca em uma partição FAT (File Allocation Table) ou FAT32 (File Allocation Table para partições de até 32 GB). A vantagem de segurança de a instalação ser preferencialmente em sistemas de arquivos NTFS se deve ao fato deste possuir características que o tornam mais confiável do que os outros sistemas de arquivos, principalmente para aplicações que trabalham em rede. O controle de acesso aos dados deve ser feito de acordo com a necessidade de cada sistema. Existem informações que não devem ser vistas por todos os usuários: como exemplo, uma tabela que contenha os salários dos funcionários, ou os dados de um projeto novo que esteja em fase de desenvolvimento. O PostgreSQL oferece um controle baseado em direitos de acesso ou privilégios e é através deles que um usuário pode ou não acessar um dado. A identidade do usuário é que vai determinar o conjunto de privilégios disponíveis para ele. A autenticação dos clientes é feita através de um arquivo localizado no diretório de dados do cluster, chamado pg_hba.conf. Este arquivo é composto de vários registros, onde cada registro determina o tipo de conexão e devem ser informados valores como: o nome do banco de dados, a faixa de endereços de IP de cliente e o método de autenticação a ser utilizado nas conexões que correspondem a estes parâmetros [Sourceforge.net 2007]. Com a utilização deste arquivo que armazena os registros com os parâmetros necessários às autenticações é possível, por exemplo, determinar que um banco de dados possa ser acessado somente por um determinado usuário ou conjunto de usuários, informado ao registro. É possível também especificar os endereços IP ou a
faixa de endereços IP que o registro corresponde, autorizando o acesso apenas a partir desses endereços. Segundo [Sourceforge.net 2007], o PostgreSQL dispõe de eficientes métodos de autenticação, dentre os quais é possível destacar: por senha onde o principal método é o md5 (Message-Digest Algorithm 5) que suporta senhas criptografadas. As senhas, criptografadas ou não, ficam armazenadas em uma tabela do catálogo do sistema chamada pg_shadow. Kerberos implementa um protocolo de transporte de dados em rede, assegurando a comunicação dos dados mesmo em uma rede insegura. Além destes, a autenticação pode ser feita utilizando o nome do usuário e senha do sistema operacional, porém este método não é recomendado pois a segurança tornase dependente da oferecida pelo sistema operacional. A tabela do catálogo, pg_shadow, não pode ser vista por todos, justamente por conter as senhas dos usuários. Para possibilitar que esta tabela seja vista por todos sem que as senhas sejam exibidas, o PostgreSQL utiliza uma outra tabela do catálogo chamada pg_user, que é uma visão da pg_shadow, onde o campo senha é sempre mostrado com asteriscos ao invés dos caracteres reais da senha. Para aumentar a segurança dos dados que trafegam na rede é possível criptografar as comunicações entre o cliente e o servidor através do suporte nativo a conexões SSL (Secure Sockets Layer) através da instalação do OpenSSL no cliente e no servidor. Ainda é possível criar as conexões de clientes através de túneis SSH (Secure Shell). Ao tratar da segurança oferecida pelo PostgreSQL um dos principais aspectos é o mecanismo para criação de cópias de segurança e seu restabelecimento em caso de falhas, já que devido a importância das informações contidas nos bancos de dados não pode-se correr o risco de perdê-las por uma falha de hardware, queda de luz ou qualquer outro tipo de sinistro. O PostgreSQL possui duas poderosas formas de backup que contemplam as principais necessidades deste tipo de processo. São elas: O dump é um recurso que armazena diversos comandos em um arquivo de texto que podem reconstituir os dados do banco através de comandos SQL de criação de tabelas e todos os outros comandos necessários. Pode ser feito o dump de apenas alguns registros do banco ou de todos os registros contidos no cluster, o chamado dumpall. O point-in-time recovery é capaz de reconfigurar os dados para a data e hora informada pelo DBA (Data Base Administrator). Este recurso pode ser feito pela efetiva utilização do WAL como um sistema de armazenamento de arquivos [Lucas 2006]. Mesmo com esses recursos, pode ser feito backup através do sistema operacional, copiando o cluster dos dados. Todavia, esse recurso trás algumas restrições: o software deve estar fechado no momento da cópia do cluster; não é possível escolher as tabelas ou registros a serem copiados, isso quer dizer todos os
dados serão copiados, inclusive arquivos de controle do próprio banco que não se relacionam com as tabelas e registros; o processo é muito mais demorado e garante muito menos a integridade dos arquivos do que os anteriores [Neto 2006]. A cópia de segurança poit-in-time recovery somente é possível devido à existência do WAL. O WAL foi criado com o intuito de evitar perda de dados em uma eventual queda do sistema, pois trabalha com pontos de verificação que são gravados sempre que uma modificação é feita. Esse referencial teórico serviu de base para a condução do estudo de caso deste trabalho, permitindo ampliar o conhecimento acerca do PostgreSQL e, juntamente com os conceitos estudados na revisão teórica, construir um conjunto de referências que podem ser bastante úteis em projetos de escolha de softwares de banco de dados nas empresas. 4. Método de pesquisa O desenvolvimento da presente pesquisa utilizou a abordagem qualitativa por ser a mais adequada. Afinal, houve contribuição para a teoria e os entrevistadores precisaram estar presentes para compilar as informações. Essas características também influenciaram a escolha do método para coleta das informações, que neste caso foi utilizado o estudo de caso. A técnica utilizada foi a entrevista não-estruturada para que fosse possível conseguir os aspectos mais relevantes sobre o funcionamento do PostgreSQL em um ambiente de produção. A empresa onde foi realizado o estudo de caso oferece soluções de tecnologia e serviços para a indústria de meios de pagamento e para empresas que necessitem realizar trocas de informações de modo transacional. Ela foi criada há quatro anos e está distribuída em todo o país e em forte expansão na América Latina. Ela utiliza o conceito de rede aberta buscando oferecer ao ponto de venda o máximo de funcionalidades em um só produto. Atualmente a empresa captura mais de 50 milhões de transações multiserviços ao mês, entre elas, de cartões de crédito, de recarga de celular, de recarga de transporte, de consultas ao Serasa ou de seguros. Esta empresa foi utilizada porque faz uso do PostgreSQL para o armazenamento e gerenciamento das informações referentes ao monitoramento das transações. Sendo estas, um dos principais produtos da empresa. O sistema em estudo começou a ser utilizado durante o ano de 2007 com objetivo de criar uma base de conhecimento para uso interno, em relação à monitoração das transações. 5. Resultados e discussão dos dados coletados A versão do banco utilizada é a 8.2.4 instalada em um servidor com o sistema operacional Linux e a distribuição Slackware. A escolha desta plataforma e distribuição foi devido a sua estabilidade. No entanto, a opção pelo Sistema Operacional faz diferença na performance do PostgreSQL. A versão para Windows é mais lenta que a versão para Linux. Isto porque parte das funções do SGBD são reescritas para a versão Windows, o que ocasiona a diminuição da performance do banco. Porém, esta diferença
praticamente não é perceptível em aplicações de pequeno porte. Uma das práticas de modelagem que possibilitam ganhos de performance é a utilização de transações curtas, visando que nenhuma transação possa demorar tempo suficiente para deixar outras esperando sua finalização para que então possam ser iniciadas. O tipo de aplicação não foi claramente especificado, mas de acordo com os relatos dos administradores, pode-se concluir que é Online Transaction Processing (OLTP), por causa das inúmeras conexões e transações simultâneas que o banco recebe. Toda vez que é executado um update ou delete em alguma tabela, as linhas correspondentes ficam com status de versão anterior e excluída, respectivamente. Para evitar a sobrecarga do sistema e liberar efetivamente os espaços, o recurso chamado vacuum é utilizado. Existem variações para o recurso: auto_vacuum e full_vacuum. O auto_vacuum não é utilizado porque faz a limpeza quase que periodicamente, ocasionando a lentidão do sistema. Logo, o mais recomendável e o que é periodicamente utilizado é o full_vacum. Todavia este recurso também tem uma desvantagem: o sistema precisará estar parado. Similarmente ao que é implementado por bancos de dados proprietários, o PostgreSQL também implementa o recurso de memória exclusiva, onde é reservada uma quantidade de memória RAM específica para uso restrito do banco. Utilizando este recurso, há um aumento de performance bastante grande. No servidor PostgreSQL da empresa, há a reserva de 2 GB de memória para funcionamento do banco em uma máquina de 4 GB. O sistema de backup utilizado pela empresa é o dumpall, feito diariamente. Este processo foi escolhido em detrimento ao point-in-time-recovery pela maior eficiência, já que para recuperar o backup de uma determinada data utilizando o segundo método é mais lento do que utilizando o primeiro. O PostgreSQL não tem um limite máximo de conexões de usuários simultaneamente. O que existe é um limite de hardware do servidor em que o banco está instalado. Para cada usuário conectado, o servidor deve disponibilizar certa quantidade de memória, na empresa este valor é em torno de 16 MB de memória RAM. Para manter o sistema funcionando corretamente, sem lentidão, obedecendo às limitações do hardware do servidor e para manter a estabilidade do sistema deve-se estipular um número máximo de usuários simultâneos. Assim, verificou-se com os administradores do banco de dados como o PostgreSQL vem sendo utilizado na prática. Tendo mostrado um ótimo desempenho, segurança e atendendo as necessidades. Foi possível confirmar que o PostgreSQL é um SGBD robusto, seguro e também performático, disponibilizando uma extensa gama de funções que, em alguns casos, nem mesmo SGBDs proprietários oferecem. No entanto, para o aproveitamento destes recursos é preciso um conhecimento profundo por parte de quem o administra, tanto em relação às melhores práticas de modelagem de dados quanto ao controle de transações. Segundo os profissionais, sabendo utilizar em conjunto estes dois fatores, podem-se obter resultados tão bons quanto os obtidos pelos SGBDs proprietários mais utilizados, podendo superá-los em alguns casos. 6. Conclusão
Através desse relato, mostra-se o exemplo de uma empresa que apostou na qualidade, confiabilidade e robustez do PostgreSQL para depositar nele informações de controle interno e, através dele acabou encontrando uma solução eficiente e de baixo custo. Esse exemplo mostra como as empresas estão investindo no uso deste software, entendendo isso, como uma questão não mais de competitividade, mas de sobrevivência. Esse relato deve servir de exemplo para muitas empresas que se mantêm reticentes em relação ao uso de software livre, especialmente na área de banco de dados, entendendo que pelo fato desta área ser uma das mais importantes dentro das organizações, os softwares precisam ser pagos, pois somente assim podem garantir a sua qualidade. Enquanto que o correto é identificar a melhor solução para cada tipo de problema e que o banco de dados PostgreSQL é uma solução de qualidade, confiabilidade e economicamente viável, já que não há custo de licenciamento. Referências Bibligráficas Gonzaga, Jorge Luiz. (2007) Dominando o PostgreSQL. Rio de Janeiro: Editora Ciência Moderna Ltda. Lucas, Everton. (2006) PostgreSQL, Muito prazer! Visão geral das funcionalidades do PostgreSQL. Revista SQLMagazine. Edição nro 36. Neto, Álvaro Pereira. (2006) PostgreSQL Técnicas Avançadas Versões Open Source: Soluções para Desenvolvedores e Administradores de Banco de Dados. São Paulo: Editora Érica Ltda. Oliveira, Fernado Ike; Cruz, Rodrigo de Sá. PostgreSQL 8.2 O elefante em evolução. Revista SQL Magazine. Edição nro 41. Oliveira, Rodrigo Padula de. (2007) PostgreSQL 8.2 Win 32: Instalação passo a passo, http://www.postgresql.org.br/documenta%c3%a7%c3%a3o?action=attachfile&do= get&target=tutorial_win32.pdf, julho. Oslei, Daniel. (2007) Instalação do PostgreSQL 8.0. http://www.imasters.com.br/artigo/2917/postgresql/instalacao_do_postgresql_80/, julho. PostgreSQLBR: Comunidade Brasileira do PostgreSQL. (2007) Introdução e histórico. http://www.postgresql.org.br/introdu%c3%a7%c3%a3o_e_hist%c3%b3rico, julho. PostgreSQL Global Development Group. (2007) About, http://www.postgresql.org/about/, 2007. Sourceforge.net. (2007) Documentação do PostgreSQL 8.0.0, http://pgdocptbr.sourceforge.net/pg80/, julho. Tessati, Rogério. (2007) Controle de Concorrência no PostgreSQL. http://hermes.ucs.br/carvi/cent/dpei/rtessari/discip/sis0298/materiais/concorrencia2.pdf, agosto.