Update Brazilian FAQ.
authorBruce Momjian
Tue, 9 Oct 2007 03:21:00 +0000 (03:21 +0000)
committerBruce Momjian
Tue, 9 Oct 2007 03:21:00 +0000 (03:21 +0000)
Euler Taveira de Oliveira

doc/src/FAQ/FAQ_brazilian.html

index 6ada06fa238cfb552bfcd454cf00c981ad34b74c..c099a0010d5762dac8e506145a4a3e46435890d8 100644 (file)
@@ -10,7 +10,7 @@
   alink="#0000ff">
     

Perguntas Frequentes (FAQ) sobre PostgreSQL

 
-    

Última atualização: Sáb Out 14 19:08:19 EDT 2006

+    

Última atualização: Qui Set 27 02:14:24 EDT 2007

 
     

Mantenedor atual: Bruce Momjian (

@@ -43,6 +43,7 @@
      1.11) Como eu posso aprender SQL?
      1.12) Como posso submeter uma correção (patch) ou me juntar a equipe de desenvolvimento?
      1.13) Como é o PostgreSQL comparado a outros SGBDs?
+        1.14) O PostgreSQL gerenciará as mudanças de horário devido ao horário de verão em vários países?
      
 
      Perguntas sobre Clientes
@@ -57,7 +58,7 @@
     3.3) Como eu ajusto o servidor de banco de dados para obter uma performance melhor?
     3.4) Quais características de depuração estão disponíveis?
     3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
-   3.6) Qual é o processo de atualização do PostgreSQL?>
+    3.6) Qual é o processo de atualização do PostgreSQL?>
     3.7) Que tipo de hardware eu devo usar?
 
 
@@ -70,7 +71,7 @@
      4.6) Por que minhas consultas estão lentas? Por que elas não estão utilizando meus índices?
      4.7) Como eu vejo como o otimizador de consultas está avaliando minha consulta?
     4.8) Como eu faço buscas com expressões regulares e buscas com expressões regulares sem diferenciar mauúsculas de minúsculas? Como eu utilizo um índice para buscas sem distinguir maiúsculas de minúsculas?
-    4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso ordenar por um campo que é NULL ou não?
+    4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso concatenar possíveis NULLs? Como eu posso ordenar por um campo que é NULL ou não?
     4.10) Qual é a diferença entre os vários tipos de dado de caracteres?
    4.11.1) Como eu crio um campo serial/auto incremento?
     4.11.2) Como eu consigo o valor de um campo
@@ -88,7 +89,7 @@
    does not exist" ao acessar tabelas temporárias em funções PL/PgSQL?
     4.20) Quais soluções de replicação estão disponíveis?
    4.21) Por que os nomes de minhas tabelas e colunas não
-   são reconhecidos em minha consulta?
+   são reconhecidos em minha consulta? Por que as maiúsculas não são preservadas?
      
 
     
 
     1.1) O que é PostgreSQL? Como ele é pronunciado?
 
-   

PostgreSQL é pronunciado Post-Gres-Q-L, e é, às vezes, referido apenas como

-   Postgres. Um arquivo de áudio está disponível em
-   formato MP3 para
-   aqueles que gostariam de ouvir a pronúncia.

+       

PostgreSQL é pronunciado Post-Gres-Q-L, mas também pode ser referido apenas como Postgres principalmente em conversações.

+   (Para os curiosos que querem saber como se diz "PostgreSQL", um
+   arquivo de áudio está disponível).

 
    

O PostgreSQL é um sistema de banco de dados objeto-relacional que tem as

    características de sistemas de bancos de dados comerciais tradicionais com
    você precisa é se inscrever nas listas de discussão e participar das
    discussões. Veja a 
    FAQ do desenvolvedor para obter informações como se envolver com o
-   desenvolvimento do PostgreSQL.

