aboutsummaryrefslogtreecommitdiff
path: root/doc/FAQ_brazilian
blob: bce4406eefffc46da145dced056b7db291a4bfba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
                  Perguntas Frequentes (FAQ) sobre PostgreSQL
                                       
   �ltima atualiza��o: Sex Nov 16 10:53:50 EST 2007
   
   Mantenedor atual: Bruce Momjian (bruce@momjian.us)
   
   Traduzido por: Euler Taveira de Oliveira (euler@timbira.com)
   
   A vers�o mais recente desse documento pode ser vista em
   http://www.postgresql.org/files/documentation/faqs/FAQ.html (EN).
   http://www.postgresql.org/files/documentation/faqs/FAQ_brazilian.html
   (pt_BR).
   
   Perguntas sobre plataformas espec�ficas s�o respondidas em
   http://www.postgresql.org/docs/faq/.
     _________________________________________________________________
   
                              Perguntas Gerais
                                      
   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?
   1.5) Onde eu posso conseguir o PostgreSQL?
   1.6) Qual � a �ltima vers�o?
   1.7) Onde eu posso conseguir suporte?
   1.8) Como eu posso submeter um relato de um bug?
   1.9) Como eu posso saber quais s�o os bugs conhecidos ou
   caracter�sticas ausentes?
   1.10) Que documenta��o est� dispon�vel?
   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
                                      
   2.1) Quais interfaces est�o dispon�veis para PostgreSQL?
   2.2) Quais ferramentas est�o dispon�veis para utilizar o PostgreSQL
   com p�ginas Web?
   2.3) O PostgreSQL tem interfaces gr�ficas para interagir com usu�rio?
   
                         Perguntas Administrativas
                                      
   3.1) Como eu instalo o PostgreSQL em um local diferente de
   /usr/local/pgsql?
   3.2) Como eu controlo conex�es de outras m�quinas?
   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.7) Que tipo de hardware eu devo usar?
   
                           Perguntas Operacionais
                                      
   4.1) Como eu fa�o um SELECT somente dos primeiros registros de uma
   consulta? Um registro rand�mico?
   4.2) Como eu descubro quais tabelas, �ndices, bancos de dados e
   usu�rios est�o definidos? Como eu vejo as consultas utilizadas pelo
   psql para mostr�-los?
   4.3) Como voc� muda o tipo de dado de uma coluna?
   4.4) Qual � o tamanho m�ximo de um registro, uma tabela e um banco de
   dados?
   4.5) Quanto espa�o em disco � necess�rio para armazenar dados de um
   arquivo texto?
   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 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?
   4.11.3) currval() n�o lida com condi��o de corrida com outros
   usu�rios?
   4.11.4) Por que os n�meros da minha sequ�ncia n�o s�o reutilizados
   quando uma transa��o � abortada? Por que h� intervalos nos n�meros da
   minha sequ�ncia/coluna SERIAL?
   4.12) O que � um OID? O que � um CTID?
   4.13) Por que eu recebo o erro "ERROR: Memory exhausted in
   AllocSetAlloc()"?
   4.14) Como eu informo qual vers�o do PostgreSQL eu estou utilizando?
   4.15) Como eu crio uma coluna que conter� por padr�o a hora atual?
   4.16) Como eu fa�o uma jun��o externa (outer join)?
   4.17) Como eu fa�o consultas utilizando m�ltiplos bancos de dados?
   4.18) Como eu retorno m�ltiplos registros ou colunas de uma fun��o?
   4.19) Por que eu obtenho erros "relation with OID ###### 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? Por que as mai�sculas n�o s�o
   preservadas?
     _________________________________________________________________
   
                              Perguntas Gerais
                                      
  1.1) O que � PostgreSQL? Como ele � pronunciado? O que � Postgres?
  
   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
   tradicionais com melhoramentos encontrados nos sistemas SGBDs de
   pr�xima gera��o. PostgreSQL � livre e o c�digo-fonte completo est�
   dispon�vel.
   
   O desenvolvimento do PostgreSQL � feito por um grupo de
   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/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?
  
   Se voc� est� procurando por um mantenedor, comit� central ou empresa
   controladora do PostgreSQL, desista --- n�o h� um(a). N�s temos um
   comit� core e committers CVS, mas estes grupos s�o mais para quest�es
   administrativas do que controle. O projeto � direcionado pela
   comunidade de desenvolvedores e usu�rios, que qualquer um pode se
   juntar. Tudo o que 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.
   
  1.3) Qual � a licen�a do PostgreSQL?
  
   O PostgreSQL � distribu�do sob a licen�a BSD cl�ssica. Basicamente,
   ela permite que usu�rios fa�am qualquer coisa com o c�digo, incluindo
   revender os bin�rios sem o c�digo-fonte. A �nica restri��o � que voc�
   n�o nos responsabilize legalmente por problemas com o programa de
   computador. H� tamb�m a exig�ncia de que esta licen�a apare�a em todas
   as c�pias do programa de computador. Aqui est� a licen�a BSD que
   usamos atualmente:
   
   PostgreSQL est� sujeito a seguinte licen�a:
   
   PostgreSQL Data Base Management System
   
   Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
   Portions Copyright (c) 1994-1996 Regents of the University of
   California
   
   Permission to use, copy, modify, and distribute this software and its
   documentation for any purpose, without fee, and without a written
   agreement is hereby granted, provided that the above copyright notice
   and this paragraph and the following two paragraphs appear in all
   copies.
   
   IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
   FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
   INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
   ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
   PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
   CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
   UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
   
  1.4) Quais plataformas o PostgreSQL pode ser executado?
  
   Em geral, qualquer plataforma moderna compat�vel com Unix deve ser
   capaz de executar o PostgreSQL. As plataformas que foram testadas
   antes do lan�amento de uma vers�o s�o listadas nas instru��es de
   instala��o.
   
   O PostgreSQL tamb�m executa nativamente nos sistemas operacionais
   Microsoft Windows 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.
   
   H� tamb�m uma vers�o para o Novell Netware 6 em
   http://forge.novell.com e uma vers�o para OS/2 (eComStation) em
   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
   SQL&stype=all&sort=type&dir=%2F.
   
  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/.
   
  1.6) Qual � a �ltima vers�o?
  
   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.
   
  1.7) Onde eu posso conseguir suporte?
  
   A comunidade do PostgreSQL fornece assist�ncia a muitos de seus
   usu�rios via e-mail. O principal s�tio web para inscri��o nas listas
   de e-mail � http://www.postgresql.org/community/lists/. As listas
   general e bugs s�o um bom lugar para in�cio.
   
   O principal canal de IRC � o #postgresql na Freenode
   (irc.freenode.net). Para se conectar voc� pode utilizar o comando Unix
   irc -c '#postgresql' "$USER" irc.freenode.net ou utilizar qualquer
   outro cliente de IRC. Um canal hisp�nico (#postgresql-es) e um franc�s
   (#postgresqlfr) tamb�m existem na mesma rede. H� tamb�m um canal
   PostgreSQL na EFNet.
   
   Uma lista de empresas que prestam suporte comercial est� dispon�vel em
   http://www.postgresql.org/support/professional_support.
   
  1.8) Como eu informo a exist�ncia de um bug?
  
   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
   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
     * 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:
          + Sistema Operacional
          + Vers�o do PostgreSQL
          + Exemplo de teste que reproduz o bug
          + Informa��es sobre depura��o
          + Sa�da reconstituidora de vest�gios (backtrace) do depurador
     * 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
       
  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 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
     * 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
       
   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 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.
   
   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://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,
   etc. - utilize \? para mostrar os comandos dispon�veis.
   
   Nosso s�tio web cont�m ainda mais documenta��o.
   
  1.11) Como eu posso aprender SQL?
  
   Primeiro, considere os livros espec�ficos sobre PostgreSQL mencionados
   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
     * http://sqlcourse.com
     * http://www.w3schools.com/sql/default.asp
     * http://mysite.verizon.net/Graeme_Birchall/id1.html
       
  1.12) Como posso submeter uma corre��o (patch) ou me juntar a equipe de
  desenvolvimento?
  
   Veja a FAQ do Desenvolvedor.
   
  1.13) Como � o PostgreSQL comparado a outros SGBDs?
  
   H� v�rias maneiras de se medir um software: funcionalidades,
   performance, confiabilidade, suporte e pre�o.
   
   Funcionalidades
          PostgreSQL tem muitas caracter�sticas presentes em muitos SGBDs
          comerciais como transa��es, subconsultas, gatilhos, vis�es,
          integridade referencial de chave estrangeira e bloqueio (lock)
          sofisticado. N�s temos algumas funcionalidades que eles n�o
          tem, como tipos definidos pelo usu�rio, heran�a, regras e
          controle de concorr�ncia de m�ltiplas vers�es para reduzir
          bloqueios (locks).
          
   Performance
          A performance do PostgreSQL � compar�vel a outros bancos de
          dados comerciais e de c�digo livre. Ele � mais r�pido em
          algumas coisas, mais lento em outras. Nossa performance �
          geralmente +/- 10% comparada a de outros bancos de dados.
          
   Confiabilidade
          N�s sabemos que um SGBD deve ser confi�vel ou ele � in�til. N�s
          empenhamos em lan�ar vers�es bem testadas, de c�digo est�vel e
          que tenha o m�nimo de bugs. Cada vers�o tem no m�nimo um m�s de
          teste em vers�o beta, e nosso hist�rico de vers�es mostra que
          n�s podemos fornecer vers�es est�veis e s�lidas que est�o
          prontas para uso em produ��o. N�s acreditamos que somos
          comparados a nosso favor com outros sistemas de bancos de dados
          nessa �rea.
          
   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).
          
   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
                                      
  2.1) Quais interfaces est�o dispon�veis para PostgreSQL?
  
   A instala��o do PostgreSQL inclui somente as interfaces C e C
   embutida. Todas as outras interfaces s�o projetos independentes que
   podem ser obtidos separadamente; sendo separados permitem que eles
   tenham suas pr�prias datas de lan�amento e time de desenvolvedores.
   
   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://www.pgfoundry.org.
   
  2.2) Quais ferramentas est�o dispon�veis para utilizar o PostgreSQL com
  p�ginas Web?
  
   Uma boa introdu��o para p�ginas web que utilizam bancos de dados pode
   ser vista em: http://www.webreview.com
   
   Para integra��o na Web, PHP (http://www.php.net) � uma excelente
   interface.
   
   Para casos complexos, muitos usam a Interface Perl e DBD::Pg com
   CGI.pm ou mod_perl.
   
  2.3) O PostgreSQL tem interfaces gr�ficas para iteragir com o usu�rio?
  
   H� um vasto n�mero de Ferramentas Gr�ficas (GUI), que est�o
   dispon�veis para o PostgreSQL, comerciais e de desenvolvedores de
   c�digo aberto. Uma lista detalhada pode ser encontrada em Documenta��o
   da Comunidade PostgreSQL
     _________________________________________________________________
   
                         Perguntas Administrativas
                                      
  3.1) Como eu instalo o PostgreSQL em um local diferente de /usr/local/pgsql?
  
   Especifique a op��o --prefix quando executar o configure.
   
  3.2) Como eu controlo conex�es de outras m�quinas?
  
   Por padr�o, o PostgreSQL s� permite conex�es da m�quina local
   utilizando soquetes de dom�nio Unix ou conex�es TCP/IP. Outras
   m�quinas n�o poder�o conectar-se a menos que voc� modifique
   listen_addresses no postgresql.conf, habilite a autentica��o por
   m�quina modificando o arquivo $PGDATA/pg_hba.conf e reinicie o
   servidor PostgreSQL.
   
  3.3) Como eu ajusto o servidor de banco de dados para obter uma performance
  melhor?
  
   H� tr�s grandes �reas para melhorar a performance em potencial:
   
   Mudan�a de Consultas
          Isto involve modificar consultas para obter melhor performance:
          
          + Cria��o de �ndices, incluir express�es e �ndices parciais
          + Utiliza��o o COPY ao inv�s de m�ltiplos comandos INSERTs
          + Agrupamento de m�ltiplos comandos em uma �nica transa��o para
            diminuir a despesa com efetiva��es (commit)
          + Utiliza��o do CLUSTER quando recuperar v�rios registros de um
            �ndice
          + Utiliza��o do LIMIT para retornar um subconjunto da sa�da da
            consulta
          + Utiliza��o de Consultas preparadas
          + Utiliza��o de ANALYZE para manter as estat�sticas do
            otimizador corretas
          + Utiliza��o regular do VACUUM ou pg_autovacuum
          + Remo��o de �ndices durante grande mudan�a de dados
            
   Configura��o do Servidor
          Um grande n�mero de configura��es que afetam a performance.
          Para obter detalhes adicionais, veja Administration
          Guide/Server Run-time Environment/Run-time Configuration para
          listagem completa, e para coment�rios veja
          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
          nf_e.html e
          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
          
   Sele��o do Hardware
          O efeito do hardware na performance � detalhado em
          http://www.powerpostgresql.com/PerfList/ e
          http://momjian.us/main/writings/pgsql/hw_performance/index.html
          .
          
  3.4) Quais caracter�sticas de depura��o est�o dispon�veis?
  
   H� muitas vari�veis de configura��o do servidor log_* que habilitam a
   exibi��o de consultas e estat�sticas que podem ser muito �teis para
   depura��o e medidas de performance.
   
  3.5) Por que eu recebo "Sorry, too many clients" quando eu tento conectar?
  
   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?
  
   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?
  
   Por causa do hardware de PC ser em sua maioria compat�vel, pessoas
   tendem a acreditar que todos os hardwares de PC s�o de mesma
   qualidade. N�o � verdade. ECC RAM, SCSI e placas m�e de qualidade s�o
   mais confi�veis e t�m uma melhor performance do que hardwares mais
   baratos. O PostgreSQL executar� em quase todo hardware, mas se a
   confiabilidade e a performance forem importantes � prudente pesquisar
   sobre as op��es de hardware. Nossas listas de discuss�o podem ser
   usadas para discutir op��es de hardware e dilemas.
     _________________________________________________________________
   
                           Perguntas Operacionais
                                      
  4.1) Como eu fa�o um SELECT somente dos primeiros registros de uma consulta?
  Um registro rand�mico?
  
   Para obter somente alguns registros, se voc� sabe o n�mero de
   registros necess�rios ao executar o SELECT utilize o LIMIT. Se um
   �ndice corresponde no ORDER BY � poss�vel que a consulta toda n�o
   tenha que ser executada. Se voc� n�o sabe o n�mero de registros ao
   executar o SELECT, utilize um cursor e o FETCH.
   
   Para obter um registro rand�mico, utilize:
    SELECT col
    FROM tab
    ORDER BY random()
    LIMIT 1;

  4.2) Como eu descubro quais tabelas, �ndices, bancos de dados e usu�rios
  est�o definidos? Como eu vejo as consultas utilizadas pelo psql para
  mostr�-los?
  
   Utilize o comando \dt para ver tabelas no psql. Para obter uma lista
   completa dos comandos no psql voc� pode utilizar \?. Alternativamente,
   voc� pode ler o c�digo-fonte do psql no arquivo
   pgsql/src/bin/psql/describe.c, ele cont�m os comandos SQL que geram a
   sa�da para os comandos de contrabarra do psql. Voc� tamb�m pode
   iniciar o psql com a op��o -E para que as consultas utilizadas para
   executar os comandos que voc� informou seja exibida. O PostgreSQL
   tamb�m fornece uma inteface compat�vel com SQL do INFORMATION SCHEMA
   que voc� pode consultar para obter informa��o sobre o banco de dados.
   
   H� tamb�m tabelas do sistema que come�am com pg_ que os descrevem
   tamb�m.
   
   Utilizando o psql -l listar� todos os bancos de dados.
   
   Veja tamb�m o arquivo pgsql/src/tutorial/syscat.source. Ele ilustra
   muitos dos comandos SELECTs necess�rios para obter informa��o das
   tabelas de sistema do banco de dados.
   
  4.3) Como voc� muda o tipo de dado de uma coluna?
  
   Mudar o tipo de dado de uma coluna pode ser feito facilmente na vers�o
   8.0 ou superior com ALTER TABLE ALTER COLUMN TYPE.
   
   Em vers�es anteriores, fa�a isso:
    BEGIN;
    ALTER TABLE tab ADD COLUMN col_nova novo_tipo_dado;
    UPDATE tab SET col_nova = CAST(col_antiga AS novo_tipo_dado);
    ALTER TABLE tab DROP COLUMN col_antiga;
    COMMIT;

   Voc� pode ent�o querer fazer um VACUUM FULL tab para recuperar o
   espa�o em disco utilizado pelos registros expirados.
   
  4.4) Qual � o tamanho m�ximo de um registro, uma tabela e um banco de dados?
  
   Estes s�o os limites:
   
   Tamanho m�ximo de um banco de dados? ilimitado (existem bancos de
   dados de 32 TB)
   Tamanho m�ximo de uma tabela? 32 TB
   Tamanho m�ximo de um registro? 400 GB
   Tamanho m�ximo de um campo? 1 GB
   N�mero m�ximo de registros em uma tabela? ilimitado
   N�mero m�ximo de colunas em uma tabela? 250-1600 dependendo dos tipos
   das colunas
   N�mero m�ximo de �ndices em uma tabela? ilimitado
   
   � claro, que eles n�o s�o ilimitados, mas limitados ao espa�o em disco
   dispon�vel e espa�o em mem�ria/swap. A Performance ser� penalizada
   quando estes valores se tornarem grandes.
   
   O tamanho m�ximo de uma tabela com 32 TB n�o requer suporte a arquivos
   grandes do sistema operacional. Tabelas grandes s�o armazenadas como
   m�ltiplos arquivos de 1 GB ent�o o limite do sistema de arquivos n�o �
   importante.
   
   O tamanho m�ximo de uma tabela, o tamanho de um registro e o n�mero
   m�ximo de colunas podem ser quadruplicados aumentando-se o tamanho
   padr�o do bloco para 32k. O tamanho m�ximo de uma tabela pode tamb�m
   ser aumentado utilizando particionamento de tabela.
   
   Uma limita��o � que �ndices n�o podem ser criados em colunas maiores
   do que 2.000 caracteres. Felizmente, tais �ndices s�o raramente
   necess�rios. Unicidade � 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.
   
  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,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
   -------------------------------------------
    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
   ------------------------   =  158 registros por p�gina do banco de dados (arredondado para baixo)
     52 bytes por registro

   100000 registros de dados
   ----------------------------  =  633 p�ginas do banco de dados (arredondadopara cima)
      158 registros por p�gina

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.
   
   NULLs s�o armazenados como bitmaps, ent�o eles utilizam muito pouco
   espa�o.
   
  4.6) Por que minhas consultas est�o lentas? Por que elas n�o est�o utilizando
  meus �ndices?
  
   �ndices n�o s�o utilizados por toda consulta. �ndices s�o utilizados
   somente se a tabela � maior do que um tamanho m�nimo, e a consulta
   seleciona somente uma pequena porcentagem dos registros da tabela.
   Isto porque o acesso rand�mico ao disco causado pela busca indexada
   pode ser mais lento do que uma leitura ao longo da tabela ou busca
   sequencial.
   
   Para determinar se um �ndice deveria ser utilizado, o PostgreSQL deve
   ter estat�sticas sobre a tabela. Estas estat�sticas s�o coletadas
   utilizando o VACUUM ANALYZE ou simplesmente o ANALYZE. Utilizando
   estat�sticas, o otimizador sbae quantos registros est�o na tabela, e
   pode melhor determinar se �ndices deveriam ser utilizados.
   Estat�sticas tamb�m s�o �teis para determinar a ordem de jun��o �tima
   e m�todos de jun��o. Cole��o de estat�sticas deveriam ser feitas
   periodicamente a medida que o conte�do da tabela muda.
   
   �ndices n�o s�o normalmente utilizados para ORDER BY ou para fazer
   jun��es. Uma busca sequencial seguido por uma ordena��o expl�cita �
   geralmente mais r�pida do que uma busca indexada em uma tabela grande.
   Contudo, LIMIT combinado com ORDER BY frequentemente utilizar� �ndice
   porque somente uma pequena por��o da tabela ser� retornada.
   
   Se voc� acredita que o otimizador est� incorreto ao escolher uma busca
   sequencial, utilize SET enable_seqscan TO 'off' e execute a consulta
   novamente para ver se uma busca indexada � realmente mais r�pida.
   
   Ao utilizar operadores curinga tais como LIKE ou ~, �ndices podem ser
   utilizados somente em algumas condi��es:
     * O in�cio da cadeia de caracteres da busca deve ser iniciar com uma
       cadeia de caracteres, i.e.
          + modelos LIKE n�o devem iniciar com %.
          + modelos ~ (express�es regulares) devem iniciar com ^.
     * A cadeia de caracteres utilizada na busca n�o pode iniciar com a
       classe de caracteres e.g. [a-e].
     * 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 �
       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. 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
   coluna do �ndice. Isto era particularmente verdadeiro para �ndices de
   coluna int2, int8 e numeric.
   
  4.7) Como eu vejo como o otimizador de consulta est� avaliando a minha
  consulta?
  
   Veja o comando EXPLAIN no manual.
   
  4.8) Como eu fa�o buscas com express�es regulares e buscas com express�es
  regulares sem diferenciar mai�sculas de min�sculas? Como eu utilizo um �ndice
  para buscas que n�o diferenciam mai�sculas de min�sculas?
  
   O operador ~ faz avalia��o de express�es regulares, e ~* faz avalia��o
   n�o sens�vel a mai�sculas de express�es regulares. A variante n�o
   sens�vel a mai�sculas do LIKE � chamada de ILIKE.
   
   Compara��es de igualdade n�o sens�veis a mai�sculas s�o normalmente
   expressadas como:
    SELECT *
    FROM tab
    WHERE lower(col) = 'abc';

   Isso n�o ir� utilizar o �ndice padr�o. Contudo, se voc� criar um
   �ndice de express�o, ele ser� utilizado:
    CREATE INDEX tabindex ON tab (lower(col));

   Se o �ndice acima � criado como UNIQUE, embora a coluna possa
   armazenar caracteres mai�sculos e min�sculos, ele n�o pode ter valores
   id�nticos que diferem apenas em letras mai�sculas e min�sculas. 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
  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
   ir� colocar entradas NULL no in�cio da lista de resultados:
   SELECT *
   FROM tab
   ORDER BY (col IS NOT NULL)

  4.10) Qual � a diferen�a entre os v�rios tipos de dado de caracteres?
  
   Tipo Nome Interno Observa��o
   VARCHAR(n) varchar tamanho especifica o tamanho m�ximo, sem
   preenchimento
   CHAR(n) bpchar preenchimento em branco para comprimento fixo
   espec�fico
   TEXT text nenhum limite superior espec�fico no comprimento
   BYTEA bytea vetor de bytes de comprimento vari�vel (seguro a byte
   nulo)
   "char" char um caracter
   
   Voc� ver� o nome interno quando examinar o cat�logo do sistema e em
   algumas mensagens de erro.
   
   Os primeiros quatro tipos acima s�o do tipo "varlena" (i.e., os
   primeiros quatro bytes no disco s�o o comprimento seguido pelos
   dados). Consequentemente o espa�o atual utilizado � ligeiramente maior
   do que o tamanho declarado. Contudo, valores longos s�o tamb�m
   sujeitos a compress�o, ent�o o espa�o em disco pode tamb�m ser bem
   menor do que o esperado.
   VARCHAR(n) � melhor quando est� armazenando cadeias de caracteres de
   comprimento vari�vel e h� um limite de tamanho desta cadeia. TEXT �
   para cadeias de caracteres de comprimento ilimitado, com o m�ximo de
   um gigabyte.
   
   CHAR(n) � para armazenar cadeias de caracteres que s�o todas do mesmo
   tamanho. CHAR(n) preenche com espa�os em branco at� o tamanho
   especificado, enquanto o VARCHAR(n) armazena somente os caracteres
   fornecidos. BYTEA � para armazenar dados bin�rios, particularmente
   valores que incluem bytes NULL. Todos os tipos descritos aqui tem
   caracter�sticas de performance similares.
   
  4.11.1) Como eu crio um campo serial/auto incremento?
  
   PostgreSQL suporta o tipo de dados SERIAL. Ele cria automaticamente
   uma sequ�ncia. Por exemplo:
    CREATE TABLE pessoa (
        id   SERIAL,
        nome TEXT
    );

   � automaticamente traduzido em:
    CREATE SEQUENCE pessoa_id_seq;
    CREATE TABLE pessoa (
        id   INT4 NOT NULL DEFAULT nextval('pessoa_id_seq'),
        nome TEXT
    );

   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?
  
   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
   por todas as sess�es.
   
  4.11.4) Por que os n�meros da minha sequ�ncia n�o s�o reutilizados quando uma
  transa��o � abortada? Por que h� intervalos nos n�meros da minha
  sequ�ncia/coluna SERIAL?
  
   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.12) O que � um OID? O que � um CTID?
  
   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
   uma tabela; e s�o menos prop�cias a atingir o limite. SERIAL8 est�
   dispon�vel para armazenar valores de sequ�ncias com oito bytes.
   
   CTIDs s�o utilizados para identificar registros f�sicos espec�ficos
   com valores de block e deslocamento. CTIDs mudam ap�s registros serem
   modificados ou recarregados. Eles s�o utilizados por �ndices para
   apontar registros f�sicos.
   
  4.13) Por que eu recebo o erro "ERROR: Memory exhausted in AllocSetAlloc()"?
  
   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:
    ulimit -d 262144
    limit datasize 256m

   Dependendo da sua shell, somente um desses comando ter� sucesso, mas
   ele definir� o segmento de dados do seu processo com um limite maior e
   talvez permita que a consulta seja feita. Este comando � aplicado ao
   processo atual e todos os subprocessos criados depois do comando ser
   executado. Se voc� tiver problemas com o cliente SQL porque o processo
   servidor retornou muitos dados, tente-o antes de iniciar o cliente.
   
  4.14) Como eu informo qual vers�o do PostgreSQL eu estou utilizando?
  
   No psql, digite SELECT version();
   
  4.15) Como eu crio uma coluna que conter� por padr�o a hora atual?
  
   Utilize CURRENT_TIMESTAMP:
        CREATE TABLE teste (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP);

  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:
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);

   or
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 USING (col);

   Essas duas consultas ind�nticas juntam t1.col com t2.col, e tamb�m
   retornam qualquer registro que n�o foi juntado em t1 (aqueles que n�o
   combinaram com t2). Uma jun��o a direita RIGHT adicionaria registros
   que n�o foram juntados da tabela t2. Uma jun��o completa (FULL)
   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
   internas (INNER).
   
  4.17) Como eu fa�o consultas utilizando m�ltiplos bancos de dados?
  
   N�o h� outra maneira de consultar um banco de dados caso ele n�o seja
   o atual. Porque o PostgreSQL carrega cat�logos do sistema espec�ficos
   do banco de dados, � incerto como uma consulta em banco de dados
   distintos pode se comportar.
   
   contrib/dblink permite consultas em bancos de dados distintos
   utilizando chamadas de fun��es. � claro, que um cliente pode fazer
   conex�es simult�neas em bancos de dados diferentes e juntar os
   resultados no cliente.
   
  4.18) Como eu retorno m�ltiplos registros ou colunas de uma fun��o?
  
   � f�cil utilizando fun��es que retornam conjunto,
   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?
  
   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?
  
   Embora "replica��o" seja um termo simples, h� v�rias tecnologias para
   fazer replica��o, com vantagens e desvantagens para cada um.
   
   Replica��o mestre/escravo permite que um mestre receba consultas de
   leitura e escrita, enquanto os escravos s� podem aceitar
   leitura/consultas SELECT. A solu��o mais popular de replica��o
   mestre-escravo para PostgreSQL dispon�vel livremente � Slony-I.
   
   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
   � 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? 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