diff options
author | Bruce Momjian | 2007-12-10 00:34:06 +0000 |
---|---|---|
committer | Bruce Momjian | 2007-12-10 00:34:06 +0000 |
commit | c5156c646b369b7c1bb81fc84651191d0913a27c (patch) | |
tree | dea3512ef04f2c45e12b0e868379d49a5564d674 | |
parent | a3f208539c5b564ed7c24bf087e01fffce4d796c (diff) |
Update Brazilian FAQ.
Euler Taveira de Oliveira
-rw-r--r-- | doc/FAQ_brazilian | 232 | ||||
-rw-r--r-- | doc/src/FAQ/FAQ_brazilian.html | 98 |
2 files changed, 166 insertions, 164 deletions
diff --git a/doc/FAQ_brazilian b/doc/FAQ_brazilian index 1409a9e59f4..758ad6a665d 100644 --- a/doc/FAQ_brazilian +++ b/doc/FAQ_brazilian @@ -1,7 +1,7 @@ Perguntas Frequentes (FAQ) sobre PostgreSQL - �ltima atualiza��o: S�b Out 14 19:08:19 EDT 2006 + �ltima atualiza��o: Sex Nov 16 10:53:50 EST 2007 Mantenedor atual: Bruce Momjian ([email protected]) @@ -18,7 +18,7 @@ Perguntas Gerais - 1.1) O que � PostgreSQL? Como ele � pronunciado? + 1.1) O que � PostgreSQL? Como ele � pronunciado? O que � Postgres? 1.2) Quem controla o PostgreSQL? 1.3) Qual � a licen�a do PostgreSQL? 1.4) Quais plataformas o PostgreSQL pode ser executado? @@ -33,6 +33,8 @@ 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 @@ -51,8 +53,8 @@ 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.7) Que tipo de - hardware eu devo usar? + 3.6) Qual � o processo de atualiza��o do PostgreSQL? + 3.7) Que tipo de hardware eu devo usar? Perguntas Operacionais @@ -74,7 +76,8 @@ 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? + 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 SERIAL? @@ -95,16 +98,16 @@ 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? + reconhecidos em minha consulta? Por que as mai�sculas n�o s�o + preservadas? _________________________________________________________________ Perguntas Gerais - 1.1) O que � PostgreSQL? Como ele � pronunciado? + 1.1) O que � PostgreSQL? Como ele � pronunciado? O que � Postgres? - 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. (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 @@ -116,8 +119,12 @@ desenvolvedores volunt�rios (na sua maioria) espalhados pelo mundo e que se comunicam via Internet. � um projeto da comunidade e n�o � controlado por nenhuma empresa. Para se envolver, veja a FAQ do - desenvolvedor em - http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html + desenvolvedor em http://www.postgresql.org/docs/faqs.FAQ_DEV.html + + Postgres � um apelido para o PostgreSQL amplamente utilizado. Era o + nome original do projeto em Berkeley e dentre os outros apelidos � o + preferido. Se voc� acha 'PostgreSQL' dif�cil de pronunciar, diga + apenas 'Postgres'. 1.2) Quem controla o PostgreSQL? @@ -189,11 +196,11 @@ 1.5) Onde eu posso conseguir o PostgreSQL? Via navegador web, utilize http://www.postgresql.org/ftp/ e via ftp, - utilize ftp://ftp.PostgreSQL.org/pub/. + utilize 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. @@ -220,14 +227,14 @@ Visite o formul�rio que reporta bugs do PostgreSQL em http://www.postgresql.org/support/submitbug. - Verifique tamb�m o nosso ftp ftp://ftp.PostgreSQL.org/pub para ver se + Verifique tamb�m o nosso ftp ftp://ftp.postgresql.org/pub para ver se h� uma vers�o mais recente do PostgreSQL. Bugs submetidos utilizando o formul�rio ou informado a qualquer lista de discuss�o do PostgreSQL tipicamente gera uma das seguintes respostas: * N�o � um bug e o porqu� - * � um bug conhecido e j� est� na lista de AFAZERES (TODO) + * � um bug conhecido e j� est� na lista de 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: @@ -239,48 +246,50 @@ * O bug � novo. O seguinte pode ocorrer: + 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) + lista de AFAZERES 1.9) Como eu posso saber quais s�o os bugs conhecidos ou funcionalidades ausentes? O PostgreSQL suporta um subconjunto extendido do SQL:2003. Veja nossa - lista de AFAZERES (TODO) que cont�m bugs conhecidos, funcionalidades - ausentes e planos futuros. + 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 padr�o SQL + A funcionalidade aumentar� a complexidade do c�digo mas adicionar� pouco benef�cio + A funcionalidade ser� insegura ou n�o-confi�vel - * A nova funcionalidade � adicionada a lista de AFAZERES (TODO) + * A nova funcionalidade � adicionada a lista de 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) 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 CVS. At� mesmo as notas de lan�amento n�o listam - todas as mudan�as feitas no programa. + 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 + CVS. At� mesmo as notas de lan�amento n�o listam todas as mudan�as + feitas no programa. 1.10) Que documenta��o est� dispon�vel? 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. H� dois livros sobre PostgreSQL dispon�veis online em http://www.postgresql.org/docs/books/awbook.html e http://www.commandprompt.com/ppbook/. 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://www.postgresql.org/docs/books/. H� tamb�m uma cole��o de + artigos t�cnicos sbore PostgreSQL em + http://www.postgresql.org/docs/techdocs/. O programa cliente de linha de comando psql tem alguns comandos \d para mostrar informa��es sobre tipos, operadores, fun��es, agrega��es, @@ -291,11 +300,9 @@ 1.11) Como eu posso aprender SQL? Primeiro, considere os livros espec�ficos sobre PostgreSQL mencionados - acima. Outro � o "Teach Yourself SQL in 21 Days, Second Edition" e - http://members.tripod.com/er4ebus/sql/index.htm. Muitos de nossos - usu�rios gostam do The Practical SQL Handbook, Bowman, Judith S., et - al., Addison-Wesley. Outros do The Complete Reference SQL, Groff et - al., McGraw-Hill. + acima. Muitos de nossos usu�rios gostam do The Practical SQL Handbook, + Bowman, Judith S., et al., Addison-Wesley. Outros do The Complete + Reference SQL, Groff et al., McGraw-Hill. H� tamb�m bons tutoriais dispon�veis online: * http://www.intermedia.net/support/sql/sqltut.shtm @@ -347,13 +354,23 @@ 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.) + se��o 1.7 da FAQ). Pre�o N�s somos livres para uso dele tanto comercial quanto n�o comercial. Voc� pode adicionar nosso c�digo ao seu produto sem limita��es, exceto aquelas descritas na nossa licen�a BSD mencionada acima. + + 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 @@ -367,8 +384,7 @@ Algumas linguagens de programa��o como PHP incluem uma interface para PostgreSQL. Interfaces para linguagens como Perl, TCL, Python e muitas - outras est�o dispon�veis em http://gborg.postgresql.org na se��o de - Drivers/Interfaces ou via busca na Internet. + outras est�o dispon�veis em http://www.pgfoundry.org. 2.2) Quais ferramentas est�o dispon�veis para utilizar o PostgreSQL com p�ginas Web? @@ -450,29 +466,17 @@ 3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar? - Voc� atingiu o limite padr�o que � de 100 sess�es. Voc� precisa - aumentar o limite do postmaster, que diz quantos processos servidor + Voc� atingiu o limite padr�o de 100 sess�es. Voc� precisa aumentar o + limite do servidor PostgreSQL, que diz quantos processos servidor concorrentes ele pode iniciar, alterando o valor max_connections no postgresql.conf e reiniciando o postmaster. 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 http://www.postgresql.org/support/versioning para discuss�o geral + sobre atualiza��es e + http://www.postgresql.org/docs/current/static/install-upgrading.html + para instru��es espec�ficas. 3.7) Que tipo de hardware eu devo usar? @@ -585,24 +589,24 @@ 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: - 28 bytes: cada cabe�alho de registro (aproximadamente) + estimado em 5,2 MB: + 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: 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 (arredondadopara cima) - 146 registros por p�gina + ---------------------------- = 633 p�ginas do banco de dados (arredondadopara cima) + 158 registros por p�gina -685 p�ginas do banco de dados * 8192 bytes por p�gina = 5.611.520 bytes (5,6MB) +633 p�ginas do banco de dados * 8192 bytes por p�gina = 5.185.536 bytes (5,2MB) �ndices n�o requerem muito espa�o, mas cont�m dados que foram indexados, ent�o eles podem ocupar algum espa�o. @@ -650,10 +654,12 @@ * Busca que n�o diferenciam mai�sculas de min�sculas tais como ILIKE e ~* n�o utilizam �ndices. Em vez disso, utilize �ndice de express�o, que � descrito na se��o 4.8. - * O idioma padr��o C deve ser usando durante o initdb porque n�o � + * O idioma padr�o C deve ser usando durante o initdb porque n�o � poss�vel saber o pr�ximo caracter em idiomas que n�o sejam o C. Voc� pode criar um �ndice especial text_pattern_ops para tais - casos que funcionam somente para indexa��o com LIKE. + casos que funcionam somente para indexa��o com LIKE. Tamb�m � + poss�vel utilizar indexa��o de busca textual para buscas por + palavras. Em vers�es anteriores a 8.0, �ndices frequentemente n�o podem ser utilizados a menos que os tipos de dados correspondam aos tipos de @@ -690,13 +696,18 @@ 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? + 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: SELECT * FROM tab 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 das coisas que s�o falso, ent�o a consulta a seguir @@ -754,29 +765,22 @@ nome TEXT ); - Veja a p�gina sobre create_sequence no manual para obter informa��es - adicionais sobre sequ�ncias. + Sequ�ncias automaticamente criadas s�o nomeadas como + <tabela>_<colunaserial>_seq, onde tabela e colunaserial s�o os nomes + da tabela e da coluna serial, respectivamente. Veja a p�gina sobre + create_sequence no manual para obter informa��es adicionais sobre + sequ�ncias. 4.11.2) Como eu consigo o valor de um campo SERIAL? - Uma abordagem � obter o pr�ximo valor SERIAL de uma sequ�ncia com a - fun��o nextval() antes de inserir e ent�o inserir com o valor - explicitamente. Utilizando o exemplo da tabela em 4.11.1, um exemplo - em pseudo-linguagem se pareceria com isto: - novo_id = execute("SELECT nextval('pessoa_id_seq')"); - execute("INSERT INTO pessoa (id, nome) VALUES (novo_id, 'Blaise Pascal')"); - - Voc� poderia ent�o ter tamb�m o novo valor armazenado em novo_id para - utilizar em outras consultas (i.e., como uma chave estrangeira da - tabela pessoa). Note que o nome da SEQUENCE criada automaticamente - ser� <tabela>_<coluna>_seq, onde tabela e coluna s�o os nomes da - tabela e da coluna SERIAL, respectivamente. - - Alternativamente, voc� poderia obter o valor SERIAL atribu�do com a - fun��o currval() depois de t�-lo inserido por padr�o, i.e., - execute("INSERT INTO pessoa (nome) VALUES ('Blaise Pascal')"); - novo_id = execute("SELECT currval('pessoa_id_seq')"); + A maneira mais simples de obter o pr�ximo valor SERIAL de uma + sequ�ncia � com RETURNING. Utilizando o exemplo da tabela em 4.11.1, + ele ficaria assim: + INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id; + Voc� tamb�m pode chamar nextval() e utilizar o valor no INSERT ou + chamar currval() ap�s o INSERT. + 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 @@ -791,14 +795,13 @@ finalizada. Isso causa intervalos na numera��o por causa de transa��es abortadas. - 4.16) O que � um OID? O que � um CTID? + 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. 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 utiliza OIDs para ligar as tabelas do - sistema. + 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 utiliza OIDs para ligar as tabelas do sistema. Para numerar registros nas tabelas do usu�rios, � melhor utilizar SERIAL ao inv�s de OIDs porque sequ�ncias SERIAL s�o �nicas somente em @@ -814,7 +817,7 @@ Voc� provavelmente est� sem mem�ria virtual no seu sistema, ou o seu n�cleo (kernel) tem um limite baixo para certos recursos. Tente isto - antes de iniciar o postmaster: + antes de iniciar o servidor PostgreSQL: ulimit -d 262144 limit datasize 256m @@ -834,7 +837,7 @@ Utilize CURRENT_TIMESTAMP: CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP); - 4.23) Como eu fa�o uma jun��o externa (outer join)? + 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: @@ -852,7 +855,7 @@ retornaria os registros combinados mais todos os registros n�o combinados de t1 e t2. A palavra OUTER � opcional e � assumida nas jun��es LEFT, RIGHT 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? @@ -869,18 +872,20 @@ 4.18) Como eu retorno m�ltiplos registros ou colunas de uma fun��o? � f�cil utilizando fun��es que retornam conjunto, - http://techdocs.postgresql.org/guides/SetReturningFunctions. + 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? - PL/PgSQL armazena o conte�do da fun��o, e o efeito indesejado � que se - uma fun��o PL/PgSQL acessa uma tabela tempor�ria, e aquela tabela � - removida e criada novamente, e a fun��o � chamada novamente, a fun��o - ir� falhar porque o conte�do armazenado da fun��o ainda apontar� para - a tabela tempor�ria antiga. A solu��o � utilizar o EXECUTE para acesso - a tabelas tempor�rias no PL/PgSQL. Isto ir� fazer com que a consulta - seja avaliada toda vez. + Em vers�es do PostgreSQL < 8.3, PL/PgSQL armazena o conte�do da + fun��o, e o efeito indesejado � que se uma fun��o PL/PgSQL acessa uma + tabela tempor�ria, e aquela tabela � removida e criada novamente, e a + fun��o � chamada novamente, a fun��o ir� falhar porque o conte�do + armazenado da fun��o ainda apontar� para a tabela tempor�ria antiga. A + solu��o � utilizar o EXECUTE para acesso a tabelas tempor�rias no + PL/PgSQL. Isto ir� fazer com que a consulta seja avaliada toda vez. + + Este problema n�o ocorre no PostgreSQL 8.3 ou superior. 4.20) Quais solu��es de replica��o est�o dispon�veis? @@ -895,22 +900,23 @@ 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 + necessidade de sincronizar as mudan�as 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? - - O caso mais comum � 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 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. Ent�o, para identificadores serem reconhecidos, voc� deve: + minha consulta? Por que as mai�sculas n�o s�o preservadas? + + 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 como especificado, significando que voc� deve utilizar + aspas quando se referir aos nomes na consulta. Algumas interfaces, + como pgAdmin, 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 * Utilizar somente caracteres min�sculos em identificadores * Colocar aspas em identificadores ao referenci�-los nas consultas diff --git a/doc/src/FAQ/FAQ_brazilian.html b/doc/src/FAQ/FAQ_brazilian.html index c099a0010d5..e56e83464f2 100644 --- a/doc/src/FAQ/FAQ_brazilian.html +++ b/doc/src/FAQ/FAQ_brazilian.html @@ -10,7 +10,7 @@ alink="#0000ff"> <H1>Perguntas Frequentes (FAQ) sobre PostgreSQL</H1> - <P>Última atualização: Qui Set 27 02:14:24 EDT 2007</P> + <P>Última atualização: Sex Nov 16 10:53:50 EST 2007</P> <P>Mantenedor atual: Bruce Momjian (<A href= "mailto:[email protected]">[email protected]</A>) @@ -30,7 +30,8 @@ <HR> <H2 align="center">Perguntas Gerais</H2> - <A href="#item1.1">1.1</A>) O que é PostgreSQL? Como ele é pronunciado?<BR> + <A href="#item1.1">1.1</A>) O que é PostgreSQL? Como ele é pronunciado? + O que é Postgres?<BR> <A href="#item1.2">1.2</A>) Quem controla o PostgreSQL?<BR> <A href="#item1.3">1.3</A>) Qual é a licença do PostgreSQL?<BR> <A href="#item1.4">1.4</A>) Quais plataformas o PostgreSQL pode ser executado?<BR> @@ -96,9 +97,9 @@ <H2 align="center">Perguntas Gerais</H2> - <H3 id="item1.1">1.1) O que é PostgreSQL? Como ele é pronunciado?</H3> + <H3 id="item1.1">1.1) O que é PostgreSQL? Como ele é pronunciado? O que é Postgres?</H3> - <P>PostgreSQL é pronunciado <I>Post-Gres-Q-L</I>, mas também pode ser referido apenas como <I>Postgres</I> principalmente em conversações. + <P>PostgreSQL é pronunciado <I>Post-Gres-Q-L</I>. (Para os curiosos que querem saber como se diz "PostgreSQL", um <a href="http://www.postgresql.org/files/postgresql.mp3">arquivo de áudio</a> está disponível).</P> @@ -111,10 +112,14 @@ voluntários (na sua maioria) espalhados pelo mundo e que se comunicam via Internet. É um projeto da comunidade e não é controlado por nenhuma empresa. Para se envolver, veja a FAQ do desenvolvedor em <A href= - "http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html"> - http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</A> + "http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> + http://www.postgresql.org/docs/faqs.FAQ_DEV.html</A> </P> + <P>Postgres é um apelido para o PostgreSQL amplamente utilizado. Era o nome original do + projeto em Berkeley e dentre os outros apelidos é o preferido. Se você acha + 'PostgreSQL' difícil de pronunciar, diga apenas 'Postgres'.</P> + <H3 id="item1.2">1.2) Quem controla o PostgreSQL?<BR></H3> <P>Se você está procurando por um mantenedor, comitê central ou empresa @@ -125,7 +130,7 @@ você precisa é se inscrever nas listas de discussão e participar das discussões. Veja a <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html"> FAQ do desenvolvedor</A> para obter informações como se envolver com o - desenvolvimento do Postgres.</P> + desenvolvimento do PostgreSQL.</P> <H3 id="item1.3">1.3) Qual é a licença do PostgreSQL?</H3> @@ -169,7 +174,7 @@ baseados no NT tais como Win200 SP4, WinXP e Win2003. Um instalador pré-empacotado está disponível em <a href= "http://pgfoundry.org/projects/pginstaller"> http://pgfoundry.org/projects/pginstaller</a>. Versões do Windows baseadas no MS-DOS - (Win95, Win98, WinMe) podem executar o Postgres utilizando o Cygwin.</P> + (Win95, Win98, WinMe) podem executar o PostgreSQL utilizando o Cygwin.</P> <p>Há também uma versão para o Novell Netware 6 em <a href="http://forge.novell.com">http://forge.novell.com</a> @@ -212,7 +217,7 @@ "http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</A>.</P> <P>Verifique também o nosso ftp <A href= "ftp://ftp.postgresql.org/pub">ftp://ftp.postgresql.org/pub</A> para - ver se há uma versão mais recente do Postgres.</P> + ver se há uma versão mais recente do PostgreSQL.</P> <P>Bugs submetidos utilizando o formulário ou informado a qualquer lista de discussão do PostgreSQL tipicamente gera uma das seguintes @@ -271,7 +276,7 @@ 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 - Postgres é ler as mensagens de log do + PostgreSQL é ler as mensagens de log do <a href="http://www.postgresql.org/developer/sourcecode/">CVS</a>. Até mesmo as notas de lançamento não listam todas as mudanças feitas no programa.</P> @@ -290,8 +295,8 @@ 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 <A href= - "http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</A>. - Há também uma coleção de artigos técnicos sbore PostgreSQL em <A href="http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P> + "http://www.postgresql.org/docs/books/">http://www.postgresql.org/docs/books/</A>. + Há também uma coleção de artigos técnicos sbore PostgreSQL em <A href="http://www.postgresql.org/docs/techdocs/">http://www.postgresql.org/docs/techdocs/</A>.</P> <P>O programa cliente de linha de comando <I>psql</I> tem alguns comandos \d para mostrar informações sobre tipos, operadores, funções, agregações, etc. - utilize \? @@ -302,9 +307,7 @@ <H3 id="item1.11">1.11) Como eu posso aprender <SMALL>SQL</SMALL>?</H3> <P>Primeiro, considere os livros específicos sobre PostgreSQL mencionados - acima. Outro é o "Teach Yourself SQL in 21 Days, Second Edition" e <A href= - "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>. - Muitos de nossos usuários gostam do <I>The Practical SQL Handbook</I>, + acima. Muitos de nossos usuários gostam do <I>The Practical SQL Handbook</I>, Bowman, Judith S., et al., Addison-Wesley. Outros do <I>The Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P> @@ -382,8 +385,7 @@ <P>Algumas linguagens de programação como <SMALL>PHP</SMALL> incluem uma interface para PostgreSQL. Interfaces para linguagens como Perl, <SMALL>TCL</SMALL>, Python e muitas outras estão disponíveis em - <a href="http://gborg.postgresql.org">http://gborg.postgresql.org</A> - na seção de <I>Drivers/Interfaces</I> ou via busca na Internet. + <a href="http://www.pgfoundry.org">http://www.pgfoundry.org</A>. </P> <H3 id="item2.2">2.2) Quais ferramentas estão disponíveis para utilizar o PostgreSQL com páginas Web?</H3> @@ -447,7 +449,7 @@ <DD>Um grande número de configurações que afetam a performance. Para obter detalhes adicionais, veja <a href= - "http://www.postgresql.org/docs/current/static/runtime.html"> + "http://www.postgresql.org/docs/current/static/runtime-config.html"> Administration Guide/Server Run-time Environment/Run-time Configuration</a> para listagem completa, e para comentários veja <a href= @@ -479,8 +481,8 @@ <H3 id="item3.5">3.5) Por que eu recebo <I>"Sorry, too many clients"</I> quando eu tento conectar?</H3> - <P>Você atingiu o limite padrão que é de 100 sessões. Você - precisa aumentar o limite do <I>postmaster</I>, que diz + <P>Você atingiu o limite padrão de 100 sessões. Você + precisa aumentar o limite do servidor PostgreSQL, que diz quantos processos servidor concorrentes ele pode iniciar, alterando o valor <I>max_connections</I> no <I>postgresql.conf</I> e reiniciando o <I>postmaster</I>.</P> @@ -603,7 +605,7 @@ ------------------------------------------- 52 bytes por registro - O tamanho de uma página de dados no Postgres é 8192 bytes (8 KB), então: + O tamanho de uma página de dados no PostgreSQL é 8192 bytes (8 KB), então: 8192 bytes por página ------------------------ = 158 registros por página do banco de dados (arredondado para baixo) @@ -664,10 +666,11 @@ <LI>Busca que não diferenciam maiúsculas de minúsculas tais como <SMALL>ILIKE</SMALL> e <I>~*</I> não utilizam índices. Em vez disso, utilize índice de expressão, que é descrito na seção <a href="#item4.8">4.8</a>.</LI> - <LI>O idioma padrção <I>C</I> deve ser usando durante o <i>initdb</i> + <LI>O idioma padrão <I>C</I> deve ser usando durante o <i>initdb</i> porque não é possível saber o próximo caracter em idiomas que não sejam o C. Você pode criar um índice especial <CODE>text_pattern_ops</CODE> para tais casos - que funcionam somente para indexação com <SMALL>LIKE</SMALL>. + que funcionam somente para indexação com <SMALL>LIKE</SMALL>. Também é + possível utilizar indexação de busca textual para buscas por palavras. </LI> </UL> @@ -778,38 +781,28 @@ comprimento</TD></TR> ); </PRE> - Veja a página sobre <I>create_sequence</I> no manual para - obter informações adicionais sobre sequências. + <P>Sequências automaticamente criadas são nomeadas como + <<i>tabela</i>>_<<i>colunaserial</i>>_<i>seq</i>, onde + <i>tabela</i> e <i>colunaserial</i> são os nomes da tabela e + da coluna serial, respectivamente. Veja a página sobre + <I>create_sequence</I> no manual para obter informações + adicionais sobre sequências. <H3 id="item4.11.2">4.11.2) Como eu consigo o valor de um campo <SMALL>SERIAL</SMALL>?</H3> - <P>Uma abordagem é obter o próximo valor <SMALL>SERIAL</SMALL> - de uma sequência com a função <I>nextval()</I> - <I>antes</I> de inserir e então inserir com o valor explicitamente. Utilizando o - exemplo da tabela em <A href="#item4.11.1">4.11.1</A>, um exemplo em - pseudo-linguagem se pareceria com isto:</P> -<PRE> - novo_id = execute("SELECT nextval('pessoa_id_seq')"); - execute("INSERT INTO pessoa (id, nome) VALUES (novo_id, 'Blaise Pascal')"); -</PRE> + <P>A maneira mais simples de obter o próximo valor <SMALL>SERIAL</SMALL> + de uma sequência é com <SMALL>RETURNING</SMALL>. Utilizando o + exemplo da tabela em <A href="#item4.11.1">4.11.1</A>, ele ficaria assim: - Você poderia então ter também o novo valor armazenado em - <CODE>novo_id</CODE> para utilizar em outras consultas (i.e., como uma chave - estrangeira da tabela <CODE>pessoa</CODE>). Note que o nome da - <SMALL>SEQUENCE</SMALL> criada automaticamente será - <<I>tabela</I>>_<<I>coluna</I>>_<I>seq</I>, onde - <I>tabela</I> e <I>coluna</I> são os nomes da tabela - e da coluna <SMALL>SERIAL</SMALL>, respectivamente. - - <P>Alternativamente, você poderia obter o valor <SMALL>SERIAL</SMALL> - atribuído com a função <I>currval()</I> <I>depois</I> - de tê-lo inserido por padrão, i.e.,</P> <PRE> - execute("INSERT INTO pessoa (nome) VALUES ('Blaise Pascal')"); - novo_id = execute("SELECT currval('pessoa_id_seq')"); + INSERT INTO pessoa (nome) VALUES ('Blaise Pascal') RETURNING id; </PRE> + Você também pode chamar <I>nextval()</I> e utilizar o valor no + <SMALL>INSERT</SMALL> ou chamar <I>currval()</I> <I>após</I> o + <SMALL>INSERT</SMALL>. + <H3 id="item4.11.3">4.11.3) <I>currval()</I> não lida com condição de corrida com outros usuários?</H3> <P>Não. <I>currval()</I> retorna o valor atual atribuido pela sua sessão, e não por todas as sessões.</P> @@ -840,7 +833,7 @@ comprimento</TD></TR> <H3 id="item4.13">4.13) Por que eu recebo o erro <I>"ERROR: Memory exhausted in AllocSetAlloc()"</I>?</H3> - <P>Você provavelmente está sem memória virtual no seu sistema, ou o seu núcleo (kernel) tem um limite baixo para certos recursos. Tente isto antes de iniciar o <I>postmaster</I>:</P> + <P>Você provavelmente está sem memória virtual no seu sistema, ou o seu núcleo (kernel) tem um limite baixo para certos recursos. Tente isto antes de iniciar o servidor PostgreSQL:</P> <PRE> ulimit -d 262144 limit datasize 256m @@ -904,7 +897,9 @@ comprimento</TD></TR> <H3 id="item4.19">4.19) Por que eu obtenho erros "relation with OID ###### does not exist" ao acessar tabelas temporárias em funções PL/PgSQL?</H3> - <P>PL/PgSQL armazena o conteúdo da função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma tabela temporária, e aquela tabela é removida e criada novamente, e a função é chamada novamente, a função irá falhar porque o conteúdo armazenado da função ainda apontará para a tabela temporária antiga. A solução é utilizar o <SMALL>EXECUTE</SMALL> para acesso a tabelas temporárias no PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.</P> + <P>Em versões do PostgreSQL < 8.3, PL/PgSQL armazena o conteúdo da função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma tabela temporária, e aquela tabela é removida e criada novamente, e a função é chamada novamente, a função irá falhar porque o conteúdo armazenado da função ainda apontará para a tabela temporária antiga. A solução é utilizar o <SMALL>EXECUTE</SMALL> para acesso a tabelas temporárias no PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.</P> + + <P>Este problema não ocorre no PostgreSQL 8.3 ou superior.</P> <H3 id="item4.20">4.20) Quais soluções de replicação estão disponíveis?</H3> @@ -914,7 +909,7 @@ comprimento</TD></TR> <P>Replicação mestre/escravo permite que um mestre receba consultas de leitura e escrita, enquanto os escravos só podem aceitar leitura/consultas <SMALL>SELECT</SMALL>. A solução mais popular de replicação mestre-escravo para PostgreSQL disponível livremente - é <A href="http://gborg.postgresql.org/project/slony1/projdisplay.php">Slony-I</A>.</P> + é <A href="http://main.slony.info">Slony-I</A>.</P> <P>Replicação com múltiplos mestres permite que consultas leitura/escrita sejam enviadas para múltiplos computadores replicadores. Esta capacidade também tem @@ -931,7 +926,7 @@ comprimento</TD></TR> <P>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 <a - href="http://www.postgresql.org/docs/current/static/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS"> + href="http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS"> como especificado</a>, significando que você deve utilizar aspas quando se referir aos nomes na consulta. Algumas interfaces, como pgAdmin, automaticamente colocam aspas nos identificadores durante a criação da tabela. @@ -941,6 +936,7 @@ comprimento</TD></TR> <LI>Utilizar somente caracteres minúsculos em identificadores</LI> <LI>Colocar aspas em identificadores ao referenciá-los nas consultas</LI> </UL> + </BODY> </HTML> |