+   desenvolvimento do Postgres.

 
     1.3) Qual é a licença do PostgreSQL?
 
    baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pré-empacotado está
    disponível em 
    http://pgfoundry.org/projects/pginstaller. Versões do Windows baseadas no MS-DOS
-   (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.

+   (Win95, Win98, WinMe) podem executar o Postgres utilizando o Cygwin.

 
    

Há também uma versão para o Novell Netware 6 em

    http://forge.novell.com
 
    

Via navegador web, utilize 

    http://www.postgresql.org/ftp/ e via ftp, utilize
-   PostgreSQL.org/pub/">
-   ftp://ftp.PostgreSQL.org/pub/.

+   postgresql.org/pub/">
+   ftp://ftp.postgresql.org/pub/.

 
 
     1.6) Qual é a última versão?
 
-    

A última versão do PostgreSQL é a versão 8.1.5.

+    

A última versão do PostgreSQL é a versão 8.2.5.

 
    

Nós planejamos lançar versões novas a cada ano com versões

    corretivas em alguns meses.

     

Visite o formulário que reporta bugs do PostgreSQL em 

     "http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug.

     

Verifique também o nosso ftp 

-    "ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub para
-    ver se há uma versão mais recente do PostgreSQL.

+    "ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub para
+    ver se há uma versão mais recente do Postgres.

 
    

