]> granicus.if.org Git - postgresql/blob - doc/src/FAQ/FAQ_turkish.html
1280f31536f8e0a529b61c6d663886889dfc510a
[postgresql] / doc / src / FAQ / FAQ_turkish.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4         <meta http-equiv="Content-Type" content="text/html; charset=iso8859-9">
5         <title>PostgreSQL Sýkça Sorulan Sorular - Türkçe</title>
6         <style type="text/css"><!--
7         body { background: #FFFFFF; }
8         a:link { color: #ff0000; }
9         a:active { color: #0000ff; }
10         a:visited { color: #a00000; }
11         i { font-style: oblique; }
12         body, h1, h2, h4, ul, p, a { font-family: helvetica, arial, sans-serif; font-size: medium; color: black; }
13         pre { color: #5C5C5C; padding-left: 30px; }
14         .fixme { color: cyan; }
15         --></style>
16 </head>
17 <body bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
18
19 <h1>PostgreSQL için Sýkça Sorulan Sorular (SSS)</h1>
20 <p>Son güncelleme : 15 Kasým 2004 Pazartesi - 15:03:23</p>
21 <p>Current maintainer: Bruce Momjian
22 (<a href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br></p>
23 <p>Çevirenler : Devrim Gündüz (<a href="mailto:devrim@tdmsoft.com">devrim@tdmsoft.com</a>)<br>Nicolai Tufar 
24 (<a href="mailto:ntufar@tdmsoft.com">ntufar@tdmsoft.com</a>)<BR>Volkan YAZICI (<a href="mailto:volkany@phreaker.net">volkany@phreaker.net</a>)</p>
25 <p>Bu belgenin en güncel hali, <a href="http://www.postgresql.org/docs/faqs/FAQ_turkish.html">http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html</a> 
26 ve <a href="http://www.gunduz.org/seminer/pg/FAQ_turkish.html">http://www.gunduz.org/seminer/pg/FAQ_turkish.html</a> 
27 adreslerinde görülebilir.</p>
28 <p>Platforma özel sorularýnýz, <a href="http://www.postgresql.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</a> adresinde yanýtlanýr.</p>
29
30 <hr>
31
32 <h2 align="center">Genel Sorular</h2>
33         <a href="#1.1">1.1</a>) PostgreSQL nedir? Nasýl okunur?<br>
34         <a href="#1.2">1.2</a>) PostgreSQL'in haklarý nedir?<br>
35         <a href="#1.3">1.3</a>) PostgreSQL, hangi Unix platformlarýnda çalýþýr?<br>
36         <a href="#1.4">1.4</a>) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?<br>
37         <a href="#1.5">1.5</a>) PostgreSQL'i nereden indirebilirim?<br>
38         <a href="#1.6">1.6</a>) Desteði nereden alabilirim?<br>
39         <a href="#1.7">1.7</a>) En son sürümü nedir?<br>
40         <a href="#1.8">1.8</a>) Hangi belgelere ulaþabilirim?<br>
41         <a href="#1.9">1.9</a>) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?<br>
42         <a href="#1.10">1.10</a>) Nasýl <small>SQL</small> öðrenebilirim?<br>
43         <a href="#1.11">1.11</a>) PostgreSQL 2000 yýlýna uyumlu mudur?<br>
44         <a href="#1.12">1.12</a>) Geliþtirme takýmýna nasýl katýlabilirim??<br>
45         <a href="#1.13">1.13</a>) Bir hata raporunu nasýl gönderebilirim?<br>
46         <a href="#1.14">1.14</a>) PostgreSQL, diðer <small>VTYS(DBMS)</small> lerle nasýl
47         karþýlaþtýrýlabilir?<br>
48         <a href="#1.15">1.15</a>) PostgreSQL'e maddi açýdan nasýl destek olabilirim?<br>
49         
50 <h2 align="center">Kullanýcý/istemci Sorularý</h2>
51         <a href="#2.1">2.1</a>) PostgreSQL için <i>ODBC</i> sürücüleri var mý?<br>
52         <a href="#2.2">2.2</a>) PostgreSQL'i web sayfalarýnda kullanabilmek için
53         hangi araçlar bulunmaktadýr?<br>
54         <a href="#2.3">2.3</a>) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?<br>
55         <a href="#2.4">2.4</a>) PostgreSQL ile iletiþimi kurabilmek için
56         hangi dilleri kullanabilirim? <br>
57         
58 <h2 align="center">Yönetimsel Sorular</h2>
59         <a href="#3.1">3.1</a>) PostgreSQL'i <code>/usr/local/pgsql</code> dizininden
60         baþka dizinlere nasýl kurabilirim?<br>
61         <a href="#3.2">3.2</a>) <i>Postmaster</i>'ý baþlattýðýmda <code>Bad System Call</code>
62         ya da <code>core dumped</code> mesajý alýyorum. Neden?<br>
63         <a href="#3.3">3.3</a>) <i>Postmaster</i>'ý baþlattýðýmda, <code>IpcMemoryCreate</code>
64         hatasý alýyorum. Neden?<br>
65         <a href="#3.4">3.4</a>) <i>Postmaster</i>'ý, baþlattýðýmda, <code>IpcSemaphoreCreate</code>
66         hatasý alýyorum. Neden?<br>
67         <a href="#3.5">3.5</a>) Diðer bilgisayarlarýn benim PostgreSQL veritabaný
68         sunucuma baðlantýlarýný nasýl kontrol edebilirim?<br>
69         <a href="#3.6">3.6</a>) Veritabaný motorunu daha iyi baþarým icin nasýl ayarlayabilirim?<br>
70         <a href="#3.7">3.7</a>) Hangi hata ayýklama özellikleri bulunmaktadýr?<br>
71         <a href="#3.8">3.8</a>) Baðlanmaya çalýþýrken, neden "<code>Sorry, too many clients</code>"
72         hatasýný alýyorum. Neden?<br>
73         <a href="#3.9">3.9</a>) <code>pgsql_tmp</code>dizinin içindeki dosyalar nelerdir?<br>
74         <a href="#3.10">3.10</a>) PostgreSQL sürümlerini yükseltmek için neden bir
75         <code>dump/reload</code> iþlemi gerçekleþtirmek zorundayým?<br>
76         <a href="#3.11">3.11</a>) Nasýl bir donaným kullanmalýyým?br>
77         
78 <h2 align="center">Ýþletimsel Sorular</h2>
79         <a href="#4.1">4.1</a>) <i>Binary cursor</i> ve <i>normal cursor</i> arasýndaki fark nedýr?<br>
80         <a href="#4.2">4.2</a>) Sorgunun sadece ilk birkaç satýrýný nasýl
81         <code>SELECT</code> edebilirim?<br>
82         <a href="#4.3">4.3</a>) <i>psql</i>'in içinde gördügüm tablolarýn ya da diðer
83         þeylerin listesini nasýl alabilirim?<br>
84         <a href="#4.4">4.4</a>) Bir tablodan bir kolonu nasýl kaldýrabilirim?<br>
85         <a href="#4.5">4.5</a>) Bir satýr, tablo ve veritabaný için en fazla büyüklük nedir?<br>
86         <a href="#4.6">4.6</a>) Tipik bir metin dosyasýndaki veriyi saklamak için ne
87         kadar disk alaný gereklidir?<br>
88         <a href="#4.7">4.7</a>) Veritabanýnda hangi tablo ya da <i>index</i>'lerin
89         tanýmlandýðýný nasýl görebilirim?<br>
90         <a href="#4.8">4.8</a>) Sorgularým cok yavaþ, ya da <i>index</i>'lerimi kullanmýyorlar. Neden?<br>
91         <a href="#4.9">4.9</a>) <i>Query-optimizer</i>'ýn sorgularýmý nasýl deðerlendirdiðini,
92         iþleme soktuðunu nasýl görebilirim?<br>
93         <a href="#4.10">4.10</a>) <i>R-tree index</i> nedir?<br>
94         <a href="#4.11">4.11</a>) <i>Genetic Query Optimizer</i> nedir?<br>
95         <a href="#4.12">4.12</a>) Düzenli ifade (<i>Regular Expression</i>) aramalarýný
96         ve büyük/küçük harfe duyarsýz aramalarý nasýl yapabilirim? Bu büyük/küçük harfe duyarlý
97         aramalar için <i>index</i>'i nasýl kullanabilirim?<br>
98         <a href="#4.13">4.13</a>) Bir sorguda, bir alanýn <code>NULL</code> olduðunu nasýl
99         ortaya çýkarabilirim?<br>
100         <a href="#4.14">4.14</a>) Çesitli karakter tipleri arasýndaki farklar nelerdir?<br>
101         <a href="#4.15.1">4.15.1</a>) Nasýl <code>serial</code>/otomatik artan
102         (<i>auto-incrementing</i>) bir alan yaratabilirim?<br>
103         <a href="#4.15.2">4.15.2</a>) <code>Serial</code> giriþinin deðerini nasýl alabilirim?<br>
104         <a href="#4.15.3">4.15.3</a>) <code>currval()</code> ve  <code>nextval()</code>
105         diðer kullanýcýlara sorun yaratmaz mý?<br>
106         <a href="#4.15.4">4.15.4</a>) Neden sequence sayýlarýn <i>transaction</i>
107         iþleminin iptalinden sonra yeniden kullanýlýyor? Neden <code>sequence/SERIAL</code>
108         kolonumdaki sayýlarda atlamalar oluyor?<br>
109         <a href="#4.16">4.16</a>) <code>OID</code> nedir? <code>TID</code> nedir?<br>
110         <a href="#4.17">4.17</a>) PostgreSQL' de kullanýlan bazý terimlerin anlamlarý nelerdir?<br>
111         <a href="#4.18">4.18</a>) Neden "<code>ERROR: Memory exhausted in AllocSetAlloc()</code>"
112         hatasýný alýyorum?<br>
113         <a href="#4.19">4.19</a>) Hangi PostgreSQL sürümünü çalýstýrdýðýmý nasýl görebilirim?<br>
114         <a href="#4.20">4.20</a>) Neden <i>large-object</i> iþlemlerim, "</code>invalid large
115         obj descriptor</code>" hatasýný veriyor?<br>
116         <a href="#4.21">4.21</a>) Þu andaki zamaný öntanýmlý deðer olarak kabul
117         eden kolonu nasýl yaratýrým?<br>
118         <a href="#4.22">4.22</a>) Neden <code>IN</code> kullanan <i>subquery</i>'lerim çok yavaþ?<br>
119         <a href="#4.23">4.23</a>) <i>Outer join</i> iþlemini nasýl yapabilirim?<br>
120         <a href="#4.24">4.24</a>) Ayný anda birden fazla veritabanýnda nasýl iþlem yapabilirim?<br>
121         <a href="#4.25">4.25</a>) Bir fonksiyondan nasýl çoklu satýr ya da kolon döndürebilirim?<br>
122         <a href="#4.26">4.26</a>) Neden Pl/PgSQL fonksiyonlarý içinden güvenli
123         bir þekilde tablo yaratma/kaldýrma iþlemlerini yapamýyoruz?<br>
124         <a href="#4.27">4.27</a>) Hangi þifreleme seçenekleri bulunmaktadýr?<br>
125         
126
127 <h2 align="center">PostgreSQL Özelliklerini Geniþletmek</h2>
128         <a href="#5.1">5.1</a>) Kullanýcý-tanýmlý bir fonksiyon yazdým. <i>psql</i>'de
129         çalýþtýrdýðým zaman neden <code>core dump</code> ediyor?<br>
130         <a href="#5.2">5.2</a>) PostgreSQL'e nasýl yeni veri tipleri/fonksiyonlar ekleyebilirim?<br>
131         <a href="#5.3">5.3</a>) Bir tuple döndürmek için bir C fonksiyonunu nasýl yazarým?<br>
132         <a href="#5.4">5.4</a>) Bir kaynak dosyasýnda deðiþiklik yaptým.
133         Yeniden derlememe raðmen deðiþiklik geçerli olmuyor. Neden?<br>
134         
135     <hr>
136
137         <h2 align="center">Genel Sorular</h2>
138
139                 <h4><a name="1.1">1.1</a>) PostgreSQL nedir? Nasýl okunur?</h4>
140                 <p>PostgreSQL, <i>Post-Gres-Q-L</i>. olarak okunur</p>
141                 <p>PostgreSQL, yeni-nesil <small>VTYS</small> araþtýrma prototipi olan POSTGRES
142                 veritabaný yönetim sisteminin geliþtirilmesidir. POSTGRES'in zengin veri tiplerini ve
143                 güçlü veri modelini tutarken, <small>SQL</small>'in geliþtirilmiþ alt kümesi 
144                 olan PostQuel dilini kullanýr. PostgreSQL ücretsizdir ve kaynak kodu açýk daðýtýlýr.</p>
145                 <p>PostgreSQL, PostgreSQL geliþtirme listesine üye olan bir Internet geliþtirici
146                 takýmý tarafýndan geliþtirilir. Þu andaki koordinatör, Marc G. Fournier 
147                 (<a href="mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</a>). 
148                 (Bu takýma nasýl katýlacagýnýzý öðrenmek için <a href="#1.6">1.6</a> numaralý maddeyi
149                 okuyunuz.) Bu takým, tüm PostgreSQL geliþiminden sorumludur.</p>
150                 <p>PostgreSQL 1.01 sürümünün yazarlarý Andrew Yu ve Jolly Chen idi. Bunlarýn dýþýnda
151                 bir kaç kisi de uyarlama, hata ayýklama ve kodun geliþtirilmesi için çalýsmýþtý.
152                 PostgreSQL'in türediði orijinal Postgres kodu, lisans, lisansüstü ve akademisyenler
153                 tarafýndan, Professor Michael Stonebraker (University of California, Berkeley)
154                 koordinatörlügünde yazýlmýþtýr.</p>
155                 <p>Berkley'deki yazýlýmýn adý Postgres idi. <small>SQL</small> uyumluluðu
156                 1995'te eklenince, adý Postgres 95 oldu. 1996 yýlýnýn sonlarýnda adý
157                 PostgreSQL olarak deðiþtirildi.</p>
158                 
159                 <h4><a name="1.2">1.2</a>) PostgreSQL'in haklarý nedir?</h4>
160                 <p>PostgreSQL Data Base Management System</p>
161                 <p>Portions copyright (c) 1996-2002, PostgreSQL Global Development
162                 Group Portions Copyright (c) 1994-6 Regents of the University of
163                 California</p>
164                 <p>Permission to use, copy, modify, and distribute this software
165                 and its documentation for any purpose, without fee, and without a
166                 written agreement is hereby granted, provided that the above
167                 copyright notice and this paragraph and the following two
168                 paragraphs appear in all copies.</p>
169                 <p>IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
170                 PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
171                 DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
172                 SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
173                 CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
174                 <p>THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
175                 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
176                 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
177                 SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE
178                 UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
179                 SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</p>
180                 <p>Üstteki metin klasik açýk-kod lisansý olan BSD lisansýdýr. Kaynak kodun nasýl 
181                 kullanýlabileceðine dair sýnýrlamalarý yoktur. Bu lisansý seviyoruz. Deðiþtirme 
182                 niyetimiz bulunmamaktadýr.</p>
183                 
184                 <h4><a name="1.3">1.3</a>) PostgreSQL, hangi Unix platforlarýnda çalýþýr?</h4>
185                 <p>Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i çalýþtýracaktýr.
186                 Ayrýntýlý bilgi için kurulum belgelerine bakabilirsiniz.</p>
187                 
188                 <h4><a name="1.4">1.4</a>) Hangi Unix olmayan uyarlamalarý bulunmaktadýr?</h4>
189                 <P>PostgreSQL 8.0 sürümü ile , PostgreSQL artýk Win2000, WinXP ve Win2003 gibi Microsoft 
190                 Windows NT tabanlý iþletim sistemlerinde doðal olarak çalýþmaya baþlamýþtýr. Paketlenmiþ bir
191                 kurulum programý, <a href="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>. adresinden 
192                 indirilebilir.
193
194                 <p>Ayrýca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadýr.</p>
195                 
196                 <h4><a name="1.5">1.5</a>) PostgreSQL'i nereden indirebilirim?</h4>
197                 <p>PostgreSQL için ana anonim ftp sitesi <i><a href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</a></i>
198                 adresidir. Yansýlar için, ana web sayfamýza bakabilirsiniz.</p>
199                 
200                 <h4><a name="1.6">1.6</a>) Nereden destek alabilirim?</h4>
201                 <p>Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tartýþmalara
202                 açýktýr. Üye olmak için, aþaðýdaki satýrlarý e-postanýzýn <i>body</i> kýsmýna
203                 (konu kýsmýna deðil) yazýp, pgsql-general-request@PostgreSQL.org adresine gönderin:</p>
204                 <pre>subscribe<br>end</pre>
205                 <p>Ayný zamanda, bir <i>digest</i> listesi bulunmaktadýr. Bu listeye üye olmak için, 
206                 pgsql-general-digest-request@PostgreSQL.org adresine, body kýsmýnda</p>
207                 <pre>subscribe<br>end</pre>
208                 <p>yazan bir e-posta atmanýz yeterli olacaktýr.</p>
209                 <p><i>Digest</i> postalar, ana liste 30k civarýnda e-postaya ulaþtýðýnda
210                 üyelere gönderilmektedir.</p>
211                 <p><i>Bug</i>'lar için bir e-posta listesi bulunmaktadýr. Bu listeye üye olmak için,
212                 pgsql-bugs-request@PostgreSQL.org adresine, <i>body</i> kýsmýnda</p>
213                 <pre>subscribe<br>end</pre>
214                 <p>yazan bir e-posta atmanýz yeterli olacaktýr.</p>
215                 <p>Ayný zamanda, geliþtiriciler için tartýþma listesi bulunmaktadýr. Bu listeye
216                 üye olmak için, pgsql-hackers-request@PostgreSQL.org adresine, body kýsmýnda</p>
217                 <pre>subscribe<br>end</pre>
218                 <p>yazan bir e-posta atmanýz yeterli olacaktýr.</p>
219                 <p>Bunun dýþýndaki e-posta listelerine ve PostgreSQL hakkýnda bilgiye, PostgreSQL WWW 
220                 ana sayfasýndan ulasabilirsiniz: <i><a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a></i><p>
221                 <p>Ayný zamanda, EFNet üzerinde, <code>#PostgreSQL</code> adlý bir IRC kanalý
222                 bulunmaktadýr. Bunun için, <code>irc -c '#PostgreSQL' "$USER" irc.phoenix.net</code>
223                 Unix komutunu kullanabilirsiniz.</p>
224                 <p>Ticari destek veren firmalarýn listesine</p>
225                 <p><i><a href="http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</a></i></p>
226                 <p>adresinden ulaþbilirsiniz.</p>
227                 
228                 <h4><a name="1.7">1.7</a>) En son sürüm nedir?</h4>
229                 <p>PostgreSQL'in son sürümü 7.4.6'dýr.</p>
230                 <p>Her 6-8 ayda <i>ana sürüm</i> çýkarýlmasý planlanmaktadýr.</p>
231
232                 <h4><a name="1.8">1.8</a>) Hangi belgelere ulaþabilirim?</h4>
233                 <p>Daðýtýmýn içinde, kitapçýklar, kitapçýk sayfalarý ve bazý küçük örnekler verilmektedir.
234                 <code>/doc</code> dizinine bakýnýz. Ayrýca, bu el kitapçýklarýný online olarak
235                 <i><a href="http://www.PostgreSQL.org/docs/">http://www.PostgreSQL.org/docs/</a></i> adresinden inceleyebilirsiniz.</p>
236                 <p><i><a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a></i>
237                 ve <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook<a></i>
238                 adreslerinde PostgreSQL kitaplarý bulunmaktadýr. PostgreSQL kitablarýnýn listesine, 
239                 <i><a href="http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a></i> adresinden ulaþaiblirsiniz.
240                 Ayrýca, PostgreSQL konusundaki teknik makalelere de
241                 <i><a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a></i> adresinden ulaþabilirsiniz.</p>
242                 <p>psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
243                 <i>aggregate</i>'ler, vb. ile ilgili güzel komutlarý vardýr.</p>
244                 <p>Web sitemiz daha fazla belgeyi içermektedir.</p>
245                 
246                 <h4><a name="1.9">1.9</a>) Bilinen hatalar ya da eksik
247                 özelliklere nereden ulaþabilirim?</h4>
248                 <p>PostgreSQL SQL-92 uyumluluðu içindedir, standartlardan fazla da özellikleri
249                 bulunmaktadýr. Bilinen hatalar, eksik özellikler ve gelecek ile ilgili planlar için
250                 TODO listesine bakýnýz.</p>
251                 
252                 <h4><a name="1.10">1.10</a>) Nasýl <small>SQL</small> öðrenebilirim?</h4>
253                 <p><i><a href="http:/www.PostgreSQL.org/docs/awbook.html">http:/www.PostgreSQL.org/docs/awbook.html</a></i>
254                 adresindeki kitap SQL ögretecektir.
255                 <i><a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</a></i>
256                 adresinde de bir baska PostgreSQL kitabý bulunmaktadýr.</p>
257                 <p><i><a href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a></i>,
258                 <i><a href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</a></i>
259                 <i><a href="http://sqlcourse.com">http://sqlcourse.com</a></i>
260                 ve <i><a href="http://sqlcourse2.com">http://sqlcourse2.com</a></i>
261                 adreslerinde de güzel belgeler bulunmaktadýr.</p>
262                 <p>Bir baþkasý da, <i><a href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a></i>
263                 adresinde bulunan "<i>Teach Yourself SQL in 21 Days, Second Edition</i>" kitabýdýr.</p>
264                 <p>Bazý kullanýcýlarýmýz da þu kitabý önermektedirler: "<i>The Practical SQL Handbook,
265                 Bowman, Judith S., et al.,Addison-Wesley</i>". Bazýlarý ise "<i>The Complete
266                 Reference SQL, Groff et al., McGraw-Hill</i>" kitabýný önermektedirler.</p>
267                 
268                 <h4><a name="1.11">1.11</a>) PostgreSQL 2000 yýlýna uyumlu mudur?</h4>
269                 <p>Evet.</p>
270                 
271                 <h4><a name="1.12">1.12</a>) Geliþtirme takýmýna nasýl katýlabilirim?</h4>
272                 <p>Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da daðýtýmýn içindeki
273                 PostgreSQL Developer belgesini okuyun. Ardýndan, pgsql-hackers ve pgsql-patches 
274                 listelerine üye olun. Üçüncü olarak da, pgsql-pacthes listesine yüksek kalitede 
275                 yamalar gönderin.</p>
276                 <p>PostgreSQL CVS arþivine eriþim izni olan, 10 kadar geliþtirici bulunmaktadýr.
277                 Hepsi defalarca, diðer kiþilerin yaptýðýndan çok daha yüksek-kaliteli yamalar 
278                 göndermiþlerdir. Ayrýca biz de bu geliþtiricilerin ekledikleri yamalarýn yüksek
279                 kalitede olduðuna güveniyoruz.</p>
280                 
281                 <h4><a name="1.13">1.13</a>) Bir hata raporunu nasýl gönderebilirim?</h4>
282                 <p>PostgreSQL BugTool sayfasýna gidiniz. O sayfada bir <i>bug</i> bildirmek
283                 için neleri yapmanýz gerektiði anlatýlmýþtýr.</p>
284                 <p>Ayrýca, <i><a href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</a></i>
285                 ftp adresimizde, yeni bir PostgreSQL sürümü ya da yamasý olup olmadýðýni kontrol ediniz.</p>
286                 
287                 <h4><a name="1.14">1.14</a>) PostgreSQL, diger DBMS'lerle nasýl karþýlastýrýlabilir?</h4>
288                 <p>Bir yazýlýmýn gücünü ölçmek için çeþitli yollar vardýr: Yazýlýmýn özellikleri, 
289                 baþarýmý, güvenilirliði, desteði ve ücreti.</p>
290                 <p>Özellikler:<p>
291                 <p>PostgreSQL mevcut büyük ticari veritabanlarýnýn, <i>transaction</i>,
292                 <i>subselect</i>, <i>trigger</i>, <i>view</i>, <i>foreign key referential integrity</i>
293                 ve <i>sophisticated locking</i> gibi (<i>user-defined types</i>), <i>rules</i>,
294                 <i>inheritance</i> ve <i>lock</i> cakýþmalarýný düþürmek için <i>multi-version</i>
295                 uyumluluk özellikleri bulunmaktadýr.</p>
296                 <p>Performans (Baþarým):</p>
297                 <p>PostgreSQL, diðer ticari ve açýk kaynak kodlu veritabanlarýyla yakýn baþarýmý saðlar.
298                 Bazý açýlardan daha hýzlýdýr, diðer açýlardan da yavaþtýr. MySQL ya da daha zayýf 
299                 veritabanlarý ile karþýlaþtýrýldýðýnda, <code>INSERT/UPDATE</code> iþlemlerinde,
300                 <i>transaction</i> bazlý çalýstýðýmýz için daha yavaþýz. MySQL, yukarýdaki "özellikler"
301                 kýsmýnda belirtilenlerden hiç birine sahip deðildir. Biz, baþarýmýmýzý her sürümde
302                 arttýrsak da, esneklik ve geliþmiþ özellikler için yapýlanmýþ durumdayýz.
303                 PostgreSQL'i MySQL ile karþýlaþtýran þu web sitesine bakabilirsiniz:
304                 <i><a href="http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</a></i></p>
305                 <p>Güvenilirlik:</p>
306                 <p><i>DBMS</i>'lerin güvenilir olmasý gerketiði, yoksa deðerleri olmayacaðýný düþünüyoruz.
307                 Çok iyi test edilmiþ, dengeli çalýsan minimum sayýda hata içeren kod sunmaya çalýþýyoruz.
308                 Her bir sürüm en az 1 aylýk beta testlerinden geçirilmektedir. Sürüm geçmiþine bakarsanýz,
309                 üretime hazýr, dengeli ve kararlý kodlar sunduðumuzu görebilirsiniz. Bu alanda, diðer 
310                 veritabaný yazýlýmlarýna üstünlüðümüz olduðuna inanmaktayýz.</p>
311                 <p>Destek:</p>
312                 <p>E-posta listemiz, oluþan herhangi bir sorunu çözebilecek büyük sayýda kullanýcý
313                 ve geliþtirici grubunu içerir. Sorununuz için, en az bir ticari veritabaný kadar
314                 rahat çözüm bulabilirsiniz. Gelistiricilere, kullanýcý grubuna, belgelere ve
315                 kaynak koda direk olarak eriþebilme, PostgreSQL desteðini, diðer <i>DBMS</i>'lere
316                 göre daha önemli kýlar. Gereksinimi olanlara, ticari destek verilebilir.
317                 (Destek için 1.6 bölümüne bakýnýz.)</p>
318                 <p>Fiyat:</p>
319                 <p>Ticari ve ticari olmayan tüm kullanýmlarýnýz için PostgreSQL ücretsizdir. Kodumuzu,
320                 yukarýda belirtilen BSD-stili lisanstaki sýnýrlamalar hariç, ürününüzün içine
321                 ekleyebilirsiniz.</p>
322                 
323                 <h4><a name="1.15">1.15</a>) PostgreSQL'e maddi açýdan nasýl destek olabilirim?</h4>
324                 <p>PostgreSQL, 1996 yýlýndan beri 1. sýnýf altyapýya sahiptir. Bunun için, yýllar
325                 boyu çalýþýp bu altyapýyý oluþturup yöneten Marc Fournier'e teþekkürler.</p>
326                 <p>Bir açýk kaynak kodlu proje için, kaliteli altyapý çok önemlidir. Bu altyapý,
327                 projenin kesilmesini önler ve projenin ilerlemesini hýzlandýrýr.</p>
328                 <p>Tabii ki bu altyapý ucuz deðildir. Ýþlerin yürümesi için çeþitli yýlýk ve anlýk 
329                 harcamalarýmýz olmaktadýr. Eðer siz ya da þirketinizin bu çabamýza baðýþta
330                 bulunabilecek parasý varsa, lütfen
331                 <i><a href="http://store.pgsql.com/">http://store.pgsql.com/</a></i>
332                 adresine gidiniz ve baðýþta, hibede bulununuz.</p>
333                 <p>Web sayfasýnýn 'PostgreSQL Inc.' den bahsetmesine raðmen, "katkýda bulunanlar" 
334                 (<i>contributors</i>) maddesi sadece PostgreSQL projesini desteklemek içindir ve
335                 belirli bir þirketin para kaynaðý deðildir. isterseniz, baðlantý adresine bir
336                 çek gönderebilirsiniz.</p>
337                 
338                 <hr>
339                 
340         <h2 align="center">Kullanýcý/Ýstemci Sorularý</h2>
341                 
342                 <h4><a name="2.1">2.1</a>) PostgreSQL icin ODBC sürücüleri var mý?</h4>
343                 <p>iki tane ODBC sürücüsü bulunmaktadýr:  PsqlODBC ve OpenLink ODBC.</p>
344                 <p>PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden 
345                 indirebilirsiniz.</p>
346                 <p>OpenLink ODBC http://www.openlinksw.com adresinden alýnabilir.Bu sürücü,
347                 kendi standart ODBC istemci yazýlýmý ile çalýstýðýndan, destekledikleri 
348                 her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.</p>
349                 <p>Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. 
350                 Sorularýnýzý lütfen postgres95@openlink.co.uk adresine gönderiniz.</p>
351                 
352                 <h4><a name="2.2">2.2</a>) PostgreSQL'i web sayfalarýnda kullanabilmek için hangi
353                 araçlar bulunmaktadýr?</h4>
354                 <p><i><a href="http://www.webreview.com/">http://www.webreview.com/</a></i> adresinde,
355                 arka planda veritabaný çalýstýran Web sayfalarý için giriþ seviyesinde bilgi bulunmaktadýr.</p>
356                 <p>Web ile bütünleþme için, PHP (<i><a href="http://www.php.net/"></a></i>)
357                 mükemmel bir arabirim sunar.<p>
358                 <p>Karmaþýk sorunlar için, çoðu kisi Perl arabirimini ve CGI.pm ya da mod_perl kullanýr.</p>
359                 
360                 <h4><a name="2.3">2.3</a>) PostgreSQL'in grafik kullanýcý arabirimi var mýdýr?</h4>
361                 <p>Çeþitli grafik arabirimlerimiz bulunmaktadýr. Bunlarýn arasýnda,
362                 PgAccess (<i><a href="http://www.pgaccess.org/">http://www.pgaccess.org/</a></i>),
363                 PgAdmin II (<i><a href="http://www.pgadmin.org/">http://www.pgadmin.org/</a></i>, sadece Win32 için),
364                 RHDB Admin (<i><a href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</a></i>)
365                 ve Rekall (<i><a href="http://www.thekompany.com/products/rekall/">http://www.thekompany.com/products/rekall/</a></i>)
366                 bulunmaktadýr. Ayrýca, PostgreSQL için web tabanlý bir arabirim olan
367                 PHPPgAdmin (<i><a href="http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/</a></i>) bulunmaktadýr.</p>
368                 <p>Daha ayrýntýlý liste için
369                 <i><a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a></i>
370                 adresine bakabilirsiniz.</p>
371                 
372                 <h4><a name="2.4">2.4</a>) PostgreSQL ile iletiþimi kurabilmek için hangi dilleri kullanabilirim?</h4>
373                 <ul><li>C (libpq)</li>
374                 <li>Embedded C (ecpg)</li>
375                 <li>Java (jdbc)</li>
376                 <li>Python (PyGreSQL)</li>
377                 <li>TCL (libpgtcl)</li></ul>
378                 <p>Diðerleri için, http://gborg.postgresql.org adresindeki Drivers/Interfaces bölümüne 
379                 bakabilirsiniz.</p>
380                 
381                 <hr>
382                 
383         <h2 align="center">Yönetimsel Sorular</h2>
384                 
385                 <h4><a name="3.1">3.1</a>) PostgreSQL'i, <code>/usr/local/pgsql</code> dizininden
386                 baþka dizinlere nasýl kurabilirim?</h4>
387                 <p><i>configure</i> betiðini çalýstýrýrken, <code>--prefix</code> seçeneðini veriniz.</p>
388                 
389                 <h4><a name="3.2">3.2</a>) postmaster'i baslattýgýmda, a Bad System Call ya da core dumped mesajý alýyorum. Neden?</h4>
390                 <p>Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, çekirdeginize
391                 System V uzantýlarýnýn kurulu olup olmadýgýný kontrol etmek olabilir. PostgreSQL 
392                 shared memory ve semaphores için çekirdek destegine gereksinim duyar.</p>
393                 
394                 <h4><a name="3.3">3.3</a>) postmaster'i baþlattýðýmda, <code>ýpcMemoryCreate</code>
395                 hatasý alýyorum. Neden?</h4>
396                 <p>Ya çekirdeðinizde <i>shared memory</i> desteðiniz düzgünce yapýlandýrýlmamýþtýr,
397                 ya da çekirdeðinizdeki mevcut <i>shared memory</i> miktarýný büyütmeniz gerekecektir.
398                 Gereksinim duyacaðýnýz miktar, mimarinize ve postmaster için ayarladýgýnýz tampon
399                 ile <i>backend</i> iþlemi sayýsýna baðlýdýr. Tüm sistemler için, tamponlar ve
400                 iþlemlerde öntanýmlý sayýlarla, ~ 1MB kadar yere gereksinmeniz olacaktýr.
401                 <i><a href="http://www.postgresql.com/docs/7.3/interactive/admin.html">PostgreSQL
402                 7.3.2 Sistem Yöneticileri Rehberi</a></i>'ne, <i>shared memory</i> ve <i>semaphorelar</i>
403                 hakkýndaki ayrýntýlý bilgi için bakabilirsiniz.</p>
404                 
405                 <h4><a name="3.3">3.4</a>) postmaster'ý baþlattýðýmda,
406                 <code>ýpcSemaphoreCreate</code> hatasý alýyorum. Neden?</h4>
407                 <p>Eðer hata, "<code>ýpcSemaphoreCreate: semget failed (No space left on device)</code>"
408                 ise, çekirdeðiniz yeterli <i>semaphore</i> ile yapýlandýrýlmamýþ demektir. Postgres, her 
409                 bir potansiyel <i>backend</i> için bir <i>semaphore</i> gereksinimi duyar. Geçici
410                 bir çözüm, postmasterý <i>backend</i> iþlemleri için daha az miktarda sýnýrla
411                 baþlatmak olabilir. <code>-N</code>'i varsayýlan deðer olan 32'den küçük bir
412                 deðerle baþlatýnýz. Daha kalýcý bir çözüm, çekirdeðinizin <code>SEMMNS</code> ve
413                 <code>SEMMNI</code> parametrelerini yükseltmek olacaktýr.</p>
414                 <p>Çalýþmayan <i>semaphore</i>'lar aðýr veritabaný iþlemlerinde çökme yaratabilirler.</p>
415                 <p>Eðer hata mesajýnýz baþka bir þey ise, çekirdeðinizde <i>semaphore</i> desteðini 
416                 yapýlandýrmamýþ olabilirsiniz. <i>Shared memory</i> ve <i>semaphore</i>'lar hakkýndaki
417                 daha ayrýntýlý bilgi için
418                 <i><a href="http://www.postgresql.com/docs/7.3/interactive/admin.html">PostgreSQL
419                 7.3.2 Sistem Yöneticileri Rehberi</a></i>'ne bakabilirsiniz.</p>
420                 
421                 
422                 <h4><a name="3.5">3.5</a>) Diger bilgisayarlarýn benim PostgreSQL veritabaný
423                 sunucuma baðlantýlarýný nasýl kontrol edebilirim?</h4>
424                 <p>Ön tanýmlý olarak, PostgreSQL sadece yerel makineden <i>Unix domain sockets</i>
425                 kullanarak baðlanýlmasýna izin verir. Diger makineler, postmaster'a <code>-i</code>
426                 etiketini geçirmezseniz ve <code>$PGDATA/pg_hba.conf</code> dosyasýný düzenleyerek
427                 <i>host-based authentication</i>'a  olanak vermezseniz, baðlantý yapamayacaklardýr.</p>
428                 
429                 <h4><a name="3.6">3.6</a>) Veritabani motorunu daha iyi
430                 baþarým için nasýl ayarlayabilirim?</h4>
431                 <p><i>Index</i>'ler sorgularý hýzlandýrabilir. <code>EXPLAIN</code> komutu,
432                 PostgreSQL'in sorgunuzu nasýl yorumladýðýný ve hangi <i>index</i>'leri kullandýðýný
433                 görmenize izin verir.</p>
434                 <p>Eðer cok fazla <code>INSERT</code> iþlemi yapýyorsanýz, bunlarý büyük bir
435                 toplu iþlem dosyasýkullanýp <code>COPY</code> komutu ile veritabanýna girmeyi
436                 deneyiniz. Bu, tekil <code>INSERT</code>'lerden daha hýzlýdýr. Ýkinci olarak,
437                 <code>BEGIN WORK/COMMIT</code> <i>transaction</i> bloðu içinde olmayan ifadeler kendi 
438                 <i>transaction</i>'larýndaymýþ gibi düþünülür. Çoklu ifadeleri tek bir
439                 <i>transaction</i> bloðu içinde yapabilirsiniz. Bu, <i>transaction overhead</i>'ini
440                 düþürecektir. Tek bir <i>transaction</i> bloðu içinde birden çok ifadeyi çalýþtýrmayý 
441                 deneyebilirsiniz. Bu da ayný þekilde, <i>transaction overhead</i>'ini düþürür.</p>
442                 <p>Çeþitli ayarlama seçenekleri mevcuttur. <code>fsync()</code> iþlemini, postmaster'ý
443                 <code>-o -F</code> seçeneði ile baþlatarak devre dýþý býrakabilirsiniz. Bu iþlem,
444                 <code>fsync()</code>'lerin her <i>transactiondan</i> sonra diski <i>flush</i> etmesini
445                 engelleyecektir.</p>
446                 <p>Ayný zamanda, postmaster'i <code>-B</code> seçeneði ile baþlatýp, <i>backend</i>
447                 iþlemleri tarafýndan kullanýlan <i>shared memory buffers</i> sayýlarýný arttýrabilirsiniz.
448                 Eðer bu parametreyi çok yüksek tutarsanýz, çekirdeðinizin <i>shared memory</i>
449                 bölgesindeki limiti aþma olasýlýðýnýz yüzünden postmaster baþlayamayabilir. Her bir
450                 tampon (<i>buffer</i>) 8K'dýr. Öntanýmlý sayý ise 64 tampondur.</p>
451                 <p>Ayný þekilde, backend'in <code>-S</code> seçeneðini geçici sýralamalar için
452                 <i>backend</i> süreçleri tarafýndan kullanýlacak hafýzayý arttýrmak amacýyla
453                 kullanabilirsiniz. <code>-S</code> seçeneði kilobayt cinsinden deðer alýr ve ön
454                 tanýmlý deðeri 512'dir (512 K)</p>
455                 <p>Tablolardaki veriyi bir <i>index</i>'e eþlemek amacýyla gruplama için
456                 <code>CLUSTER</code> komutunu kullanabilirsiniz. Ayrýntýlý bilgi için
457                 <code>CLUSTER</code> komutunun yardým sayfasýna bakabilirsiniz.</p>
458                 
459                 <h4><a name="3.7">3.7</a>) Hangi hata ayýklama özellikleri bulunmaktadýr?</h4>
460                 <p>PostgreSQL, hata ayýklama amacýyla kullanýlabilecek durum bilgisi
461                 rapor eden çeþitli özeliklere sahiptir.</p>
462                 <p>Öncelikle, <i>configure</i> betiðini <code>--enable-cassert</code> seçeneðiyle
463                 çalýþtýrýrsanýz, bir çok <code>assert() backend</code> calýþmasýný gözlemler ve
464                 beklenmeyen bir durumda programý durdurur.</p>
465                 <p>Postmaster ve postgres çeþitli hata ayýklama seçeneklerine sahiptir. Öncelikle,
466                 postmaster'ý baþlattýðýnýzda, standart çýktýyý ve hatalarý bir log dosyasýna 
467                 yönlendirdiðinize emin olun:</p>
468                 <pre>cd /usr/local/pgsql<br>./bin/postmaster >server.log 2>&1 &</pre>
469                 <p>Bu iþlem PostgreSQL ana dizinine <code>server.log</code> dosyasý yerleþtirecektir.
470                 Bu dosya sunucunun yaþadýðý sorunlar ya da hatalar hakkýnda yararlý bilgiler içerir.
471                 <code>-d</code> seçeneði, hata ayýklama seviyesini belirten bir rakam ile kullanýlýr.
472                 Yüksek hata ayýklama seviyelerinin büyük log dosyalarý oluþturacaðýný unutmayýnýz.</p>
473                 <p>Eðer postmaster çalýþmýyorsa, <code>postgres backend</code>'ini komut satýrýndan
474                 çalýþtýrabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece hata ayýklama
475                 amacýyla önerilir. Burada, noktalý virgülün deðil de yeni bir satýrýn sorguyu
476                 sonlandýrdýðýný unutmayýnýz. Eðer hata ayýklama sembolleri ile derlediyseniz,
477                 ne olduðunu görmek için bir hata ayýklayýcý kullanabilirsiniz. <i>backend</i>
478                 postmaster'dan baþlatýlmadýðýndan, eþdeðer bir ortamda çalýþmamaktadýr ve
479                 <i>locking/backend</i> etkileþim sorunlarý artabilir.</p>
480                 <p>Eðer postmaster çalýþýyorsa, bir pencerede psql'i çalýþtýrýn ve psql tarafýndan
481                 kullanýlan postgres sürecinin süreç numarasýný (<code>PID</code>) bulun. Postgres
482                 süreci ile iliþkilendirmek için bir hata ayýklarýcý kullanýn. Sorgularý psql aracýlýðý
483                 ile çalýþtýrabilirsiniz. Eðer postgres baþlangýcýnda hata ayýklamak istiyorsanýz,
484                 <code>PGOPTIONS="-W n"</code> seçeneðini ayarlayabilir ve psql'i baþlatabilirsiniz.
485                 Bu iþlem, baþlangýcýn <code>n</code> saniye kadar gecikmesini saðlayacaktýr; böylece
486                 hata ayýklayýcýyý sürece iliþkilendirdikten sonra baþlangýç sürecinin devam etmesini 
487                 saðlayabilirsiniz.</p>
488                 <p>postgres programý hata ayýklama ve baþarým ölçümleri için <code>-s</code>,
489                 <code>-A</code> ve <code>-t</code> seçeneklerine sahiptir.</p>
490                 
491                 <h4><a name="3.8">3.8</a>) Baðlanmaya çalýþýrken, neden "<i>Sorry, too many
492                 clients</i>" hatasýný alýyorum?</h4>
493                 <p>Postmaster'ýn  eþzamanlý olarak baþlatabileceði <i>backend</i> süreçleri
494                 sýnýrlarýný arttýrmanýz gerekmektedir.</p>
495                 <p>Ön tanýmlý deðer 32 süreçtir. Bunu, postmaster'ý uygun <code>-N</code>
496                 deðeri ile ya da <code>postgresql.conf</code> dosyasýný düzenleyerek yeniden
497                 baþlatmakla arttýrabilirsiniz.</p>
498                 <p>Eðer <code>-N</code> deðerini 32'den büyük yapacaksanýz, ayný zamanda
499                 <code>-B</code> deðerini de deðiþtirmeniz gerektiðini unutmayýn. </code>-B</code>,
500                 <code>-N</code>'nin en az 2 katý kadar olmalýdýr; daha iyi baþarým için bu sayýyý daha
501                 da arttýrmalýsýnýz. Yüksek sayýdaki <i>backend</i> süreçleri için, çeþitli çekirdek
502                 yapýlandýrma parametrelerini arttýrmanýz gerekecektir. Yapýlmasý gerekenler,
503                 <code>SHMMAX</code>, <code>SEMMNS</code>, <code>SEMMNI</code>, <code>NPROC</code>,
504                 <code>MAXUPRC</code> ve açýlabilecek dosyalarýn maksimum sayýsý olan <code>NFILE</code>
505                 ve <code>NINODE</code> deðerlerini karýþtýrmaktýr. Bunun nedeni, PostgreSQL'in izin
506                 verilen <i>backend</i> süreçlerinin sayýsý üzerinde bir sýnýrý olmasýdýr. Böylelikle
507                 sistem kaynaklarýnýn dýþýna çýkýlmayacaktýr.</p>
508                 <p>PostgreSQL'in 6.5 sürümüne kadar, en fazla <i>backend</i> sayýsý 64 idi ve bunu
509                 deðiþtirmek için <code>include/storage/sinvaladt.h</code> dosyasý içindeki
510                 <code>MaxBAckendid</code> sabitini deðiþtirdek sonra yazýlýmý yeniden
511                 derlemek gerekiyordu.</p>
512                 
513                 <h4><a name="3.9">3.9</a>) <code>pgsql_tmp</code> dizinin içindeki dosyalar nelerdir?</h4>
514                 <p>Sorgu çalýstýrýcý (<i>query executer</i>) tarafýndan yaratýlan geçici dosyalardýr.
515                 Örnegin, bir sýralama <code>ORDER BY</code> ile yapýlacaksa ve sýralama
516                 <code>backend</code>'in <code>-s</code> parametresinin izin verdiðinden daha
517                 fazla alana gereksinim duyuyorsa, ekstra veriyi tutmak için geçici dosyalar yaratýlýr.</p>
518                 <p>Geçici dosyalar, eðer sýralama sýrasýnda <i>backend</i> göçmezse otomatik olarak
519                 silinecektir. Eðer çalýþan durumda bir <i>backend</i>'iniz yoksa,
520                 <code>pg_tempNNN.NN</code> dosyalarýný silmeniz güvenlidir.</p>
521                 
522                 <h4><a name="3.10">3.10</a>) PostgreSQL sürümlerini yükseltmek için neden bir
523                 dump/reload iþlemi gerçekleþtirmek zorundayým?</h4>
524                 <p>PostgreSQL takýmý ara sürümlerde sadece küçük deðiþiklikler yapmaktadýr;
525                 bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek <i>dump/restore</i> iþlemi
526                 gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e) çoðunlukla sistem
527                 tablolarýnýn ve veri dosyalarýnýn iç yapýsý deðiþtirilir. Bu deðiþiklikler çoðunlukla
528                 karmaþýktýr; dolayýsýyla veri dosyalarýnýn geriye dönük uyumluluðu iþlemlerini
529                 yapmýyoruz. <i>Dump</i> iþlemi, veriyi genel biçimde alacaðýndan yeniden yükleme
530                 esnasýnda veri, yeni iç biçime uygun þekilde yerleþtirilecektir.</p>
531                 <p>Disk biçiminin deðiþmediði sürümlerde, <code>pg_upgrade</code> betiði güncellemenin
532                 bir <i>dump/restore</i> gerektirmeden yapýlmasýný saðlayacaktýr. <i>pg_upgrade</i>
533                 betiðinin o sürüm için bulunup bulunmadýðýný sürüm notlarý içinde bulabilirsiniz.</p>
534
535                 <h4><a name="3.11">3.11</a>) Nasýl bir donaným kullanmalýyým? </h4>
536                 <p> PC donanýmý tamamen uyumlu olduðu için, insanlar tüm PC donanýmlarýnýn ayný kalitede olduðunu 
537                 düþünürler. Oysa böyle deðildir. ECC RAM, SCSI ve kaliteli anakartlar daha ucuz donanýmlara göre daha 
538                 çok güvenilirlerdir ve baþarýmlarý daha yüksektir. PostgreSQL hemen hemen tüm donanýmda 
539                 çalýþabilmektedir, ancak güvenilirlik ve baþarým önemli ise donaným seçeneklerini çok iyi araþtýrmak 
540                 gereklidir. E-posta listelerimi donanýmlarla ilgili sorular ve de ticaret için kullanýlabilir.</p>
541
542                 <hr>
543                 
544         <h2 align="center">Ýþletimsel Sorular</h2>
545         
546                 <h4><a name="4.1">4.1</a>) <i>Binary cursor</i> ve <i>normal cursor</i>
547                 arasýndaki fark nedir?</h4>
548                 <p><code>DECLARE</code> yardým sayfasýna bakýnýz.</p>
549                 
550                 <h4><a name="4.2">4.2</a>) Sorgunun sadece ilk birkaç satýrýný
551                 nasýl <code>SELECT</code> edebilirim?</h4>
552                 <p><code>FETCH</code> yardým sayfasýna bakýnýz, ya da <code>SELECT</code> ...
553                 <code>LIMIT</code> ... kullanýnýz.</p>
554                 <p>Ýlk birkaç satýrý almak isteseniz bile, tüm sorgu deðerlendirilmek durumunda kalýnabilir. ORDER 
555                 BY içeren bir sorgu düþünün. Eðer ORDER BY iþe eþleþen bir index varsa, PostgreSQL istenen ilk birkaç  
556                 satýrý iþleyebilir, ya da tüm sorgu istenen satýrlar üretilene kadar iþlenebilir. </b></p>
557                 
558                 <h4><a name="4.3">4.3</a>) psql'in içinde gördügüm tablolarýn ya da diðer
559                 þeylerin listesini nasýl alabilirim?</h4>
560                 <p><code>pgsql/src/bin/psql/describe.c</code> içindeki psql kaynak kodunu
561                 okuyabilirsiniz. Bu kod, psql'in <code>\</code> ile baþlayan komutlarýnýn
562                 çýktýsýný olusturan SQL komutlarýný içerir. Ayný zamanda, psql'i <code>-E</code>
563                 seçeneði ile baþlatýp, verdiðiniz komutlarý çalýþtýrmak için yaptýðý 
564                 sorgularýn çýktýlarýný görebilirsiniz.</p>
565                 
566                 <h4><a name="4.4">4.4</a>) Bir tablodan bir kolonu nasýl kaldýrabilirim?</h4>
567                 <p>Bu özellik (<code>ALTER TABLE DROP COLUMN</code>) 7.3 sürümü ile gelmiþtir.
568                 Eski sürümlerde aþaðýdakileri uygulamalýsýnýz: </p>
569                 <pre>
570 BEGIN;
571 LOCK TABLE old_table;
572 SELECT ...  -- select all columns but the one you want to remove
573 INTO TABLE new_table
574 FROM old_table;
575 DROP TABLE old_table;
576 ALTER TABLE new_table RENAME TO old_table;
577 COMMIT;         
578                 </pre>
579                 
580                 <h4><a name="4.5">4.5</a>) Bir satýr, tablo ve veritabaný için en
581                 fazla büyüklük nedir?</h4>
582                 <p>Sýnýrlar:</p>
583                 <p>Veritabaný için en fazla büyüklük nedir?<br>Sýnýrsýz (32 TB'lýk veritabaný bulunmaktadýr)<br><br>
584                 Bir tablo için en fazla büyüklük nedir?<br>32 TB<br><br>
585                 Bir satýr için en fazla büyüklük nedir?<br>1.6 TB<br><br>
586                 Bir alan için en fazla büyüklük nedir?<br>1 GB<br><br>
587                 Tabloda en fazla satýr sayýsý kaçtýr?<br>Sýnýrsýz<br><br>
588                 Bir tabloda olabilecek en fazla kolon sayýsý kaçtýr?<br>Kolon tiplerine baðlý olarak 250-1600<br><br>
589                 Bir tabloda olabilecek en fazla <i>index</i> sayýsý kaçtýr?<br>Sýnýrsýz</p>
590                 <p>Tabii ki bunlar aslýnda sýnýrsýz degildir. Burada belirtilen sýnýrlar, fiziksel
591                 sýnýrlarýn haricindeki sýnýrlardýr. Boþ disk alaný, hafýza/takas alaný na baðlý 
592                 sýnýrlamalar vardýr. Baþarým, sýnýr deðerlere yaklaþtýkça, ya da deðerler çok büyük 
593                 olduðunda düþebilir.</p>
594                 <p>Bir tablo için büyüklük sýnýrý olan 32 TB, iþletim sisteminin büyük dosya desteði olup
595                 olmamasýndan baðýmsýzdýr. Büyük tablolar, 1 GB'lik dosyalarda saklandýðý için, dosya 
596                 sistemi sýnýrlarýnin bir önemi yoktur.</p>
597                 <p>Tablo ve kolon sayýsý büyüklükleri, ön tanýmlý blok büyüklüðü 32k ya çýkarýlarak 
598                 arttýrýlabilir.</p>
599                 
600                 <h4><a name="4.6">4.6</a>) Tipik bir metin dosyasýndaki veriyi saklamak için ne
601                 kadar disk alaný gereklidir?</h4>
602                 <p>Bir PostgreSQL veritabaný, veriyi "<i>flat</i>" metin dosyasýnda saklamak için
603                 gereken alanýn 5 kat fazla disk alanýna gereksinim duyabilir.</p>
604                 <p>Her satýrýnda bir tamsayý ve metin (<i>text</i>) içeren, 100.000 satýrlýk bir
605                 dosya düþünün.  Her satýrýn ortalama 20 byte olduðunu farzedelim. Metin dosyasý
606                 2.8 MB olacaktýr. Bu veriyi tutan PostgreSQL veritabaný
607                 yaklaþýk 6.4 MB yer kaplayacaktýr.</p>
608                 <pre>
609   36 byte: Her bir satýr baþlýðý (yaklaþýk)
610 + 24 byte: Bir tamsayý (int) alaný ve bir metin (text) alaný 
611 +  4 byte: Sayfada tuple a pointer
612 ----------------------------------------
613   64 byte -> kayýt baþýna</pre>
614                 <p>PostgreSQL'de veri sayfasý (data page) büyüklüðü 8192 byte (8k)dýr, dolayýsýyla:</p>
615                 <pre>
616 8192 byte -> page baþýna
617 -------------------------  =  Her bir veritabaný <i>page</i>'ý baþýna 128 satýr (yaklaþýk)
618   Satýr baþýna 64 byte
619   
620 100000 veri satýrý
621 --------------------  =  782 veritabaný sayfasý
622      128 satýr</pre>
623                 <p>782 veritabaný sayfasý <code>*</code> sayfa baþýna <code>8192 byte =
624                 6,406,144 bytes (6.4 MB)</code></p>
625                 <p><i>Index</i>'ler çok fazla yere gereksinim duymazlar, ama <i>index</i>'lenmiþ
626                 veriyi tutacaklarýndan büyük olabilirler.</p>
627                 <p><code>NULL</code> deðerler bitmapler içinde tutulur; dolayýsýyla çok az yer kaplarlar.</p>
628                 
629                 <h4><a name="4.7">4.7</a>) Veritabanýnda hangi tablo ya da <i>index</i>'lerin
630                 tanýmlandýðýný nasýl görebilirim?</h4>
631                 <p>psql, bu tür bilgileri göstermek için, <code>\</code> ile baþlayan bir çok
632                 komut sunmaktadýr. <code>\?</code> komutu ile bu komutlarý görebilirsiniz. Ayrýca,
633                 bunlarý açýklayan ve <code>pg_</code> ile baþlayan çok sayýda sistem tablosu
634                 bulunmaktadýr. Ayný zamanda, <code>psql -l</code> ile tüm veritabanlarýný
635                 listeyelebirsiniz.</p>
636                 <p>Ayrýca, <code>pgsql/src/tutorial/syscat.source</code> kodunu inceleyebilirsiniz.
637                 Bu dosya, veritabaný sistem dosyalarýndan bilgiyi almak için gereksinim duyulan
638                 bir çok <code>SELECT</code>'leri gösterir.</p>
639                 
640                 <h4><a name="4.8">4.8</a>) Sorgularým cok yavaþ, ya da <i>index</i>'lerimi
641                 kullanmýyorlar. Neden?</h4>
642                 <p>Indexler her sorgu tarafýndan otomatik olarak kullanýlmazlar. Indexler eðer bir 
643                 tablonun büyüklüðü minimum bir büyüklükten fazla ise ve sorgu tablodaki satýrlarýn sadece küçük bir 
644                 yüzdesini seçiyorsa kullanýlýr. Bunun nedeni, index eriþiminin neden olduðu raslansal disk eriþimi
645                 nin diskin ya da tablonun sýralý okunmasýndan daha yavas olabilmesidir.</p>
646
647                 <p>Bir index'in kullanýlýp kullanýlmayacaðýný belirlemek için, PostgreSQL tablo hakkýndaki 
648                 istatistiklere gereksinmesi vardýr. Bu istatistikler, <small>VACUUM ANALYZE</small> kullanýlarak
649                 toplanýrlar. Optimizer, istatistikleri kullanarak, tabloda kaç satýr olduðunu ve bilir ve indexin 
650                 kullanýlýp kullanýlmayacaðýna daha iyi karar verir. Istatistikler, ayný zamanda en uygun join 
651                 sýrasýný ve yöntemini belirlemekte çok önemlidir. Ýstatistik toplanmasý, tablo içerikleri 
652                 deðiþtikçe periyodik olarak yapýlmalýdýr.</p>
653                 
654
655     <p>Indexler normalde <small>ORDER BY</small> sorgularý ya da join iþlemlerini gerçekleþtirmek için
656     kullanýlmazlar. Açýk bir sýralamayý takip eden sýralý bir arama (sequential scan), büyük bir tabloda index
657     aramasý yapmaktan genelde daha hýzlýdýr.</p>
658
659     Ancak, <small>ORDER BY</small> ile birleþmiþ <small>LIMIT</small>
660     genellikle bir index kullanacaktýr; çünkü tablonun sadece belirli bir miktarý döndürülecektir.
661     Aslýnda, MAX() ve MIN() fonksiyonlarýnýn index kullanmamalarýndan dolayý, bu gibi deðerleri ORDER BY ve LIMIT 
662     kullanarak da almak olasýdýr:
663 <pre>
664     SELECT col
665     FROM tab
666     ORDER BY col [ DESC ]
667     LIMIT 1;
668 </pre>
669
670     <p>Eðer optimizer'ýn sýralý arama yapmasýnýn yanlýþ olduðuna inanýyorsanýz, <code>SET enable_seqscan TO 
671 'off'</code> kullanýn ve index kullanan aramalarýn hala daha hýzlý olup olmadýðýný görün.</p>
672
673                 <p><code>LIKE</code> ya da <code>~</code> gibi operatörler kullanýyorsanýz,
674                 <i>index</i>'ler sadece aþaðýdaki koþullarda kullanýlabilir:</p>
675
676                 <ul>
677                 <li>Arama dizininin baþý, dizinin baþý ile baðlanmalýdýr. Yani,
678                 <ul><li><code>LIKE</code> sorgularý <code>%</code> ile baþlamamalýdýr.</li>
679                 <li>Düzenli ifade sorgularý <code>^</code> iþe baþlamamalýdýr.</li></ul></li>
680                 <li>Arama metni bir karakter sýnýfý ile baþlayamaz. Örnek: <code>[a-e]</code></li>
681                 <li><code>ILIKE</code> ve <code>~*</code> gibi  büyük/küçük harfe duyarsýz
682                 aramalar <i>index</i>'lerden yararlanmazlar. Onun yerine, bölüm 4.12'de anlatýlan
683                 fonksiyonel <i>index</i>'leri kullanabilirsiniz.</li>
684                 <li><i>initdb</i> sýrasýnda öntanýmlý <i>C locale</i>'i kullanýlmalýdýr.</li>
685                 </ul>
686                 
687                 <h4><a name="4.9">4.9</a>) <i>query-optimizer</i>'ýn sorgularýmý nasýl
688                 deðerlendirdiðini, iþleme soktuðunu nasýl görebilirim?</h4>
689                 <p><code>EXPLAIN</code> yardým sayfasýna bakýnýz.</p>
690                 
691                 <h4><a name="4.10">4.10</a>) <i>R-tree index</i> nedir?</h4>
692                 <p>R-tree index, uzaysal (spatial) verileri indexlemek için kullanýlýr. Bir hash
693                 index, dizi aramalarýnda (range search) kullanýlamaz. B-tree index dizi aramalarýnda sadece tek 
694                 boyutlu çalýþmaktadýr. R-tree, çok boyutlu veriyi destekler. Örneðin, eðer bir R-tree index point 
695                 veri tipi üzerinde inþa edililebilirse, sistem "select all points within a bounding rectangle"
696                 gibi sorgulara daha verimli yanýtlar verecektir.</p>
697                 <p>Orijinal R-tree tasarýmýný açýklayan belge:</p>
698                 <p>Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching."
699                 Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.</p>
700                 <p>Bu belgeyi, Stonebraker'ýn "Readings in Database Systems" kitabýnda bulabilirsiniz.</p>
701                 <p>Gömülü R-tree indexleri poligon ve boxlarý kullanabilir. Teorik olarak,
702                 R-tree indexlerin özelliklerini geniþletmek bir miktar çaba gerektirir ve bunun nasýl 
703                 yapýlacaðýna dair bir belgemiz henüz bulunmamaktadýr.</p>
704
705                 <h4><a name="4.11">4.11</a>) <i>Genetic Query Optimizer</i> nedir?</h4>
706                 <p><i>GEQO</i> modülü, <i>Genetic Algorithm(GA)</i> kullanýlarak tablolar
707                 birleþtirildiðinde sorgu optimizasyonunu hýzlandýrýr. </p>
708                 
709                 <h4><a name="4.12">4.12</a>) Düzenli ifade (<i>Regular Expression</i>) aramalarýný
710                 ve büyük/küçük harfe duyarsýz aramalarý nasýl yapabilirim?
711                 Bu büyük(küçük harfe duyarlý aramalar için <i>index</i>'i nasýl kullanabilirim?</h4>
712                 <p><code>~</code> operatörü düzenli ifade eþleþmesi ve <code>~*</code>  büyük/küçük
713                 harfe duyarsýz düzenli ifade eþleþmesi yapar. Büyük/küçük harfe duyarlý olan
714                 <code>LIKE</code>'ýn  büyük/küçük harfe duyarsýz olan biçimi <code>ILIKE</code>'týr
715                 ve PostgreSQL 7.1 sürümü ile birlikte gelmiþtir.</p>
716                 <p>Büyük-küçük harfe duyarsýz eþitlik karþýlaþtýrmalarý aþaðýdaki gibi ifade edilir:</p>
717                 <pre>
718 SELECT *
719 FROM tab
720 WHERE lower(col) = 'abc'
721                 </pre>
722                 <p>Bu standart bir <i>index</i> yaratmayacaktýr. Ancak eðer fonksiyonel bir
723                 <i>index</i> yaratýrsanýz; o kullanýlacaktýr:</p>
724                 <pre>CREATE INDEX tabindex on tab (lower(col));</pre>
725                 
726                 <h4><a name="4.13">4.13</a>) Bir sorguda, bir alanin "<code>NULL</code>" olduðunu
727                 nasýl ortaya çýkarabilirim?</h4>
728                 <p>Kolonu, <code>IS NULL</code> ve <code>IS NOT NULL</code> ile test edebilirsiniz.</p>
729                 
730                 <h4><a name="4.14">4.14</a>) Çesitli karakter tipleri arasýndaki farklar nelerdir?</h4>
731                 <pre>
732 Veri Tipi           Ýç Adý              Not
733 --------------------------------------------------
734 VARCHAR(n)      varchar         boyut en büyük uzunluðu verir; sadece verilen kadar veri tutulur.
735 CHAR(n)         bpchar          belirtilen uzunluða kadar sonuna  boþluk eklenir.
736 TEXT            text            uzunlukta herhangi bir üst sýnýr yoktur. 
737 BYTEA           bytea           variable-length byte array (null-byte safe)
738 "char"          char            bir karakter 
739                 </pre>
740                 <p>Ýç adlarý (<i>internal name</i>) sistem kataloglarýný ve
741                 bazý hata mesajlarýný incelerken göreceksiniz.</p>
742                 <p>Ýlk dört veri tipi "<i>varlena</i>" tipidir (yani, diskteki ilk 4 bayt uzunluktur;
743                 devamý da veridir.) Dolayýsýyla, kullanýlan gerçek alan, belirtilen alandan biraz
744                 daha büyüktür. Ancak, bu veri tipleri, sýkýþtýrýlmaya tabi tutulabilir; dolayýsýyla
745                 disk alaný beklenilenden küçük olabilir. <code>VARCHAR(<i>n</i>)</code> büyüklüðü
746                 artabilen ama en büyük uzunluðu sýnýrlý olan verileri saklamak için en uygun yöntemdir.
747                 <code>TEXT</code>, 1 GB büyüklüðe kadar olan verileri tutmak için kullanýlýr.</p>
748                 <p><code>CHAR(<i>n</i>)</code>, ayný uzunluktaki dizilerin saklanmasý için kullanýmýr.
749                 <code>CHAR(<i>n</i>)</code> belirtilen uzunluða kadar boþluk ile doldurur; ancak
750                 <code>VARCHAR(<i>n</i>)</code> sadece verilen karakterleri saklar. <code>BYTEA</code>
751                 binary veri saklamak içindir; ayrýca "<code>NULL</code>" bayt içeren deðerleri de saklar.
752                 Burada anlatýlan üç veri tipi de benzer baþarým karakteristiklere sahiptir.</p>
753                 
754                 <h4><a name="4.15.1">4.15.1</a>) Nasýl <i>serial</i>/otomatik artan
755                 (<i>auto-incrementing</i>) bir alan yaratabilirim?</h4>
756                 <p>PostgreSQL'de <code>SERIAL</code> veri tipi vardýr. Bu veri tipi bir
757                 <i>sequence</i> ve kolon üzerinde bir <i>index</i> yaratýr.</p>
758                 <p>Örnek, aþaðýdaki sorgu:</p>
759                 <pre>
760 CREATE TABLE person (
761     id   SERIAL,
762     name TEXT
763 );              
764                 </pre>
765                 <p>buna çevrilir:</p>
766                 <pre>
767 CREATE SEQUENCE person_id_seq;
768 CREATE TABLE person (
769     id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
770     name TEXT
771 );
772 CREATE UNIQUE INDEX person_id_key ON person ( id );             
773                 </pre>
774                 <p><i>Sequenceler</i> hakkýnda daha fazla bilgi için <i>create_sequence</i>
775                 yardým sayfasýna bakabilirsiniz. Her satýrýn <code>OID</code> alanýný tekil bir sayý
776                 olarak alabilirsiniz. Ancak, veritabanýnýzýn <i>dump</i>'ýný alýp yeniden yüklerseniz,
777                 <code>OID</code> deðerlerini koruyabilmek için <code>pg_dump</code>'ýn <code>-o</code>
778                 parametresini ya da "<code>COPY WITH OIDS</code>" seçeneðini kullanmanýz gerekecektir.</p>
779
780         <h4><a name="4.15.2">4.15.2</a>) <code>SERIAL</code> giriþinin degerini nasýl alabilirim?</h4>
781                 <p>Bir yaklaþým, sequence nesnesindeki SERIAL deðerini, veriyi girmeden önce nextval() ile alýp, 
782                 aldýðýnýz deðeri kendinizin girmesidir. 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:</p>
783
784                 <pre>new_id = execute("SELECT nextval('person_id_seq')");<BR>
785     execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");</pre>
786
787         <P>Diðer sorgular için new_id'de yeni deðerin saklanmasý gerekir. Otomatik olarak yaratýlan SEQUENE nesnesinin adý,
788   <tablo adý>_<serial kolonu adý>_seq þeklinde olacaktýr (< > iþaretleri olmadan).</p>
789
790                 <p>Alternatif olarak, atanmýþ SERIAL deðerini, deðer girildikten sonra currval()
791                 fonksiyonu ile alabilirsiniz:</p>
792                 <pre>
793                 execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
794                 new_id = execute("SELECT currval('person_id_seq')");    
795                 </pre>
796                 <p>Son olarak, ön tanýmlý deðeri bulmak için <code>INSERT</code> ifadesinden
797                 dönen <code>OID</code> deðerini kullanabilirsiniz; ancak bu en az taþýnabilir
798                 çözüm olacaktýr. Perl'de, Edmund Mergl'in <i>DBD:Pg</i> mödülü ile birlikte
799                 <i>DBI</i> kullanarak, <code>OID</code> deðeri <code>$sth->execute()</code>
800                 çalýþtýrýldýktan sonra <code>$sth->(pg_oid_status)</code> ile alýnabilir.</p>
801         
802                 <h4><a name="4.15.3">4.15.3</a>) <code>currval()</code> ve <code>nextval()</code>
803                 diðer kullanýcýlara sorun yaratmaz mý?</h4>
804                 <p>Hayýr. <code>curval()</code>, tüm kullanýcýlar deðil, backend
805                 tarafýndan atanan geçerli deðeri döndürür.</p>
806                 
807                 <h4><a name="4.15.4">4.15.4</a>) Neden <i>sequence</i> sayýlarý <i>transaction</i>
808                 iþleminin iptalinden sonra yeniden kullanýlýyor? Neden <i>sequence/SERIAL</i>
809                 kolonumdaki sayýlarda atlamalar oluyor?</h4>
810                 <p>Uyumluluðu arttýrmak için, <i>sequence</i> deðerleri çalýþan
811                 <i>transaction</i>'lara gerektiði þekilde aktarýlýr ve <i>transaction</i>
812                 bitene kadar o deðer kilitlenmez. Bu, iptal edilen <i>transaction</i>
813                 iþlemleri nedeniyle boþluklara neden olur.</p>
814                 
815                 <h4><a name="4.16">4.16</a>) OID nedir? TID nedir?</h4>
816                 <p>OIDler, tekil satýr numaralarýna PostgreSQL'in yanýtýdýr. PostgreSQL'de yaratýlan
817                 her sayý, tekil bir OID alýr. initdb iþlemi sýrasýnda yaratýlan tüm OID'ler 16384'ten küçüktür 
818                 (backend/access/transam.h). Kullanýcýlar tarafýndan yaratýlan tüm OID'ler bu sayýya eþit ya da bu 
819                 sayýdan büyüktür. Varsayýlan durumda, tüm bu OIDler sadece bir tablo ya da veritabanýnda deðil, tüm 
820                 PostgreSQL kurulumunda tekildir.</p>
821
822                 <p> PostgreSQL OIDleri, tablolar arasýnda satýrlarý iliþkilendirmek için kendi iç tablolarýnda 
823                 kullanýr. Bu OIDler belirli kullanýcý satýrlarýný belirtmek için kullanabilir ve join iþlemlerinde 
824                 kullanýlýr. OID deðerlerini saklamak için OID kolon tipini kullanmanýz önerinir. Daha hýzlý bir 
825                 eriþim için, OID alanýnda bir index yaratabilirsiniz.</p>
826
827                 <p>OID'ler yeni satýrlara, tüm veritabanlarý tarafýnda kullanýlan ortak bir alandan atanýrlar. Eðer 
828                  OID'i baþka bir deðere eþitlemek isterseniz ya da tablonun bir kopyasýný orijinal OIDler ile 
829                 çýkarmak isterseniz, bu mümkündür:</p>
830                 <pre>
831                         CREATE TABLE new_table(old_oid oid, mycol int);
832                         SELECT old_oid, mycol INTO new FROM old;
833                         COPY new TO '/tmp/pgtable';
834                         DELETE FROM new;
835                         COPY new WITH OIDS FROM '/tmp/pgtable';         
836                 </pre>
837                 <p>OIDler 4-bit tamsayý olarak saklanýrlar ve 4 milyarda overflow olacaktýr. Kimse 
838                 bu sayýya ulaþtýðýna dair bir bilgi iletmedi ve bu sýnýrý kimse bu sýnýra ulaþmadan kaldýracaðýz.</p>
839
840                 <p>TIDler, belirli fiziksel satýrlar block ve offset deðerleri ile belirtmekte kullanýlýr. TIDler, 
841                 satýrlar deðiþtiðinde ya da yeniden yüklendiðinde deðiþirler. Index girdileri tarafýndan fiziksel 
842                 satýrlarý göstermek için kullanýlýrlar.</p>
843                 
844                 <h4><a name="4.17">4.17</a>) PostgreSQL'de kullanýlan bazý
845                 terimlerin anlamlarý nelerdir?</h4>
846                 <p>Kaynak kodun bir kýsmý ve eski belgeler, daha geniþ kullaným alaný olan terimleri
847                 kullanýrlar. Bunlarýn bazýlarý:</p>
848                 <ul><li>table, relation, class</li>
849                 <li>row, record, tuple</li>
850                 <li>column, field, attribute</li>
851                 <li>retrieve, select</li>
852                 <li>replace, update</li>
853                 <li>append, insert</li>
854                 <li>OID, serial value</li>
855                 <li>portal, cursor</li>
856                 <li>range variable, table name, table alias</li></ul>
857                 <p>Genel veritabaný terimleri, 
858                 <i><a href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</a></i>
859                 adresinde bulunabilir.</p>
860                 
861                 <h4><a name="4.18">4.18</a>) Neden "<i>ERROR: Memory exhausted in AllocSetAlloc()</i>"
862                 hatasýný alýyorum?</h4>
863                 <p>Sisteminizde sanal belleðinizi tüketmiþ olabilirsiniz, ya da çekirdeðiniz
864                 belli kaynaklar icin düþük bir sýnýra sahip olabilir. <i>postmaster</i>'ý
865                 baþlatmadan önce aþaðýdakileri deneyebilirsiniz:</p>
866                 <pre>
867 ulimit -d 262144
868 limit datasize 256m             
869                 </pre>
870                 <p>Kabuðunuza baðlý olarak, bunlardan sadece biri olumlu sonuç verecektir, ama
871                 bu iþlem veri segment sýnýrýnýzý arttýracak, ve belki de sorgunuzun tamamlanmasýný
872                 saðlayacaktýr. Bu komut, varolan iþleme (<i>current process</i>) ve komut çalýþtýrýldýktan
873                 sonraki tüm alt iþlemlere uygulanýr. Eðer SQL istemcinizle, <i>backend</i>'in çok
874                 fazla veri döndürmesi nedeniyle bir sorun yaþýyorsanýz, bunu istemciyi baþlatmadan
875                 önce deneyiniz.</p>
876                 
877                 <h4><a name="4.19">4.19</a>) Hangi PostgreSQL sürümünü çalýþtýrdýðýmý nasýl görebilirim?</h4>
878                 <p>psql arabiriminde, <code>select version();</code> yazýnýz.</p>
879                 
880                 <h4><a name="4.20">4.20</a>) Neden <i>large-object</i> iþlemlerim, "<i>invalid large obj
881                 descriptor</i>" hatasýný veriyor?</h4>
882                 <p><i>Large object</i> iþlemlerinizin uçlarýna, yani <code>lo_open</code> ...
883                 <code>lo_close</code> komutlarýnýn çevresine, <code>BEGIN WORK</code> ve
884                 <code>COMMIT</code> koymanýz gerekmektedir;</p>
885                 <p>Þu anda, PostgreSQL kurallarý large objectleri transaction commit edildiðinde kapatarak 
886                 uygulamaktadýr. Dolayýsýyla handle ile yapýlacak ilk þey <i>invalid large obj descriptor</i> hatasý 
887                 ile sonuçlanacaktýr.Dolayýsýyla çalýþan kodunuz eðer transaction kullanmazsanýz hata mesajlarý 
888                 üretecektir.</p>
889                 <p>Eðer ODBC gibi bir istemci arabirimi kullanýyorsanýz, <i>auto-commit</i>'i
890                 kapatmanýz gerekebilir.</p>
891                 
892                 <h4><a name="4.21">4.21</a>) Þu andaki zamaný öntanýmlý deðer olarak
893                 kabul eden <b>How do I create a column that will default to the current time?</b></h4>
894                 <p>Alttakini kullanabilirsiniz:</p>
895                 <pre>
896 CURRENT_TIMESTAMP:
897 CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
898                 </pre>
899                 
900                 <h4><a name="4.22">4.22</a>) Neden <code>IN</code> kullanan <i>subquery</i>'lerim
901                 çok yavas?</h4>
902                 <p>7.4 sürümünden önce, subqueryler. Eðer subquery sadece birkaç satýr ve outer query bol 
903                 sayýda satýr döndürüyorsa, IN en hýzlýsýdýr. Sorgularý hýzlandýrmak için IN yerine EXISTS 
904                 kullanýn:</p>
905                 <pre>
906 SELECT *
907     FROM tab
908     WHERE col1 IN (SELECT col2 FROM TAB2)
909                 </pre>
910                 <p>sorgusunu, aþaðýdaki ile deðiþtirin:</p>
911                 <pre>
912 SELECT *
913     FROM tab
914     WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)              
915                 </pre>
916                 <p>Bu iþlemin hýzlý olmasý için, subcol'un indexlenmiþ bir kolon olmasý gerekmektedir.</p>
917                 <p>7.4 sürümü ve sonrasýnda, IN aslýnda normal sorgularla ayný karmaþýk join tekniklerini kullanýr ve 
918                 EXISTS'e tercih edilir.</p>
919
920                 <h4><a name="4.23">4.23</a>) <i>Outer join</i> iþlemini nasýl yapabilirim?</h4>
921                 <p>PostgreSQL outer joins islemlerini SQL standartlarýný kullanarak
922                 gerçekleþtirmektedir. Aþaðýda 2 örnek bulunmaktadýr:</p>
923                 <pre>
924 SELECT *
925 FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);                
926                 </pre>
927                 <p>ya da</p>
928                 <pre>
929 SELECT *
930 FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);                
931                 </pre>
932                 <p>Bu özdeþ sorgular t1.col' i t2.col'ye <i>join</i> ederler ve ayný zamanda t1'deki
933                 <i>unjoined</i> satýrlarý (t2'de eþlenmemiþ olanlarla) döndürürler. <code>RIGHT
934                 JOIN t2</code>'nin <i>unjoined</i> satýrlarýný ekleyecektir. Bir FULL join, eþleþmiþ
935                 bütün satýrlarý ve t1 ile t2'den tüm baðlanmamýþ (<i>unjoined</i>) satýrlarý alýr.
936                 <code>OUTER</code> sözcüðü seçimseldir ve <code>LEFT</code>, <code>RIGHT</code> ve
937                 <code>FULL</code> <i>join</i> iþlemlerinde olduðu kabul edilir. Sýradan <i>join</i>
938                 iþlemleri <code>INNER JOIN</code> olarak adlandýrýlýr.</p>
939                 <p>Önceki sürümlerde, <code>OUTER JOIN</code>ler <code>UNION</code> ve <code>NOT IN</code>
940                 kullanýlarak simüle edilebiliyordu. Örneðin, tab1 ve tab2'yi birleþtirirken, aþaðýdaki
941                 sorgu iki tablonun dýþtan baðlanmasýný saðlar:</p>
942                 <pre>
943 SELECT tab1.col1, tab2.col2
944 FROM tab1, tab2
945 WHERE tab1.col1 = tab2.col1
946 UNION ALL
947 SELECT tab1.col1, NULL
948 FROM tab1
949 WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
950 ORDER BY col1           
951                 </pre>
952                 
953                 <h4><a name="4.24">4.24</a>) Ayný andan birden fazla veritabanýnda nasýl
954                 iþlem yapabilirim?</h4>
955                 <p>Mevcut veritabanýnýz dýþýndaki baþka bir veritabanýnýzý sorgulamanýzýn
956                 bir yolu bulunmamaktadýr. Bunun nedeni, PostgreSQL'in veritabanýna özel sistem
957                 kataloglarý yüklemesidir. Bu nedenle, cross-database bir sorgunun nasýl
958                 davranacaðýný kestirmek zordur.</p>
959                 <p>contrib/dblink fonksiyon çaðrýlarýný kullanarak cross-database sorgulara
960                 izin verir. Tabii ki, bir istemci deðiþik veritabanlarýna ayný anda eriþim
961                 saðlayabilir ve bilgiyi bu þekilde birleþtirebilir.</p>
962                 
963                 <h4><a name="4.25">4.25</a>) Bir fonksiyondan nasýl çoklu satýr ya da 
964                 kolon döndürebilirim?</h4>
965                 <p>7.3 sürümünde, bir fonksiyondan kolaylýkla çoklu satýr ya da sütun
966                 döndürebilirsiniz.
967                 (<i><a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a></i>)</p>
968                 
969                 <h4><a name="4.26">4.26</a>) Neden Pl/PgSQL fonksiyonlarý içinden
970                 güvenli bir þekilde tablo yaratma/kaldýrma iþlemlerini yapamýyoruz?</h4>
971                 <p>PL/PgSQL fonksiyon içerikleri <i>cache</i>'ler. Bunun istenmeyen bir tarafý,
972                 eðer bir PL/PgSQL fonksiyonu geçici bir tabloya eriþiyorsa ve bu tablo ileride
973                 kaldýrýlýp yeniden oluþturulduktan sonra fonksiyon yeniden çaðrýlýrsa, fonksiyon
974                 çalýþmayacaktýr; çünkü <i>cache</i>'lenmiþ fonksiyon hala eski geçici tabloyu
975                 gösteriyor olacaktýr. Çözüm, geçici tablo eriþimleri için PL/PgSQL'de
976                 <code>EXECUTE</code> kullanmaktýr. Bu, sorgunun her seferinde yeniden iþlenmesini
977                 saðlayacaktýr.</p>
978                 
979                 <h4><a name="4.27">4.27</a>) 4.28) Hangi þifreleme seçenekleri bulunmaktadýr?</h4>
980                 <ul><li>contrib/pgcrypto SQL sorgularýnda kullanýlabilmesi için
981                 þifreleme fonksiyonlarý içermektedir.</li>
982                 <li> Ýstemciden sunucuya iletiþimi þifrelemek için, sunucuda ssl seçeneði postgresql.conf içinde 
983                 açýk olmalýdýr. Ayrýca,pg_hba.conf dosyasý içinde host ya da hostssl kaydý mutlaka olmalýdýr ve 
984                 istemci sslmode kapatýlmamalýdýr. (Ayný zamanda,PostgreSQL'in doðal SSL baðlantýlarý dýþýnda ssh ya 
985                 da ssl gibi 3.parti þifrelenmiþ veri iletimi de mümkündür.)</li>
986                 <li>Veritabaný kullanýcý adý ve þifreleri 7.3 sürümü ile birlikte
987                 otomatik olarak þifrelenirler. Önceki sürümlerde, postgresql.conf
988                 içindeki PASSWORD_ENCRYPTION seçeneðini aktif hale getirmeniz gerekmektedir.</li>
989                 <li>Sunucunun kendisini þifreli dosya sistemi üzerinde çalýþtýrabilirsiniz.</li></ul>
990                 
991                 <hr>
992                 
993         <h2 align="center">PostgreSQL Özelliklerini Geniþletmek</h2>
994                 
995                 <h4><a name="5.1">5.1</a>) Kullanýcý-tanýmlý bir fonksiyon yazdým.
996                 psql'de çalýþtýrdýðým zaman neden core dump ediyor?</h4>
997                 <p>Sorunun nedeni birden fazla þey olabilir. Kullanýcý-tanýmlý fonksiyonunuzu
998                 stand-alone bir programda çalýþtýrmayý deneyiniz.</p>
999                 
1000                 <h4><a name="5.2">5.2</a>) PostgreSQL'e nasýl yeni tipler/fonksiyonlar ekleyebilirim?</h4>
1001                 <p>Çalýþmalarýnýzý pgsql-hackers e-posta listesine gönderiniz. Kodunuz
1002                 incelendikten sonra /contrib dizinine konacaktýr.</p>
1003                 
1004                 <h4><a name="5.3">5.3</a>) Bir <i>tuple</i> dondürmek icin bir C fonksiyonunu nasil yazarým?</h4>
1005                 <p>PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanýlarak tablo-döndüren
1006                 fonksiyonlar tamamen desteklenmektedir. Ayrýntýlý bilgi için
1007                 <i><a href="http://www.postgresql.com/docs/7.3/interactive/user.html">PostgreSQL 7.3.2
1008                 Kullanýcý Rehberi</a></i>'ne bakabilrisiniz. Bir örneði contrib/tablefunc
1009                 içinde bulabilirsiniz.</p>
1010                 
1011                 <h4><a name="5.4">5.4</a>) Bir kaynak dosyasýnda deðiþiklik yaptým. Yeniden derlememe
1012                 raðmen deðiþiklik geçerli olmuyor. Neden?</h4>
1013                 <p>Makefile'lar include dosyalarý için tam bir baðýmlýlýk içermezler. 
1014                 Öncelikle make clean, ardýndan da baska bir make iþlemi yapmanýz gerekir.
1015                 GCC kullanýyorsanýz, configure betiðinin --enable-depend seçeneðini, derleyicinin
1016                 baðýmlýlýklarý otomatik olarak hesaplamasý için kullanabilirsiniz.</p>
1017                 
1018 </body></html>