Bugs submetidos utilizando o formulário ou informado a qualquer

    lista de discussão do PostgreSQL tipicamente gera uma das seguintes
    
        
  • Não é um bug e o porquê
  •     
  • É um bug conhecido e já está na lista de
  • -   AFAZERES (TODO)
    +   AFAZERES
        
  • O bug foi corrigido na versão atual
  •     
  • O bug foi corrigido mas não foi empacotado em um versão oficial
  •     
  • Um pedido foi feito para obter informações detalhadas:
  •         
          
    • Uma correção é criada e será incluída na próxima versão
    •     
    • O bug não pode ser corrigido imediatamente e é adicionado
    • -   a lista de AFAZERES (TODO)
      +   a lista de AFAZERES
          
          
          
          ou funcionalidades ausentes?
       
          

      O PostgreSQL suporta um subconjunto extendido do SQL:2003.

      -   Veja nossa lista de AFAZERES (TODO)
      +   Veja nossa lista de AFAZERES
          que contém bugs conhecidos, funcionalidades ausentes e planos futuros.

       
          

      Uma solicitação de funcionalidade geralmente resulta em uma das

          seguintes respostas:

          
        -   
      • A funcionalidade já está na lista de AFAZERES (TODO)
      • +   
      • A funcionalidade já está na lista de AFAZERES
      •     
      • A funcionalidade não é desejável porque:
      •         
                  
        • Ela duplica uma funcionalidade existente que já segue o
        •         
              
              
        • A nova funcionalidade é adicionada a lista de
        • -   AFAZERES (TODO)
          +   AFAZERES
              
           
              

          O PostgreSQL não utiliza sistema de acompanhamento de bugs porque

              nós achamos mais eficiente responder diretamente o e-mail e manter a
          -   lista de AFAZERES (TODO)
          +   lista de AFAZERES
              atualizada. Na prática, bugs não duram muito no programa; e bugs que afetam
              uma grande quantidade de usuários são corrigidos rapidamente. O único lugar
              para encontrar todas as mudanças, melhorias e correções em uma versão do
          -   PostgreSQL é ler as mensagens de log do
          +   Postgres é ler as mensagens de log do
              CVS. Até mesmo
              as notas de lançamento não listam todas as mudanças feitas no programa.

           
              

          O PostgreSQL inclui vasta documentação, incluindo um manual extenso,

              páginas de manuais (man pages) e alguns exemplos teste. Veja o diretório
              /doc. Você também pode pesquisar os manuais online em 
          -   "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs.
          +   "http://www.postgresql.org/docs">http://www.postgresql.org/docs.
              

           
              

          Há dois livros sobre PostgreSQL disponíveis online em 

              Há uma lista de livros sobre PostgreSQL disponíveis para compra. Um dos mais
              populares é o do Korry Douglas. Uma lista de análise sobre os livros pode ser
              encontrada em 
          -   "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php.
          +   "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php.
          +   Há também uma coleção de artigos técnicos sbore PostgreSQL em http://techdocs.postgresql.org/.

           
              

          O programa cliente de linha de comando psql tem alguns comandos \d para

              mostrar informações sobre tipos, operadores, funções, agregações, etc. - utilize \?
           
                 
          Suporte
           
          -      
          Nossas listas de discussão fornecem contato com um grupo de desenvolvedores e usuários para ajudar a resolver muitos problemas encontrados. Enquanto nós não podemos garantir o conserto, SGBDs comerciais nem sempre fornecem também. Com acesso direto aos desenvolvedores, a comunidade de usuários, manuais e o código fonte faz com que o suporte do PostgreSQL seja superior ao de outros SGBDs. Há suporte comercial por incidente disponíveis para aqueles que precisam de um. (Veja seção 1.7 da FAQ.)
          +      
          Nossas listas de discussão fornecem contato com um grupo de desenvolvedores e usuários para ajudar a resolver muitos problemas encontrados. Enquanto nós não podemos garantir o conserto, SGBDs comerciais nem sempre fornecem também. Com acesso direto aos desenvolvedores, a comunidade de usuários, manuais e o código fonte faz com que o suporte do PostgreSQL seja superior ao de outros SGBDs. Há suporte comercial por incidente disponíveis para aqueles que precisam de um. (Veja seção 1.7 da FAQ).
                 
                 
           
                 
               
           
          +       1.14) O PostgreSQL gerenciará mudanças no horário devido ao horário de verão em vários países?
          +
          +       

          Mudanças no horário de verão dos USA foram incluídas nas versões 8.0 .[4+] do PostgreSQL e em todas as versões grandes, i.e. 8.1. Mudanças no Canadá e Austrália Oeste foram incluídas na 8.0.[10+], 8.1.[6+] e em todas as versões grandes subsequentes. Versões do PostgreSQL anteriores a 8.0 utilizam o banco de dados de zona horária do sistema operacional para informações sobre horário de verão.

          +
               
           
               Perguntas sobre Clientes
           
              3.6) Qual é o processo de atualização do PostgreSQL?
           
          -   

          O time do PostgreSQL faz somente pequenas mudanças entre versões corretivas, então atualizar da versão 7.4.8 para 7.4.9 não requer uma exportação e uma importação; basta para o servidor de banco de dados, instalar os binários atualizados e reiniciar o servidor.

          -
          -   

          Todos os usuários devem atualizar para as versões corretivas mais recentes 

          -   assim que elas estiverem disponíveis. Enquanto cada atualização tem algum risco,
          -   versões corretivas do PostgreSQL são projetadas para corrigir somente bugs comuns
          -   com um risco mínimo. A comunidade considera não atualizar mais
          -   perigoso do que atualizar.

          -
          -   

          Versões novas (i.e. da 7.3 para 7.4) geralmente muda-se o formato interno das tabelas de sistema e dos arquivo de dados. Essas mudanças geralmente são complexas, então nós não mantemos compatibilidade para os arquivos de dados. Uma exportação/importação de um banco de dados é necessária para atualizações entre versões.

          +   

          Veja 

          +   href="http://www.postgresql.org/support/versioning">http://www.postgresql.org/support/versioning
          +   para discussão geral sobre atualizações e 
          +   "http://www.postgresql.org/docs/current/static/install-upgrading.html">
          +   http://www.postgresql.org/docs/current/static/install-upgrading.html
          +   para instruções específicas.

           
               3.7) Que tipo de hardware eu devo usar?
           
              melhor garantida por um índice de uma função de um hash MD5 de uma coluna longa, e
              indexação de texto longo permite a busca de palavras dentro da coluna.

           
          -    name="item4.5">4.5) Quanto espaço em disco é necessário para armazenar dados de um arquivo texto?
          +    id="item4.5">4.5) Quanto espaço em disco é necessário para armazenar dados de um arquivo texto?
           
               

          Um banco de dados PostgreSQL irá requerer até cinco vezes a quantidade de espaço requerida para armazenar dados em um arquivo texto.

           
          -    

          Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descrição em cada linha. Suponha que o tamanho médio da descrição é de vinte bytes. O arquivo terá 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que contém esses dados pode ser estimado em 5,6 MB:

          +    

          Como um exemplo, considere um arquivo com 100.000 linhas contendo um inteiro e uma descrição em cada linha. Suponha que o tamanho médio da descrição é de vinte bytes. O arquivo terá 2,8 MB. O tamanho do arquivo do banco de dados PostgreSQL que contém esses dados pode ser estimado em 5,2 MB:

           
          -    28 bytes: cada cabeçalho de registro (aproximadamente)
          +    24 bytes: cada cabeçalho de registro (aproximadamente)
               24 bytes: um campo int e um campo texto
              + 4 bytes: ponteiro na página para a tupla
              -------------------------------------------
          -    56 bytes por registro
          +    52 bytes por registro
           
          -   O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então:
          +   O tamanho de uma página de dados no Postgres é 8192 bytes (8 KB), então:
           
              8192 bytes por página
          -   ------------------------   =  146 registros por página do banco de dados (arredondado para baixo)
          -     56 bytes por registro
          +   ------------------------   =  158 registros por página do banco de dados (arredondado para baixo)
          +     52 bytes por registro
           
              100000 registros de dados
          -   ----------------------------  =  685 páginas do banco de dados (arredondado para cima)
          -      146 registros por página
          +   ----------------------------  =  633 páginas do banco de dados (arredondado para cima)
          +      158 registros por página
           
          -685 páginas do banco de dados * 8192 bytes por página  =  5.611.520 bytes (5,6 MB)
          +633 páginas do banco de dados * 8192 bytes por página  =  5.185.536 bytes (5,2 MB)
           
           
              

          Índices não requerem muito espaço, mas contém

              Para forçar uma letra maiúscula ou minúscula a ser armazenada na coluna, utilize
              uma restrição CHECK ou um gatilho.

           
          -   4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso ordenar por um campo que é NULL ou não?
          +   4.9) Em uma consulta, como eu detecto se um campo é NULL? Como eu posso concatenar possíveis NULLs? Como eu posso ordenar por um campo que é NULL ou não?
           
               

          Você testa a coluna com IS NULL e IS

               NOT NULL, como a seguir:

              WHERE col IS NULL;
           
           
          +   

          Para concatenar com possíveis NULLs, utilize COALESCE(), assim:

          +
          +   SELECT COALESCE(col1, '') || COALESCE(col2, '')
          +   FROM tab
          +
          +
              

          Para ordenar pelo status NULL, utilize os modificadores

              IS NULL e IS NOT NULL na sua cláusula
              ORDER BY. Coisas que são verdadeiro serão ordenadas acima
          @@ -802,7 +810,7 @@ comprimento
               novo_id = execute("SELECT currval('pessoa_id_seq')");
           
           
          -    name="4.11.3">4.11.3) currval() não lida com condição de corrida com outros usuários?
          +    id="item4.11.3">4.11.3) currval() não lida com condição de corrida com outros usuários?
           
               

          Não. currval() retorna o valor atual atribuido pela sua sessão, e não por todas as sessões.

           
          @@ -810,13 +818,12 @@ comprimento
           
               

          Para melhorar a concorrência, valores da sequência são atribuídos a transações correntes e não são travados até que a transação seja finalizada. Isso causa intervalos na numeração por causa de transações abortadas.

           
          -    4.16">4.16) O que é um OID? O que é um CTID?
          +    item4.12">4.12) O que é um OID? O que é um CTID?
           
          -   

          Cada registro que é criado no PostgreSQL recebe um OID único

          -   a menos que seja criado com WITHOUT OIDS.
          +   

          Se uma tabela é criada com WITH OIDS, cada registro recebe um OID único.

              OIDs são automaticamente atribuídos como inteiros de 4 bytes
              que são únicos ao longo de toda instalação. Contudo, eles são limitados em
          -   4 bilhões, e então os OIDs começam a ser duplicados. O PostgreSQL
          +   4 bilhões e, então, os OIDs começam a ser duplicados. O PostgreSQL
              utiliza OIDs para ligar as tabelas do sistema.

           
              

          Para numerar registros nas tabelas do usuários, é melhor utilizar

          @@ -852,7 +859,7 @@ comprimento
              CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
           
           
          -    23">4.23) Como eu faço uma junção externa (outer join)?
          +    16">4.16) Como eu faço uma junção externa (outer join)?
           
               

          PostgreSQL suporta junções externas utilizando a sintaxe padrão do SQL. Aqui temos dois exemplos:

           
          @@ -874,7 +881,7 @@ comprimento
              A palavra OUTER é opcional e é assumida nas
              junções LEFTRIGHT e FULL.
              Junções ordinárias são chamadas junções
          -   naturais (INNER).

          +   internas (INNER).

           
              4.17) Como eu faço consultas utilizando múltiplos bancos de dados?
           
          @@ -891,8 +898,8 @@ comprimento
               4.18) Como eu retorno múltiplos registros ou colunas de uma função?
           
              

          É fácil utilizando funções que retornam conjunto,

          -   techdocs.postgresql.org/guides/SetReturningFunctions">
          -   http://techdocs.postgresql.org/guides/SetReturningFunctions.

          +   www.postgresql.org/docs/techdocs.17">
          +   http://www.postgresql.org/docs/techdocs.17.

           
              4.19) Por que eu obtenho erros "relation with OID ######
              does not exist" ao acessar tabelas temporárias em funções PL/PgSQL?
          @@ -912,22 +919,22 @@ comprimento
              

          Replicação com múltiplos mestres permite que consultas leitura/escrita sejam

              enviadas para múltiplos computadores replicadores. Esta capacidade também tem
              um sério impacto na performance por causa da necessidade de sincronizar as mudanças
          -   entre os servidores. Pgcluster
          +   entre os servidores. PGCluster
              é a solução mais popular disponível livremente para PostgreSQL.

           
              

          Há também soluções de replicação comerciais e baseadas em hardware disponíveis

              que suportam uma variedade de modelos de replicação.

           
              4.21) Por que os nomes de minhas tabelas e colunas não
          -   são reconhecidos em minha consulta?
          +   são reconhecidos em minha consulta? Por que as maiúsculas não são preservadas?
           
          -   

          O caso mais comum é o uso de aspas ao redor dos nomes da tabela ou coluna

          +   

          A causa mais comum de nomes desconhecidos é o uso de aspas ao redor dos nomes da tabela ou coluna

              durante a criação da tabela. Ao utilizar aspas, nomes de tabela e coluna
              (chamados de identificadores) são armazenados 
          -   href="http://www.postgresql.org/docs/8.0/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
          +   href="http://www.postgresql.org/docs/current/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS">
              como especificado, significando que você deve utilizar aspas quando se
              referir aos nomes na consulta. Algumas interfaces, como pgAdmin,
          -   automaticamente coloca aspas nos identificadores durante a criação da tabela.
          +   automaticamente colocam aspas nos identificadores durante a criação da tabela.
              Então, para identificadores serem reconhecidos, você deve:
              
                
          • Evitar colocar aspas no identificador ao criar tabelas