summaryrefslogtreecommitdiff
path: root/doc/FAQ_turkish
diff options
context:
space:
mode:
authorBruce Momjian2005-03-11 21:46:54 +0000
committerBruce Momjian2005-03-11 21:46:54 +0000
commitb9de4a26cf1b34f9a9a6c9bdfc8d3878bd075ce1 (patch)
tree6a8f8056b8e972d3909d8438b951bebeb2797e23 /doc/FAQ_turkish
parentcaad817d1c250017b3f456417ecf14fa7ad083e6 (diff)
Here's the patch to fix a lot of markup errors in the HTML FAQs. Doesn't
change content (at least not supposed to). Magnus Hagander
Diffstat (limited to 'doc/FAQ_turkish')
-rw-r--r--doc/FAQ_turkish1933
1 files changed, 1114 insertions, 819 deletions
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish
index 47a3188674d..50634d0573b 100644
--- a/doc/FAQ_turkish
+++ b/doc/FAQ_turkish
@@ -1,480 +1,690 @@
-PostgreSQL için Sıkça Sorulan Sorular (SSS)
-
-Son güncelleme : 15 Kasım 2004 Pazartesi - 14:47:20
-
-Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-
-Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
-Nicolai Tufar (ntufar@tdmsoft.com)
-Volkan YAZICI (volkany@phreaker.net)
-
-Bu belgenin en güncel hali, http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
-http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde görülebilir.
-
-Platforma özel sorularınız, http://www.PostgreSQL.org/docs/index.html adresinde yanıtlanır.
-Genel Sorular
-1.1) PostgreSQL nedir? Nasıl okunur?
-1.2) PostgreSQL'in hakları nedir?
-1.3) PostgreSQL, hangi Unix platformlarında çalışır?
-1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
-1.5) PostgreSQL'i nereden indirebilirim?
-1.6) Desteği nereden alabilirim?
-1.7) En son sürümü nedir?
-1.8) Hangi belgelere ulaşabilirim?
-1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
-1.10) Nasıl SQL öğrenebilirim?
-1.11) PostgreSQL 2000 yılına uyumlu mudur?
-1.12) Geliştirme takımına nasıl katılabilirim??
-1.13) Bir hata raporunu nasıl gönderebilirim?
-1.14) PostgreSQL, diğer VTYS(DBMS) lerle nasıl karşılaştırılabilir?
-1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
-Kullanıcı/istemci Soruları
-2.1) PostgreSQL için ODBC sürücüleri var mı?
-2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar bulunmaktadır?
-2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
-2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri kullanabilirim?
-Yönetimsel Sorular
-3.1) PostgreSQL'i /usr/local/pgsql dizininden başka dizinlere nasıl kurabilirim?
-3.2) Postmaster'ı başlattığımda Bad System Call ya da core dumped mesajı alıyorum. Neden?
-3.3) Postmaster'ı başlattığımda, IpcMemoryCreate hatası alıyorum. Neden?
-3.4) Postmaster'ı, başlattığımda, IpcSemaphoreCreate hatası alıyorum. Neden?
-3.5) Diğer bilgisayarların benim PostgreSQL veritabanı sunucuma bağlantılarını nasıl kontrol edebilirim?
-3.6) Veritabanı motorunu daha iyi başarım icin nasıl ayarlayabilirim?
-3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
-3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını alıyorum. Neden?
-3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
-3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload işlemi gerçekleştirmek zorundayım?
-3.11) Nasıl bir donanım kullanmalıyım?br>
-İşletimsel Sorular
-4.1) Binary cursor ve normal cursor arasındaki fark nedır?
-4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
-4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini nasıl alabilirim?
-4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
-4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
-4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk alanı gereklidir?
-4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl görebilirim?
-4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
-4.9) Query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme soktuğunu nasıl görebilirim?
-4.10) R-tree index nedir?
-4.11) Genetic Query Optimizer nedir?
-4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük harfe duyarsız aramaları nasıl yapabilirim? Bu
-büyük/küçük harfe duyarlı aramalar için index'i nasıl kullanabilirim?
-4.13) Bir sorguda, bir alanın NULL olduğunu nasıl ortaya çıkarabilirim?
-4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
-4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-4.15.2) Serial girişinin değerini nasıl alabilirim?
-4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
-4.15.4) Neden sequence sayıların transaction işleminin iptalinden sonra yeniden kullanılıyor? Neden sequence/SERIAL
-kolonumdaki sayılarda atlamalar oluyor?
-4.16) OID nedir? TID nedir?
-4.17) PostgreSQL' de kullanılan bazı terimlerin anlamları nelerdir?
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını alıyorum?
-4.19) Hangi PostgreSQL sürümünü çalıstırdığımı nasıl görebilirim?
-4.20) Neden large-object işlemlerim, "invalid large obj descriptor" hatasını veriyor?
-4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden kolonu nasıl yaratırım?
-4.22) Neden IN kullanan subquery'lerim çok yavaş?
-4.23) Outer join işlemini nasıl yapabilirim?
-4.24) Aynı anda birden fazla veritabanında nasıl işlem yapabilirim?
-4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
-4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo yaratma/kaldırma işlemlerini yapamıyoruz?
-4.27) Hangi şifreleme seçenekleri bulunmaktadır?
-PostgreSQL Özelliklerini Genişletmek
-5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım zaman neden core dump ediyor?
-5.2) PostgreSQL'e nasıl yeni veri tipleri/fonksiyonlar ekleyebilirim?
-5.3) Bir tuple döndürmek için bir C fonksiyonunu nasıl yazarım?
-5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen değişiklik geçerli olmuyor. Neden?
-Genel Sorular
-1.1) PostgreSQL nedir? Nasıl okunur?
-
-PostgreSQL, Post-Gres-Q-L. olarak okunur
-
-PostgreSQL, yeni-nesil VTYS araştırma prototipi olan POSTGRES veritabanı yönetim sisteminin geliştirilmesidir.
-POSTGRES'in zengin veri tiplerini ve güçlü veri modelini tutarken, SQL'in geliştirilmiş alt kümesi olan PostQuel dilini
-kullanır. PostgreSQL ücretsizdir ve kaynak kodu açık dağıtılır.
-
-PostgreSQL, PostgreSQL geliştirme listesine üye olan bir Internet geliştirici takımı tarafından geliştirilir. Şu andaki
-koordinatör, Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takıma nasıl katılacagınızı öğrenmek için 1.6 numaralı
-maddeyi okuyunuz.) Bu takım, tüm PostgreSQL gelişiminden sorumludur.
-
-PostgreSQL 1.01 sürümünün yazarları Andrew Yu ve Jolly Chen idi. Bunların dışında bir kaç kisi de uyarlama, hata
-ayıklama ve kodun geliştirilmesi için çalısmıştı. PostgreSQL'in türediği orijinal Postgres kodu, lisans, lisansüstü ve
-akademisyenler tarafından, Professor Michael Stonebraker (University of California, Berkeley) koordinatörlügünde
-yazılmıştır.
-
-Berkley'deki yazılımın adı Postgres idi. SQL uyumluluğu 1995'te eklenince, adı Postgres 95 oldu. 1996 yılının
-sonlarında adı PostgreSQL olarak değiştirildi.
-1.2) PostgreSQL'in hakları nedir?
-
-PostgreSQL Data Base Management System
-
-Portions copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 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.
-
-Üstteki metin klasik açık-kod lisansı olan BSD lisansıdır. Kaynak kodun nasıl kullanılabileceğine dair sınırlamaları
-yoktur. Bu lisansı seviyoruz. Değiştirme niyetimiz bulunmamaktadır.
-1.3) PostgreSQL, hangi Unix platforlarında çalışır?
-
-Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i çalıştıracaktır. Ayrıntılı bilgi için kurulum belgelerine
-bakabilirsiniz.
-1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
-
-PostgreSQL 8.0 sürümü ile , PostgreSQL artık Win2000, WinXP ve Win2003 gibi Microsoft Windows NT tabanlı işletim
-sistemlerinde doğal olarak çalışmaya başlamıştır. Paketlenmiş bir kurulum programı, http://pgfoundry.org/projects/pginstaller
-adresinden indirilebilir.
-
-Ayrıca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadır.
-1.5) PostgreSQL'i nereden indirebilirim?
-
-PostgreSQL için ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub adresidir. Yansılar için, ana web sayfamıza
-bakabilirsiniz.
-1.6) Nereden destek alabilirim?
-
-Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tartışmalara açıktır. Üye olmak için,
-aşağıdaki satırları e-postanızın body kısmına (konu kısmına değil) yazıp, pgsql-general-request@PostgreSQL.org adresine
-gönderin:
+ PostgreSQL için Sıkça Sorulan Sorular (SSS)
+
+ Son güncelleme : 15 Kasım 2004 Pazartesi - 15:03:23
+
+ Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
+
+ Çevirenler : Devrim Gündüz (devrim@tdmsoft.com)
+ Nicolai Tufar (ntufar@tdmsoft.com)
+ Volkan YAZICI (volkany@phreaker.net)
+
+ Bu belgenin en güncel hali,
+ http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
+ http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
+ görülebilir.
+
+ Platforma özel sorularınız, http://www.PostgreSQL.org/docs/index.html
+ adresinde yanıtlanır.
+ _________________________________________________________________
+
+ Genel Sorular
+
+ 1.1) PostgreSQL nedir? Nasıl okunur?
+ 1.2) PostgreSQL'in hakları nedir?
+ 1.3) PostgreSQL, hangi Unix platformlarında çalışır?
+ 1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
+ 1.5) PostgreSQL'i nereden indirebilirim?
+ 1.6) Desteği nereden alabilirim?
+ 1.7) En son sürümü nedir?
+ 1.8) Hangi belgelere ulaşabilirim?
+ 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulasabilirim?
+ 1.10) Nasıl SQL öğrenebilirim?
+ 1.11) PostgreSQL 2000 yılına uyumlu mudur?
+ 1.12) Geliştirme takımına nasıl katılabilirim??
+ 1.13) Bir hata raporunu nasıl gönderebilirim?
+ 1.14) PostgreSQL, diğer VTYS(DBMS) lerle nasıl karşılaştırılabilir?
+ 1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
+
+ Kullanıcı/istemci Soruları
+
+ 2.1) PostgreSQL için ODBC sürücüleri var mı?
+ 2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar
+ bulunmaktadır?
+ 2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
+ 2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri
+ kullanabilirim?
+
+ Yönetimsel Sorular
+
+ 3.1) PostgreSQL'i /usr/local/pgsql dizininden başka dizinlere nasıl
+ kurabilirim?
+ 3.2) Postmaster'ı başlattığımda Bad System Call ya da core dumped
+ mesajı alıyorum. Neden?
+ 3.3) Postmaster'ı başlattığımda, IpcMemoryCreate hatası alıyorum.
+ Neden?
+ 3.4) Postmaster'ı, başlattığımda, IpcSemaphoreCreate hatası alıyorum.
+ Neden?
+ 3.5) Diğer bilgisayarların benim PostgreSQL veritabanı sunucuma
+ bağlantılarını nasıl kontrol edebilirim?
+ 3.6) Veritabanı motorunu daha iyi başarım icin nasıl ayarlayabilirim?
+ 3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
+ 3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını
+ alıyorum. Neden?
+ 3.9) pgsql_tmpdizinin içindeki dosyalar nelerdir?
+ 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload
+ işlemi gerçekleştirmek zorundayım?
+ 3.11) Nasıl bir donanım kullanmalıyım?br>
+
+ İşletimsel Sorular
+
+ 4.1) Binary cursor ve normal cursor arasındaki fark nedır?
+ 4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
+ 4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini
+ nasıl alabilirim?
+ 4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
+ 4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
+ 4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk
+ alanı gereklidir?
+ 4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl
+ görebilirim?
+ 4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
+ 4.9) Query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme
+ soktuğunu nasıl görebilirim?
+ 4.10) R-tree index nedir?
+ 4.11) Genetic Query Optimizer nedir?
+ 4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük
+ harfe duyarsız aramaları nasıl yapabilirim? Bu büyük/küçük harfe
+ duyarlı aramalar için index'i nasıl kullanabilirim?
+ 4.13) Bir sorguda, bir alanın NULL olduğunu nasıl ortaya
+ çıkarabilirim?
+ 4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
+ 4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan
+ yaratabilirim?
+ 4.15.2) Serial girişinin değerini nasıl alabilirim?
+ 4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
+ 4.15.4) Neden sequence sayıların transaction işleminin iptalinden
+ sonra yeniden kullanılıyor? Neden sequence/SERIAL kolonumdaki
+ sayılarda atlamalar oluyor?
+ 4.16) OID nedir? TID nedir?
+ 4.17) PostgreSQL' de kullanılan bazı terimlerin anlamları nelerdir?
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını
+ alıyorum?
+ 4.19) Hangi PostgreSQL sürümünü çalıstırdığımı nasıl görebilirim?
+ 4.20) Neden large-object işlemlerim, "invalid large obj descriptor"
+ hatasını veriyor?
+ 4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden kolonu nasıl
+ yaratırım?
+ 4.22) Neden IN kullanan subquery'lerim çok yavaş?
+ 4.23) Outer join işlemini nasıl yapabilirim?
+ 4.24) Aynı anda birden fazla veritabanında nasıl işlem yapabilirim?
+ 4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
+ 4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo
+ yaratma/kaldırma işlemlerini yapamıyoruz?
+ 4.27) Hangi şifreleme seçenekleri bulunmaktadır?
+
+ PostgreSQL Özelliklerini Genişletmek
+
+ 5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım
+ zaman neden core dump ediyor?
+ 5.2) PostgreSQL'e nasıl yeni veri tipleri/fonksiyonlar ekleyebilirim?
+ 5.3) Bir tuple döndürmek için bir C fonksiyonunu nasıl yazarım?
+ 5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen
+ değişiklik geçerli olmuyor. Neden?
+ _________________________________________________________________
+
+ Genel Sorular
+
+ 1.1) PostgreSQL nedir? Nasıl okunur?
+
+ PostgreSQL, Post-Gres-Q-L. olarak okunur
+
+ PostgreSQL, yeni-nesil VTYS araştırma prototipi olan POSTGRES
+ veritabanı yönetim sisteminin geliştirilmesidir. POSTGRES'in zengin
+ veri tiplerini ve güçlü veri modelini tutarken, SQL'in geliştirilmiş
+ alt kümesi olan PostQuel dilini kullanır. PostgreSQL ücretsizdir ve
+ kaynak kodu açık dağıtılır.
+
+ PostgreSQL, PostgreSQL geliştirme listesine üye olan bir Internet
+ geliştirici takımı tarafından geliştirilir. Şu andaki koordinatör,
+ Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takıma nasıl
+ katılacagınızı öğrenmek için 1.6 numaralı maddeyi okuyunuz.) Bu takım,
+ tüm PostgreSQL gelişiminden sorumludur.
+
+ PostgreSQL 1.01 sürümünün yazarları Andrew Yu ve Jolly Chen idi.
+ Bunların dışında bir kaç kisi de uyarlama, hata ayıklama ve kodun
+ geliştirilmesi için çalısmıştı. PostgreSQL'in türediği orijinal
+ Postgres kodu, lisans, lisansüstü ve akademisyenler tarafından,
+ Professor Michael Stonebraker (University of California, Berkeley)
+ koordinatörlügünde yazılmıştır.
+
+ Berkley'deki yazılımın adı Postgres idi. SQL uyumluluğu 1995'te
+ eklenince, adı Postgres 95 oldu. 1996 yılının sonlarında adı
+ PostgreSQL olarak değiştirildi.
+
+ 1.2) PostgreSQL'in hakları nedir?
+
+ PostgreSQL Data Base Management System
+
+ Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
+ Portions Copyright (c) 1994-6 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.
+
+ Üstteki metin klasik açık-kod lisansı olan BSD lisansıdır. Kaynak
+ kodun nasıl kullanılabileceğine dair sınırlamaları yoktur. Bu lisansı
+ seviyoruz. Değiştirme niyetimiz bulunmamaktadır.
+
+ 1.3) PostgreSQL, hangi Unix platforlarında çalışır?
+
+ Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
+ çalıştıracaktır. Ayrıntılı bilgi için kurulum belgelerine
+ bakabilirsiniz.
+
+ 1.4) Hangi Unix olmayan uyarlamaları bulunmaktadır?
+
+ PostgreSQL 8.0 sürümü ile , PostgreSQL artık Win2000, WinXP ve Win2003
+ gibi Microsoft Windows NT tabanlı işletim sistemlerinde doğal olarak
+ çalışmaya başlamıştır. Paketlenmiş bir kurulum programı,
+ http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
+
+ Ayrıca, http://forge.novell.com adresinde Novell Netware 6 portu
+ bulunmaktadır.
+
+ 1.5) PostgreSQL'i nereden indirebilirim?
+
+ PostgreSQL için ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub
+ adresidir. Yansılar için, ana web sayfamıza bakabilirsiniz.
+
+ 1.6) Nereden destek alabilirim?
+
+ Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
+ konusundaki tartışmalara açıktır. Üye olmak için, aşağıdaki satırları
+ e-postanızın body kısmına (konu kısmına değil) yazıp,
+ pgsql-general-request@PostgreSQL.org adresine gönderin:
subscribe
end
-Aynı zamanda, bir digest listesi bulunmaktadır. Bu listeye üye olmak için, pgsql-general-digest-request@PostgreSQL.org
-adresine, body kısmında
-
+ Aynı zamanda, bir digest listesi bulunmaktadır. Bu listeye üye olmak
+ için, pgsql-general-digest-request@PostgreSQL.org adresine, body
+ kısmında
subscribe
end
-yazan bir e-posta atmanız yeterli olacaktır.
-
-Digest postalar, ana liste 30k civarında e-postaya ulaştığında üyelere gönderilmektedir.
-
-Bug'lar için bir e-posta listesi bulunmaktadır. Bu listeye üye olmak için, pgsql-bugs-request@PostgreSQL.org adresine,
-body kısmında
-
+ yazan bir e-posta atmanız yeterli olacaktır.
+
+ Digest postalar, ana liste 30k civarında e-postaya ulaştığında üyelere
+ gönderilmektedir.
+
+ Bug'lar için bir e-posta listesi bulunmaktadır. Bu listeye üye olmak
+ için, pgsql-bugs-request@PostgreSQL.org adresine, body kısmında
subscribe
end
-yazan bir e-posta atmanız yeterli olacaktır.
-
-Aynı zamanda, geliştiriciler için tartışma listesi bulunmaktadır. Bu listeye üye olmak için,
-pgsql-hackers-request@PostgreSQL.org adresine, body kısmında
-
+ yazan bir e-posta atmanız yeterli olacaktır.
+
+ Aynı zamanda, geliştiriciler için tartışma listesi bulunmaktadır. Bu
+ listeye üye olmak için, pgsql-hackers-request@PostgreSQL.org adresine,
+ body kısmında
subscribe
end
-yazan bir e-posta atmanız yeterli olacaktır.
-
-Bunun dışındaki e-posta listelerine ve PostgreSQL hakkında bilgiye, PostgreSQL WWW ana sayfasından ulasabilirsiniz:
-http://www.PostgreSQL.org
-
-Aynı zamanda, EFNet üzerinde, #PostgreSQL adlı bir IRC kanalı bulunmaktadır. Bunun için, irc -c '#PostgreSQL' "$USER"
-irc.phoenix.net Unix komutunu kullanabilirsiniz.
-
-Ticari destek veren firmaların listesine
-
-http://www.postgresql.org/users-lounge/commercial-support.html
-
-adresinden ulaşbilirsiniz.
-1.7) En son sürüm nedir?
-
-PostgreSQL'in son sürümü 7.4.6'dır.
-
-Her 6-8 ayda ana sürüm çıkarılması planlanmaktadır.
-1.8) Hangi belgelere ulaşabilirim?
-
-Dağıtımın içinde, kitapçıklar, kitapçık sayfaları ve bazı küçük örnekler verilmektedir. /doc dizinine bakınız. Ayrıca,
-bu el kitapçıklarını online olarak http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz.
-
-http://www.PostgreSQL.org/docs/awbook.html ve http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitapları
-bulunmaktadır. PostgreSQL kitablarının listesine, http://www.ca.PostgreSQL.org/books/ adresinden ulaşaiblirsiniz.
-Ayrıca, PostgreSQL konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden ulaşabilirsiniz.
-
-psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregate'ler, vb. ile ilgili güzel komutları vardır.
-
-Web sitemiz daha fazla belgeyi içermektedir.
-1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaşabilirim?
-
-PostgreSQL SQL-92 uyumluluğu içindedir, standartlardan fazla da özellikleri bulunmaktadır. Bilinen hatalar, eksik
-özellikler ve gelecek ile ilgili planlar için TODO listesine bakınız.
-1.10) Nasıl SQL öğrenebilirim?
-
-http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL ögretecektir. http://www.commandprompt.com/ppbook
-adresinde de bir baska PostgreSQL kitabı bulunmaktadır.
-
-http://www.intermedia.net/support/sql/sqltut.shtm,
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM http://sqlcourse.com ve http://sqlcourse2.com
-adreslerinde de güzel belgeler bulunmaktadır.
-
-Bir başkası da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan "Teach Yourself SQL in 21 Days,
-Second Edition" kitabıdır.
-
-Bazı kullanıcılarımız da şu kitabı önermektedirler: "The Practical SQL Handbook, Bowman, Judith S., et
-al.,Addison-Wesley". Bazıları ise "The Complete Reference SQL, Groff et al., McGraw-Hill" kitabını önermektedirler.
-1.11) PostgreSQL 2000 yılına uyumlu mudur?
-
-Evet.
-1.12) Geliştirme takımına nasıl katılabilirim?
-
-Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da dağıtımın içindeki PostgreSQL Developer belgesini
-okuyun. Ardından, pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da, pgsql-pacthes listesine yüksek
-kalitede yamalar gönderin.
-
-PostgreSQL CVS arşivine erişim izni olan, 10 kadar geliştirici bulunmaktadır. Hepsi defalarca, diğer kişilerin
-yaptığından çok daha yüksek-kaliteli yamalar göndermişlerdir. Ayrıca biz de bu geliştiricilerin ekledikleri yamaların
-yüksek kalitede olduğuna güveniyoruz.
-1.13) Bir hata raporunu nasıl gönderebilirim?
-
-PostgreSQL BugTool sayfasına gidiniz. O sayfada bir bug bildirmek için neleri yapmanız gerektiği anlatılmıştır.
-
-Ayrıca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL sürümü ya da yaması olup olmadığıni kontrol
-ediniz.
-1.14) PostgreSQL, diger DBMS'lerle nasıl karşılastırılabilir?
-
-Bir yazılımın gücünü ölçmek için çeşitli yollar vardır: Yazılımın özellikleri, başarımı, güvenilirliği, desteği ve
-ücreti.
-
-Özellikler:
-
-PostgreSQL mevcut büyük ticari veritabanlarının, transaction, subselect, trigger, view, foreign key referential
-integrity ve sophisticated locking gibi (user-defined types), rules, inheritance ve lock cakışmalarını düşürmek için
-multi-version uyumluluk özellikleri bulunmaktadır.
-
-Performans (Başarım):
-
-PostgreSQL, diğer ticari ve açık kaynak kodlu veritabanlarıyla yakın başarımı sağlar. Bazı açılardan daha hızlıdır,
-diğer açılardan da yavaştır. MySQL ya da daha zayıf veritabanları ile karşılaştırıldığında, INSERT/UPDATE işlemlerinde,
-transaction bazlı çalıstığımız için daha yavaşız. MySQL, yukarıdaki "özellikler" kısmında belirtilenlerden hiç birine
-sahip değildir. Biz, başarımımızı her sürümde arttırsak da, esneklik ve gelişmiş özellikler için yapılanmış durumdayız.
-PostgreSQL'i MySQL ile karşılaştıran şu web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
-
-Güvenilirlik:
-
-DBMS'lerin güvenilir olması gerketiği, yoksa değerleri olmayacağını düşünüyoruz. Çok iyi test edilmiş, dengeli çalısan
-minimum sayıda hata içeren kod sunmaya çalışıyoruz. Her bir sürüm en az 1 aylık beta testlerinden geçirilmektedir.
-Sürüm geçmişine bakarsanız, üretime hazır, dengeli ve kararlı kodlar sunduğumuzu görebilirsiniz. Bu alanda, diğer
-veritabanı yazılımlarına üstünlüğümüz olduğuna inanmaktayız.
-
-Destek:
-
-E-posta listemiz, oluşan herhangi bir sorunu çözebilecek büyük sayıda kullanıcı ve geliştirici grubunu içerir.
-Sorununuz için, en az bir ticari veritabanı kadar rahat çözüm bulabilirsiniz. Gelistiricilere, kullanıcı grubuna,
-belgelere ve kaynak koda direk olarak erişebilme, PostgreSQL desteğini, diğer DBMS'lere göre daha önemli kılar.
-Gereksinimi olanlara, ticari destek verilebilir. (Destek için 1.6 bölümüne bakınız.)
-
-Fiyat:
-
-Ticari ve ticari olmayan tüm kullanımlarınız için PostgreSQL ücretsizdir. Kodumuzu, yukarıda belirtilen BSD-stili
-lisanstaki sınırlamalar hariç, ürününüzün içine ekleyebilirsiniz.
-1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
-
-PostgreSQL, 1996 yılından beri 1. sınıf altyapıya sahiptir. Bunun için, yıllar boyu çalışıp bu altyapıyı oluşturup
-yöneten Marc Fournier'e teşekkürler.
-
-Bir açık kaynak kodlu proje için, kaliteli altyapı çok önemlidir. Bu altyapı, projenin kesilmesini önler ve projenin
-ilerlemesini hızlandırır.
-
-Tabii ki bu altyapı ucuz değildir. İşlerin yürümesi için çeşitli yılık ve anlık harcamalarımız olmaktadır. Eğer siz ya
-da şirketinizin bu çabamıza bağışta bulunabilecek parası varsa, lütfen http://store.pgsql.com adresine gidiniz
-ve bağışta, hibede bulununuz.
-
-Web sayfasının 'PostgreSQL Inc.' den bahsetmesine rağmen, "katkıda bulunanlar" (contributors) maddesi sadece PostgreSQL
-projesini desteklemek içindir ve belirli bir şirketin para kaynağı değildir. isterseniz, bağlantı adresine bir çek
-gönderebilirsiniz.
-Kullanıcı/İstemci Soruları
-2.1) PostgreSQL icin ODBC sürücüleri var mı?
-
-iki tane ODBC sürücüsü bulunmaktadır: PsqlODBC ve OpenLink ODBC.
-
-PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden indirebilirsiniz.
-
-OpenLink ODBC http://www.openlinksw.com adresinden alınabilir.Bu sürücü, kendi standart ODBC istemci yazılımı ile
-çalıstığından, destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
-
-Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. Sorularınızı lütfen
-postgres95@openlink.co.uk adresine gönderiniz.
-2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar bulunmaktadır?
-
-http://www.webreview.com/ adresinde, arka planda veritabanı çalıstıran Web sayfaları için giriş seviyesinde bilgi
-bulunmaktadır.
-
-Web ile bütünleşme için, PHP () mükemmel bir arabirim sunar.
-
-Karmaşık sorunlar için, çoğu kisi Perl arabirimini ve CGI.pm ya da mod_perl kullanır.
-2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
-
-Çeşitli grafik arabirimlerimiz bulunmaktadır. Bunların arasında, PgAccess (http://www.pgaccess.org/), PgAdmin II
-(http://www.pgadmin.org/, sadece Win32 için), RHDB Admin (http://sources.redhat.com/rhdb/) ve Rekall
-(http://www.thekompany.com/products/rekall/) bulunmaktadır. Ayrıca, PostgreSQL için web tabanlı bir arabirim olan
-PHPPgAdmin (http://phppgadmin.sourceforge.net/) bulunmaktadır.
-
-Daha ayrıntılı liste için http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.
-2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri kullanabilirim?
-
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
-Diğerleri için, http://gborg.postgresql.org adresindeki Drivers/Interfaces bölümüne bakabilirsiniz.
-Yönetimsel Sorular
-3.1) PostgreSQL'i, /usr/local/pgsql dizininden başka dizinlere nasıl kurabilirim?
-
-configure betiğini çalıstırırken, --prefix seçeneğini veriniz.
-3.2) postmaster'i baslattıgımda, a Bad System Call ya da core dumped mesajı alıyorum. Neden?
-
-Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, çekirdeginize System V uzantılarının kurulu olup
-olmadıgını kontrol etmek olabilir. PostgreSQL shared memory ve semaphores için çekirdek destegine gereksinim duyar.
-3.3) postmaster'i başlattığımda, ıpcMemoryCreate hatası alıyorum. Neden?
-
-Ya çekirdeğinizde shared memory desteğiniz düzgünce yapılandırılmamıştır, ya da çekirdeğinizdeki mevcut shared memory
-miktarını büyütmeniz gerekecektir. Gereksinim duyacağınız miktar, mimarinize ve postmaster için ayarladıgınız tampon
-ile backend işlemi sayısına bağlıdır. Tüm sistemler için, tamponlar ve işlemlerde öntanımlı sayılarla, ~ 1MB kadar yere
-gereksinmeniz olacaktır. PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve semaphorelar hakkındaki
-ayrıntılı bilgi için bakabilirsiniz.
-3.4) postmaster'ı başlattığımda, ıpcSemaphoreCreate hatası alıyorum. Neden?
-
-Eğer hata, "ıpcSemaphoreCreate: semget failed (No space left on device)" ise, çekirdeğiniz yeterli semaphore ile
-yapılandırılmamış demektir. Postgres, her bir potansiyel backend için bir semaphore gereksinimi duyar. Geçici bir
-çözüm, postmasterı backend işlemleri için daha az miktarda sınırla başlatmak olabilir. -N'i varsayılan değer olan
-32'den küçük bir değerle başlatınız. Daha kalıcı bir çözüm, çekirdeğinizin SEMMNS ve SEMMNI parametrelerini yükseltmek
-olacaktır.
-
-Çalışmayan semaphore'lar ağır veritabanı işlemlerinde çökme yaratabilirler.
-
-Eğer hata mesajınız başka bir şey ise, çekirdeğinizde semaphore desteğini yapılandırmamış olabilirsiniz. Shared memory
-ve semaphore'lar hakkındaki daha ayrıntılı bilgi için PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
-3.5) Diger bilgisayarların benim PostgreSQL veritabanı sunucuma bağlantılarını nasıl kontrol edebilirim?
-
-Ön tanımlı olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak bağlanılmasına izin verir. Diger
-makineler, postmaster'a -i etiketini geçirmezseniz ve $PGDATA/pg_hba.conf dosyasını düzenleyerek host-based
-authentication'a olanak vermezseniz, bağlantı yapamayacaklardır.
-3.6) Veritabani motorunu daha iyi başarım için nasıl ayarlayabilirim?
-
-Index'ler sorguları hızlandırabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nasıl yorumladığını ve hangi index'leri
-kullandığını görmenize izin verir.
-
-Eğer cok fazla INSERT işlemi yapıyorsanız, bunları büyük bir toplu işlem dosyasıkullanıp COPY komutu ile veritabanına
-girmeyi deneyiniz. Bu, tekil INSERT'lerden daha hızlıdır. İkinci olarak, BEGIN WORK/COMMIT transaction bloğu içinde
-olmayan ifadeler kendi transaction'larındaymış gibi düşünülür. Çoklu ifadeleri tek bir transaction bloğu içinde
-yapabilirsiniz. Bu, transaction overhead'ini düşürecektir. Tek bir transaction bloğu içinde birden çok ifadeyi
-çalıştırmayı deneyebilirsiniz. Bu da aynı şekilde, transaction overhead'ini düşürür.
-
-Çeşitli ayarlama seçenekleri mevcuttur. fsync() işlemini, postmaster'ı -o -F seçeneği ile başlatarak devre dışı
-bırakabilirsiniz. Bu işlem, fsync()'lerin her transactiondan sonra diski flush etmesini engelleyecektir.
-
-Aynı zamanda, postmaster'i -B seçeneği ile başlatıp, backend işlemleri tarafından kullanılan shared memory buffers
-sayılarını arttırabilirsiniz. Eğer bu parametreyi çok yüksek tutarsanız, çekirdeğinizin shared memory bölgesindeki
-limiti aşma olasılığınız yüzünden postmaster başlayamayabilir. Her bir tampon (buffer) 8K'dır. Öntanımlı sayı ise 64
-tampondur.
-
-Aynı şekilde, backend'in -S seçeneğini geçici sıralamalar için backend süreçleri tarafından kullanılacak hafızayı
-arttırmak amacıyla kullanabilirsiniz. -S seçeneği kilobayt cinsinden değer alır ve ön tanımlı değeri 512'dir (512 K)
-
-Tablolardaki veriyi bir index'e eşlemek amacıyla gruplama için CLUSTER komutunu kullanabilirsiniz. Ayrıntılı bilgi için
-CLUSTER komutunun yardım sayfasına bakabilirsiniz.
-3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
-
-PostgreSQL, hata ayıklama amacıyla kullanılabilecek durum bilgisi rapor eden çeşitli özeliklere sahiptir.
-
-Öncelikle, configure betiğini --enable-cassert seçeneğiyle çalıştırırsanız, bir çok assert() backend calışmasını
-gözlemler ve beklenmeyen bir durumda programı durdurur.
-
-Postmaster ve postgres çeşitli hata ayıklama seçeneklerine sahiptir. Öncelikle, postmaster'ı başlattığınızda, standart
-çıktıyı ve hataları bir log dosyasına yönlendirdiğinize emin olun:
-
+ yazan bir e-posta atmanız yeterli olacaktır.
+
+ Bunun dışındaki e-posta listelerine ve PostgreSQL hakkında bilgiye,
+ PostgreSQL WWW ana sayfasından ulasabilirsiniz:
+ http://www.PostgreSQL.org
+
+ Aynı zamanda, EFNet üzerinde, #PostgreSQL adlı bir IRC kanalı
+ bulunmaktadır. Bunun için, irc -c '#PostgreSQL' "$USER"
+ irc.phoenix.net Unix komutunu kullanabilirsiniz.
+
+ Ticari destek veren firmaların listesine
+
+ http://www.postgresql.org/users-lounge/commercial-support.html
+
+ adresinden ulaşbilirsiniz.
+
+ 1.7) En son sürüm nedir?
+
+ PostgreSQL'in son sürümü 7.4.6'dır.
+
+ Her 6-8 ayda ana sürüm çıkarılması planlanmaktadır.
+
+ 1.8) Hangi belgelere ulaşabilirim?
+
+ Dağıtımın içinde, kitapçıklar, kitapçık sayfaları ve bazı küçük
+ örnekler verilmektedir. /doc dizinine bakınız. Ayrıca, bu el
+ kitapçıklarını online olarak http://www.PostgreSQL.org/docs/
+ adresinden inceleyebilirsiniz.
+
+ http://www.PostgreSQL.org/docs/awbook.html ve
+ http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitapları
+ bulunmaktadır. PostgreSQL kitablarının listesine,
+ http://www.ca.PostgreSQL.org/books/ adresinden ulaşaiblirsiniz.
+ Ayrıca, PostgreSQL konusundaki teknik makalelere de
+ http://techdocs.PostgreSQL.org/ adresinden ulaşabilirsiniz.
+
+ psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar,
+ aggregate'ler, vb. ile ilgili güzel komutları vardır.
+
+ Web sitemiz daha fazla belgeyi içermektedir.
+
+ 1.9) Bilinen hatalar ya da eksik özelliklere nereden ulaşabilirim?
+
+ PostgreSQL SQL-92 uyumluluğu içindedir, standartlardan fazla da
+ özellikleri bulunmaktadır. Bilinen hatalar, eksik özellikler ve
+ gelecek ile ilgili planlar için TODO listesine bakınız.
+
+ 1.10) Nasıl SQL öğrenebilirim?
+
+ http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL
+ ögretecektir. http://www.commandprompt.com/ppbook adresinde de bir
+ baska PostgreSQL kitabı bulunmaktadır.
+
+ http://www.intermedia.net/support/sql/sqltut.shtm,
+ http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+ http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de güzel
+ belgeler bulunmaktadır.
+
+ Bir başkası da, http://members.tripod.com/er4ebus/sql/index.htm
+ adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition"
+ kitabıdır.
+
+ Bazı kullanıcılarımız da şu kitabı önermektedirler: "The Practical SQL
+ Handbook, Bowman, Judith S., et al.,Addison-Wesley". Bazıları ise "The
+ Complete Reference SQL, Groff et al., McGraw-Hill" kitabını
+ önermektedirler.
+
+ 1.11) PostgreSQL 2000 yılına uyumlu mudur?
+
+ Evet.
+
+ 1.12) Geliştirme takımına nasıl katılabilirim?
+
+ Öncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
+ dağıtımın içindeki PostgreSQL Developer belgesini okuyun. Ardından,
+ pgsql-hackers ve pgsql-patches listelerine üye olun. Üçüncü olarak da,
+ pgsql-pacthes listesine yüksek kalitede yamalar gönderin.
+
+ PostgreSQL CVS arşivine erişim izni olan, 10 kadar geliştirici
+ bulunmaktadır. Hepsi defalarca, diğer kişilerin yaptığından çok daha
+ yüksek-kaliteli yamalar göndermişlerdir. Ayrıca biz de bu
+ geliştiricilerin ekledikleri yamaların yüksek kalitede olduğuna
+ güveniyoruz.
+
+ 1.13) Bir hata raporunu nasıl gönderebilirim?
+
+ PostgreSQL BugTool sayfasına gidiniz. O sayfada bir bug bildirmek için
+ neleri yapmanız gerektiği anlatılmıştır.
+
+ Ayrıca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
+ PostgreSQL sürümü ya da yaması olup olmadığıni kontrol ediniz.
+
+ 1.14) PostgreSQL, diger DBMS'lerle nasıl karşılastırılabilir?
+
+ Bir yazılımın gücünü ölçmek için çeşitli yollar vardır: Yazılımın
+ özellikleri, başarımı, güvenilirliği, desteği ve ücreti.
+
+ Özellikler:
+
+ PostgreSQL mevcut büyük ticari veritabanlarının, transaction,
+ subselect, trigger, view, foreign key referential integrity ve
+ sophisticated locking gibi (user-defined types), rules, inheritance ve
+ lock cakışmalarını düşürmek için multi-version uyumluluk özellikleri
+ bulunmaktadır.
+
+ Performans (Başarım):
+
+ PostgreSQL, diğer ticari ve açık kaynak kodlu veritabanlarıyla yakın
+ başarımı sağlar. Bazı açılardan daha hızlıdır, diğer açılardan da
+ yavaştır. MySQL ya da daha zayıf veritabanları ile
+ karşılaştırıldığında, INSERT/UPDATE işlemlerinde, transaction bazlı
+ çalıstığımız için daha yavaşız. MySQL, yukarıdaki "özellikler"
+ kısmında belirtilenlerden hiç birine sahip değildir. Biz, başarımımızı
+ her sürümde arttırsak da, esneklik ve gelişmiş özellikler için
+ yapılanmış durumdayız. PostgreSQL'i MySQL ile karşılaştıran şu web
+ sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
+
+ Güvenilirlik:
+
+ DBMS'lerin güvenilir olması gerketiği, yoksa değerleri olmayacağını
+ düşünüyoruz. Çok iyi test edilmiş, dengeli çalısan minimum sayıda hata
+ içeren kod sunmaya çalışıyoruz. Her bir sürüm en az 1 aylık beta
+ testlerinden geçirilmektedir. Sürüm geçmişine bakarsanız, üretime
+ hazır, dengeli ve kararlı kodlar sunduğumuzu görebilirsiniz. Bu
+ alanda, diğer veritabanı yazılımlarına üstünlüğümüz olduğuna
+ inanmaktayız.
+
+ Destek:
+
+ E-posta listemiz, oluşan herhangi bir sorunu çözebilecek büyük sayıda
+ kullanıcı ve geliştirici grubunu içerir. Sorununuz için, en az bir
+ ticari veritabanı kadar rahat çözüm bulabilirsiniz. Gelistiricilere,
+ kullanıcı grubuna, belgelere ve kaynak koda direk olarak erişebilme,
+ PostgreSQL desteğini, diğer DBMS'lere göre daha önemli kılar.
+ Gereksinimi olanlara, ticari destek verilebilir. (Destek için 1.6
+ bölümüne bakınız.)
+
+ Fiyat:
+
+ Ticari ve ticari olmayan tüm kullanımlarınız için PostgreSQL
+ ücretsizdir. Kodumuzu, yukarıda belirtilen BSD-stili lisanstaki
+ sınırlamalar hariç, ürününüzün içine ekleyebilirsiniz.
+
+ 1.15) PostgreSQL'e maddi açıdan nasıl destek olabilirim?
+
+ PostgreSQL, 1996 yılından beri 1. sınıf altyapıya sahiptir. Bunun
+ için, yıllar boyu çalışıp bu altyapıyı oluşturup yöneten Marc
+ Fournier'e teşekkürler.
+
+ Bir açık kaynak kodlu proje için, kaliteli altyapı çok önemlidir. Bu
+ altyapı, projenin kesilmesini önler ve projenin ilerlemesini
+ hızlandırır.
+
+ Tabii ki bu altyapı ucuz değildir. İşlerin yürümesi için çeşitli yılık
+ ve anlık harcamalarımız olmaktadır. Eğer siz ya da şirketinizin bu
+ çabamıza bağışta bulunabilecek parası varsa, lütfen
+ http://store.pgsql.com/ adresine gidiniz ve bağışta, hibede bulununuz.
+
+ Web sayfasının 'PostgreSQL Inc.' den bahsetmesine rağmen, "katkıda
+ bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
+ desteklemek içindir ve belirli bir şirketin para kaynağı değildir.
+ isterseniz, bağlantı adresine bir çek gönderebilirsiniz.
+ _________________________________________________________________
+
+ Kullanıcı/İstemci Soruları
+
+ 2.1) PostgreSQL icin ODBC sürücüleri var mı?
+
+ iki tane ODBC sürücüsü bulunmaktadır: PsqlODBC ve OpenLink ODBC.
+
+ PsqlODBC'i
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+ adresinden indirebilirsiniz.
+
+ OpenLink ODBC http://www.openlinksw.com adresinden alınabilir.Bu
+ sürücü, kendi standart ODBC istemci yazılımı ile çalıstığından,
+ destekledikleri her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC
+ bulunmalidir.
+
+ Ücretsiz sürümü olmakla beraber, ticari kalitede destek almak
+ isteyenlere satmak isteyeceklerdir. Sorularınızı lütfen
+ postgres95@openlink.co.uk adresine gönderiniz.
+
+ 2.2) PostgreSQL'i web sayfalarında kullanabilmek için hangi araçlar
+ bulunmaktadır?
+
+ http://www.webreview.com/ adresinde, arka planda veritabanı çalıstıran
+ Web sayfaları için giriş seviyesinde bilgi bulunmaktadır.
+
+ Web ile bütünleşme için, PHP () mükemmel bir arabirim sunar.
+
+ Karmaşık sorunlar için, çoğu kisi Perl arabirimini ve CGI.pm ya da
+ mod_perl kullanır.
+
+ 2.3) PostgreSQL'in grafik kullanıcı arabirimi var mıdır?
+
+ Çeşitli grafik arabirimlerimiz bulunmaktadır. Bunların arasında,
+ PgAccess (http://www.pgaccess.org/), PgAdmin II
+ (http://www.pgadmin.org/, sadece Win32 için), RHDB Admin
+ (http://sources.redhat.com/rhdb/) ve Rekall
+ (http://www.thekompany.com/products/rekall/) bulunmaktadır. Ayrıca,
+ PostgreSQL için web tabanlı bir arabirim olan PHPPgAdmin
+ (http://phppgadmin.sourceforge.net/) bulunmaktadır.
+
+ Daha ayrıntılı liste için
+ http://techdocs.postgresql.org/guides/GUITools adresine
+ bakabilirsiniz.
+
+ 2.4) PostgreSQL ile iletişimi kurabilmek için hangi dilleri kullanabilirim?
+
+ * C (libpq)
+ * Embedded C (ecpg)
+ * Java (jdbc)
+ * Python (PyGreSQL)
+ * TCL (libpgtcl)
+
+ Diğerleri için, http://gborg.postgresql.org adresindeki
+ Drivers/Interfaces bölümüne bakabilirsiniz.
+ _________________________________________________________________
+
+ Yönetimsel Sorular
+
+ 3.1) PostgreSQL'i, /usr/local/pgsql dizininden başka dizinlere nasıl
+ kurabilirim?
+
+ configure betiğini çalıstırırken, --prefix seçeneğini veriniz.
+
+ 3.2) postmaster'i baslattıgımda, a Bad System Call ya da core dumped mesajı
+ alıyorum. Neden?
+
+ Bunun birçok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey,
+ çekirdeginize System V uzantılarının kurulu olup olmadıgını kontrol
+ etmek olabilir. PostgreSQL shared memory ve semaphores için çekirdek
+ destegine gereksinim duyar.
+
+ 3.3) postmaster'i başlattığımda, ıpcMemoryCreate hatası alıyorum. Neden?
+
+ Ya çekirdeğinizde shared memory desteğiniz düzgünce
+ yapılandırılmamıştır, ya da çekirdeğinizdeki mevcut shared memory
+ miktarını büyütmeniz gerekecektir. Gereksinim duyacağınız miktar,
+ mimarinize ve postmaster için ayarladıgınız tampon ile backend işlemi
+ sayısına bağlıdır. Tüm sistemler için, tamponlar ve işlemlerde
+ öntanımlı sayılarla, ~ 1MB kadar yere gereksinmeniz olacaktır.
+ PostgreSQL 7.3.2 Sistem Yöneticileri Rehberi'ne, shared memory ve
+ semaphorelar hakkındaki ayrıntılı bilgi için bakabilirsiniz.
+
+ 3.4) postmaster'ı başlattığımda, ıpcSemaphoreCreate hatası alıyorum. Neden?
+
+ Eğer hata, "ıpcSemaphoreCreate: semget failed (No space left on
+ device)" ise, çekirdeğiniz yeterli semaphore ile yapılandırılmamış
+ demektir. Postgres, her bir potansiyel backend için bir semaphore
+ gereksinimi duyar. Geçici bir çözüm, postmasterı backend işlemleri
+ için daha az miktarda sınırla başlatmak olabilir. -N'i varsayılan
+ değer olan 32'den küçük bir değerle başlatınız. Daha kalıcı bir çözüm,
+ çekirdeğinizin SEMMNS ve SEMMNI parametrelerini yükseltmek olacaktır.
+
+ Çalışmayan semaphore'lar ağır veritabanı işlemlerinde çökme
+ yaratabilirler.
+
+ Eğer hata mesajınız başka bir şey ise, çekirdeğinizde semaphore
+ desteğini yapılandırmamış olabilirsiniz. Shared memory ve
+ semaphore'lar hakkındaki daha ayrıntılı bilgi için PostgreSQL 7.3.2
+ Sistem Yöneticileri Rehberi'ne bakabilirsiniz.
+
+ 3.5) Diger bilgisayarların benim PostgreSQL veritabanı sunucuma
+ bağlantılarını nasıl kontrol edebilirim?
+
+ Ön tanımlı olarak, PostgreSQL sadece yerel makineden Unix domain
+ sockets kullanarak bağlanılmasına izin verir. Diger makineler,
+ postmaster'a -i etiketini geçirmezseniz ve $PGDATA/pg_hba.conf
+ dosyasını düzenleyerek host-based authentication'a olanak vermezseniz,
+ bağlantı yapamayacaklardır.
+
+ 3.6) Veritabani motorunu daha iyi başarım için nasıl ayarlayabilirim?
+
+ Index'ler sorguları hızlandırabilir. EXPLAIN komutu, PostgreSQL'in
+ sorgunuzu nasıl yorumladığını ve hangi index'leri kullandığını
+ görmenize izin verir.
+
+ Eğer cok fazla INSERT işlemi yapıyorsanız, bunları büyük bir toplu
+ işlem dosyasıkullanıp COPY komutu ile veritabanına girmeyi deneyiniz.
+ Bu, tekil INSERT'lerden daha hızlıdır. İkinci olarak, BEGIN
+ WORK/COMMIT transaction bloğu içinde olmayan ifadeler kendi
+ transaction'larındaymış gibi düşünülür. Çoklu ifadeleri tek bir
+ transaction bloğu içinde yapabilirsiniz. Bu, transaction overhead'ini
+ düşürecektir. Tek bir transaction bloğu içinde birden çok ifadeyi
+ çalıştırmayı deneyebilirsiniz. Bu da aynı şekilde, transaction
+ overhead'ini düşürür.
+
+ Çeşitli ayarlama seçenekleri mevcuttur. fsync() işlemini, postmaster'ı
+ -o -F seçeneği ile başlatarak devre dışı bırakabilirsiniz. Bu işlem,
+ fsync()'lerin her transactiondan sonra diski flush etmesini
+ engelleyecektir.
+
+ Aynı zamanda, postmaster'i -B seçeneği ile başlatıp, backend işlemleri
+ tarafından kullanılan shared memory buffers sayılarını
+ arttırabilirsiniz. Eğer bu parametreyi çok yüksek tutarsanız,
+ çekirdeğinizin shared memory bölgesindeki limiti aşma olasılığınız
+ yüzünden postmaster başlayamayabilir. Her bir tampon (buffer) 8K'dır.
+ Öntanımlı sayı ise 64 tampondur.
+
+ Aynı şekilde, backend'in -S seçeneğini geçici sıralamalar için backend
+ süreçleri tarafından kullanılacak hafızayı arttırmak amacıyla
+ kullanabilirsiniz. -S seçeneği kilobayt cinsinden değer alır ve ön
+ tanımlı değeri 512'dir (512 K)
+
+ Tablolardaki veriyi bir index'e eşlemek amacıyla gruplama için CLUSTER
+ komutunu kullanabilirsiniz. Ayrıntılı bilgi için CLUSTER komutunun
+ yardım sayfasına bakabilirsiniz.
+
+ 3.7) Hangi hata ayıklama özellikleri bulunmaktadır?
+
+ PostgreSQL, hata ayıklama amacıyla kullanılabilecek durum bilgisi
+ rapor eden çeşitli özeliklere sahiptir.
+
+ Öncelikle, configure betiğini --enable-cassert seçeneğiyle
+ çalıştırırsanız, bir çok assert() backend calışmasını gözlemler ve
+ beklenmeyen bir durumda programı durdurur.
+
+ Postmaster ve postgres çeşitli hata ayıklama seçeneklerine sahiptir.
+ Öncelikle, postmaster'ı başlattığınızda, standart çıktıyı ve hataları
+ bir log dosyasına yönlendirdiğinize emin olun:
cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
-Bu işlem PostgreSQL ana dizinine server.log dosyası yerleştirecektir. Bu dosya sunucunun yaşadığı sorunlar ya da
-hatalar hakkında yararlı bilgiler içerir. -d seçeneği, hata ayıklama seviyesini belirten bir rakam ile kullanılır.
-Yüksek hata ayıklama seviyelerinin büyük log dosyaları oluşturacağını unutmayınız.
-
-Eğer postmaster çalışmıyorsa, postgres backend'ini komut satırından çalıştırabilir ve SQL ifadenizi direk olarak
-yazabilirsiniz. Bu sadece hata ayıklama amacıyla önerilir. Burada, noktalı virgülün değil de yeni bir satırın sorguyu
-sonlandırdığını unutmayınız. Eğer hata ayıklama sembolleri ile derlediyseniz, ne olduğunu görmek için bir hata
-ayıklayıcı kullanabilirsiniz. backend postmaster'dan başlatılmadığından, eşdeğer bir ortamda çalışmamaktadır ve
-locking/backend etkileşim sorunları artabilir.
-
-Eğer postmaster çalışıyorsa, bir pencerede psql'i çalıştırın ve psql tarafından kullanılan postgres sürecinin süreç
-numarasını (PID) bulun. Postgres süreci ile ilişkilendirmek için bir hata ayıklarıcı kullanın. Sorguları psql aracılığı
-ile çalıştırabilirsiniz. Eğer postgres başlangıcında hata ayıklamak istiyorsanız, PGOPTIONS="-W n" seçeneğini
-ayarlayabilir ve psql'i başlatabilirsiniz. Bu işlem, başlangıcın n saniye kadar gecikmesini sağlayacaktır; böylece hata
-ayıklayıcıyı sürece ilişkilendirdikten sonra başlangıç sürecinin devam etmesini sağlayabilirsiniz.
-
-postgres programı hata ayıklama ve başarım ölçümleri için -s, -A ve -t seçeneklerine sahiptir.
-3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını alıyorum?
-
-Postmaster'ın eşzamanlı olarak başlatabileceği backend süreçleri sınırlarını arttırmanız gerekmektedir.
-
-Ön tanımlı değer 32 süreçtir. Bunu, postmaster'ı uygun -N değeri ile ya da postgresql.conf dosyasını düzenleyerek
-yeniden başlatmakla arttırabilirsiniz.
-
-Eğer -N değerini 32'den büyük yapacaksanız, aynı zamanda -B değerini de değiştirmeniz gerektiğini unutmayın. -B, -N'nin
-en az 2 katı kadar olmalıdır; daha iyi başarım için bu sayıyı daha da arttırmalısınız. Yüksek sayıdaki backend
-süreçleri için, çeşitli çekirdek yapılandırma parametrelerini arttırmanız gerekecektir. Yapılması gerekenler, SHMMAX,
-SEMMNS, SEMMNI, NPROC, MAXUPRC ve açılabilecek dosyaların maksimum sayısı olan NFILE ve NINODE değerlerini
-karıştırmaktır. Bunun nedeni, PostgreSQL'in izin verilen backend süreçlerinin sayısı üzerinde bir sınırı olmasıdır.
-Böylelikle sistem kaynaklarının dışına çıkılmayacaktır.
-
-PostgreSQL'in 6.5 sürümüne kadar, en fazla backend sayısı 64 idi ve bunu değiştirmek için include/storage/sinvaladt.h
-dosyası içindeki MaxBAckendid sabitini değiştirdek sonra yazılımı yeniden derlemek gerekiyordu.
-3.9) pgsql_tmp dizinin içindeki dosyalar nelerdir?
-
-Sorgu çalıstırıcı (query executer) tarafından yaratılan geçici dosyalardır. Örnegin, bir sıralama ORDER BY ile
-yapılacaksa ve sıralama backend'in -s parametresinin izin verdiğinden daha fazla alana gereksinim duyuyorsa, ekstra
-veriyi tutmak için geçici dosyalar yaratılır.
-
-Geçici dosyalar, eğer sıralama sırasında backend göçmezse otomatik olarak silinecektir. Eğer çalışan durumda bir
-backend'iniz yoksa, pg_tempNNN.NN dosyalarını silmeniz güvenlidir.
-3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload işlemi gerçekleştirmek zorundayım?
-
-PostgreSQL takımı ara sürümlerde sadece küçük değişiklikler yapmaktadır; bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek
-dump/restore işlemi gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e) çoğunlukla sistem tablolarının ve
-veri dosyalarının iç yapısı değiştirilir. Bu değişiklikler çoğunlukla karmaşıktır; dolayısıyla veri dosyalarının geriye
-dönük uyumluluğu işlemlerini yapmıyoruz. Dump işlemi, veriyi genel biçimde alacağından yeniden yükleme esnasında veri,
-yeni iç biçime uygun şekilde yerleştirilecektir.
-
-Disk biçiminin değişmediği sürümlerde, pg_upgrade betiği güncellemenin bir dump/restore gerektirmeden yapılmasını
-sağlayacaktır. pg_upgrade betiğinin o sürüm için bulunup bulunmadığını sürüm notları içinde bulabilirsiniz.
-3.11) Nasıl bir donanım kullanmalıyım?
-
-PC donanımı tamamen uyumlu olduğu için, insanlar tüm PC donanımlarının aynı kalitede olduğunu düşünürler. Oysa böyle
-değildir. ECC RAM, SCSI ve kaliteli anakartlar daha ucuz donanımlara göre daha çok güvenilirlerdir ve başarımları daha
-yüksektir. PostgreSQL hemen hemen tüm donanımda çalışabilmektedir, ancak güvenilirlik ve başarım önemli ise donanım
-seçeneklerini çok iyi araştırmak gereklidir. E-posta listelerimi donanımlarla ilgili sorular ve de ticaret için
-kullanılabilir.
-İşletimsel Sorular
-4.1) Binary cursor ve normal cursor arasındaki fark nedir?
-
-DECLARE yardım sayfasına bakınız.
-4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
-
-FETCH yardım sayfasına bakınız, ya da SELECT ... LIMIT ... kullanınız.
-
-İlk birkaç satırı almak isteseniz bile, tüm sorgu değerlendirilmek durumunda kalınabilir. ORDER BY içeren bir sorgu
-düşünün. Eğer ORDER BY işe eşleşen bir index varsa, PostgreSQL istenen ilk birkaç satırı işleyebilir, ya da tüm sorgu
-istenen satırlar üretilene kadar işlenebilir.
-4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini nasıl alabilirim?
-
-pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu okuyabilirsiniz. Bu kod, psql'in \ ile başlayan komutlarının
-çıktısını olusturan SQL komutlarını içerir. Aynı zamanda, psql'i -E seçeneği ile başlatıp, verdiğiniz komutları
-çalıştırmak için yaptığı sorguların çıktılarını görebilirsiniz.
-4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
-
-Bu özellik (ALTER TABLE DROP COLUMN) 7.3 sürümü ile gelmiştir. Eski sürümlerde aşağıdakileri uygulamalısınız:
-
+ Bu işlem PostgreSQL ana dizinine server.log dosyası yerleştirecektir.
+ Bu dosya sunucunun yaşadığı sorunlar ya da hatalar hakkında yararlı
+ bilgiler içerir. -d seçeneği, hata ayıklama seviyesini belirten bir
+ rakam ile kullanılır. Yüksek hata ayıklama seviyelerinin büyük log
+ dosyaları oluşturacağını unutmayınız.
+
+ Eğer postmaster çalışmıyorsa, postgres backend'ini komut satırından
+ çalıştırabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece
+ hata ayıklama amacıyla önerilir. Burada, noktalı virgülün değil de
+ yeni bir satırın sorguyu sonlandırdığını unutmayınız. Eğer hata
+ ayıklama sembolleri ile derlediyseniz, ne olduğunu görmek için bir
+ hata ayıklayıcı kullanabilirsiniz. backend postmaster'dan
+ başlatılmadığından, eşdeğer bir ortamda çalışmamaktadır ve
+ locking/backend etkileşim sorunları artabilir.
+
+ Eğer postmaster çalışıyorsa, bir pencerede psql'i çalıştırın ve psql
+ tarafından kullanılan postgres sürecinin süreç numarasını (PID) bulun.
+ Postgres süreci ile ilişkilendirmek için bir hata ayıklarıcı kullanın.
+ Sorguları psql aracılığı ile çalıştırabilirsiniz. Eğer postgres
+ başlangıcında hata ayıklamak istiyorsanız, PGOPTIONS="-W n" seçeneğini
+ ayarlayabilir ve psql'i başlatabilirsiniz. Bu işlem, başlangıcın n
+ saniye kadar gecikmesini sağlayacaktır; böylece hata ayıklayıcıyı
+ sürece ilişkilendirdikten sonra başlangıç sürecinin devam etmesini
+ sağlayabilirsiniz.
+
+ postgres programı hata ayıklama ve başarım ölçümleri için -s, -A ve -t
+ seçeneklerine sahiptir.
+
+ 3.8) Bağlanmaya çalışırken, neden "Sorry, too many clients" hatasını
+ alıyorum?
+
+ Postmaster'ın eşzamanlı olarak başlatabileceği backend süreçleri
+ sınırlarını arttırmanız gerekmektedir.
+
+ Ön tanımlı değer 32 süreçtir. Bunu, postmaster'ı uygun -N değeri ile
+ ya da postgresql.conf dosyasını düzenleyerek yeniden başlatmakla
+ arttırabilirsiniz.
+
+ Eğer -N değerini 32'den büyük yapacaksanız, aynı zamanda -B değerini
+ de değiştirmeniz gerektiğini unutmayın. -B, -N'nin en az 2 katı kadar
+ olmalıdır; daha iyi başarım için bu sayıyı daha da arttırmalısınız.
+ Yüksek sayıdaki backend süreçleri için, çeşitli çekirdek yapılandırma
+ parametrelerini arttırmanız gerekecektir. Yapılması gerekenler,
+ SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve açılabilecek dosyaların
+ maksimum sayısı olan NFILE ve NINODE değerlerini karıştırmaktır. Bunun
+ nedeni, PostgreSQL'in izin verilen backend süreçlerinin sayısı
+ üzerinde bir sınırı olmasıdır. Böylelikle sistem kaynaklarının dışına
+ çıkılmayacaktır.
+
+ PostgreSQL'in 6.5 sürümüne kadar, en fazla backend sayısı 64 idi ve
+ bunu değiştirmek için include/storage/sinvaladt.h dosyası içindeki
+ MaxBAckendid sabitini değiştirdek sonra yazılımı yeniden derlemek
+ gerekiyordu.
+
+ 3.9) pgsql_tmp dizinin içindeki dosyalar nelerdir?
+
+ Sorgu çalıstırıcı (query executer) tarafından yaratılan geçici
+ dosyalardır. Örnegin, bir sıralama ORDER BY ile yapılacaksa ve
+ sıralama backend'in -s parametresinin izin verdiğinden daha fazla
+ alana gereksinim duyuyorsa, ekstra veriyi tutmak için geçici dosyalar
+ yaratılır.
+
+ Geçici dosyalar, eğer sıralama sırasında backend göçmezse otomatik
+ olarak silinecektir. Eğer çalışan durumda bir backend'iniz yoksa,
+ pg_tempNNN.NN dosyalarını silmeniz güvenlidir.
+
+ 3.10) PostgreSQL sürümlerini yükseltmek için neden bir dump/reload işlemi
+ gerçekleştirmek zorundayım?
+
+ PostgreSQL takımı ara sürümlerde sadece küçük değişiklikler
+ yapmaktadır; bu yüzden 7.2 sürümünden 7.2.1'e yükseltmek dump/restore
+ işlemi gerekmemektedir. Ancak, esas sürümlerde (örnek: 7.2'den 7.3'e)
+ çoğunlukla sistem tablolarının ve veri dosyalarının iç yapısı
+ değiştirilir. Bu değişiklikler çoğunlukla karmaşıktır; dolayısıyla
+ veri dosyalarının geriye dönük uyumluluğu işlemlerini yapmıyoruz. Dump
+ işlemi, veriyi genel biçimde alacağından yeniden yükleme esnasında
+ veri, yeni iç biçime uygun şekilde yerleştirilecektir.
+
+ Disk biçiminin değişmediği sürümlerde, pg_upgrade betiği güncellemenin
+ bir dump/restore gerektirmeden yapılmasını sağlayacaktır. pg_upgrade
+ betiğinin o sürüm için bulunup bulunmadığını sürüm notları içinde
+ bulabilirsiniz.
+
+ 3.11) Nasıl bir donanım kullanmalıyım?
+
+ PC donanımı tamamen uyumlu olduğu için, insanlar tüm PC donanımlarının
+ aynı kalitede olduğunu düşünürler. Oysa böyle değildir. ECC RAM, SCSI
+ ve kaliteli anakartlar daha ucuz donanımlara göre daha çok
+ güvenilirlerdir ve başarımları daha yüksektir. PostgreSQL hemen hemen
+ tüm donanımda çalışabilmektedir, ancak güvenilirlik ve başarım önemli
+ ise donanım seçeneklerini çok iyi araştırmak gereklidir. E-posta
+ listelerimi donanımlarla ilgili sorular ve de ticaret için
+ kullanılabilir.
+ _________________________________________________________________
+
+ İşletimsel Sorular
+
+ 4.1) Binary cursor ve normal cursor arasındaki fark nedir?
+
+ DECLARE yardım sayfasına bakınız.
+
+ 4.2) Sorgunun sadece ilk birkaç satırını nasıl SELECT edebilirim?
+
+ FETCH yardım sayfasına bakınız, ya da SELECT ... LIMIT ... kullanınız.
+
+ İlk birkaç satırı almak isteseniz bile, tüm sorgu değerlendirilmek
+ durumunda kalınabilir. ORDER BY içeren bir sorgu düşünün. Eğer ORDER
+ BY işe eşleşen bir index varsa, PostgreSQL istenen ilk birkaç satırı
+ işleyebilir, ya da tüm sorgu istenen satırlar üretilene kadar
+ işlenebilir.
+
+ 4.3) psql'in içinde gördügüm tabloların ya da diğer şeylerin listesini
+ nasıl alabilirim?
+
+ pgsql/src/bin/psql/describe.c içindeki psql kaynak kodunu
+ okuyabilirsiniz. Bu kod, psql'in \ ile başlayan komutlarının çıktısını
+ olusturan SQL komutlarını içerir. Aynı zamanda, psql'i -E seçeneği ile
+ başlatıp, verdiğiniz komutları çalıştırmak için yaptığı sorguların
+ çıktılarını görebilirsiniz.
+
+ 4.4) Bir tablodan bir kolonu nasıl kaldırabilirim?
+
+ Bu özellik (ALTER TABLE DROP COLUMN) 7.3 sürümü ile gelmiştir. Eski
+ sürümlerde aşağıdakileri uygulamalısınız:
BEGIN;
LOCK TABLE old_table;
SELECT ... -- select all columns but the one you want to remove
@@ -482,355 +692,421 @@ INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
-COMMIT;
-
-
-4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
-
-Sınırlar:
-
-Veritabanı için en fazla büyüklük nedir?
-Sınırsız (32 TB'lık veritabanı bulunmaktadır)
-
-Bir tablo için en fazla büyüklük nedir?
-32 TB
-
-Bir satır için en fazla büyüklük nedir?
-1.6 TB
-
-Bir alan için en fazla büyüklük nedir?
-1 GB
-
-Tabloda en fazla satır sayısı kaçtır?
-Sınırsız
-
-Bir tabloda olabilecek en fazla kolon sayısı kaçtır?
-Kolon tiplerine bağlı olarak 250-1600
-
-Bir tabloda olabilecek en fazla index sayısı kaçtır?
-Sınırsız
-
-Tabii ki bunlar aslında sınırsız degildir. Burada belirtilen sınırlar, fiziksel sınırların haricindeki sınırlardır. Boş
-disk alanı, hafıza/takas alanı na bağlı 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 olduğunda düşebilir.
-
-Bir tablo için büyüklük sınırı olan 32 TB, işletim sisteminin büyük dosya desteği olup olmamasından bağımsızdır. Büyük
-tablolar, 1 GB'lik dosyalarda saklandığı için, dosya sistemi sınırlarınin bir önemi yoktur.
-
-Tablo ve kolon sayısı büyüklükleri, ön tanımlı blok büyüklüğü 32k ya çıkarılarak arttırılabilir.
-4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk alanı gereklidir?
-
-Bir PostgreSQL veritabanı, veriyi "flat" metin dosyasında saklamak için gereken alanın 5 kat fazla disk alanına
-gereksinim duyabilir.
-
-Her satırında bir tamsayı ve metin (text) içeren, 100.000 satırlık bir dosya düşünün. Her satırın ortalama 20 byte
-olduğunu farzedelim. Metin dosyası 2.8 MB olacaktır. Bu veriyi tutan PostgreSQL veritabanı yaklaşık 6.4 MB yer
-kaplayacaktır.
-
+COMMIT;
+
+ 4.5) Bir satır, tablo ve veritabanı için en fazla büyüklük nedir?
+
+ Sınırlar:
+
+ Veritabanı için en fazla büyüklük nedir?
+ Sınırsız (32 TB'lık veritabanı bulunmaktadır)
+ Bir tablo için en fazla büyüklük nedir?
+ 32 TB
+ Bir satır için en fazla büyüklük nedir?
+ 1.6 TB
+ Bir alan için en fazla büyüklük nedir?
+ 1 GB
+ Tabloda en fazla satır sayısı kaçtır?
+ Sınırsız
+ Bir tabloda olabilecek en fazla kolon sayısı kaçtır?
+ Kolon tiplerine bağlı olarak 250-1600
+ Bir tabloda olabilecek en fazla index sayısı kaçtır?
+ Sınırsız
+
+ Tabii ki bunlar aslında sınırsız degildir. Burada belirtilen sınırlar,
+ fiziksel sınırların haricindeki sınırlardır. Boş disk alanı,
+ hafıza/takas alanı na bağlı 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 olduğunda düşebilir.
+
+ Bir tablo için büyüklük sınırı olan 32 TB, işletim sisteminin büyük
+ dosya desteği olup olmamasından bağımsızdır. Büyük tablolar, 1 GB'lik
+ dosyalarda saklandığı için, dosya sistemi sınırlarınin bir önemi
+ yoktur.
+
+ Tablo ve kolon sayısı büyüklükleri, ön tanımlı blok büyüklüğü 32k ya
+ çıkarılarak arttırılabilir.
+
+ 4.6) Tipik bir metin dosyasındaki veriyi saklamak için ne kadar disk alanı
+ gereklidir?
+
+ Bir PostgreSQL veritabanı, veriyi "flat" metin dosyasında saklamak
+ için gereken alanın 5 kat fazla disk alanına gereksinim duyabilir.
+
+ Her satırında bir tamsayı ve metin (text) içeren, 100.000 satırlık bir
+ dosya düşünün. Her satırın ortalama 20 byte olduğunu farzedelim. Metin
+ dosyası 2.8 MB olacaktır. Bu veriyi tutan PostgreSQL veritabanı
+ yaklaşık 6.4 MB yer kaplayacaktır.
36 byte: Her bir satır başlığı (yaklaşık)
-+ 24 byte: Bir tamsayı (int) alanı ve bir metin (text) alanı
++ 24 byte: Bir tamsayı (int) alanı ve bir metin (text) alanı
+ 4 byte: Sayfada tuple a pointer
----------------------------------------
64 byte -> kayıt başına
-PostgreSQL'de veri sayfası (data page) büyüklüğü 8192 byte (8k)dır, dolayısıyla:
-
+ PostgreSQL'de veri sayfası (data page) büyüklüğü 8192 byte (8k)dır,
+ dolayısıyla:
8192 byte -> page başına
------------------------- = Her bir veritabanı page'ı başına 128 satır (yaklaşık)
Satır başına 64 byte
-
+
100000 veri satırı
-------------------- = 782 veritabanı sayfası
128 satır
-782 veritabanı sayfası * sayfa başına 8192 byte = 6,406,144 bytes (6.4 MB)
-
-Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiş veriyi tutacaklarından büyük olabilirler.
-
-NULL değerler bitmapler içinde tutulur; dolayısıyla çok az yer kaplarlar.
-4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl görebilirim?
-
-psql, bu tür bilgileri göstermek için, \ ile başlayan bir çok komut sunmaktadır. \? komutu ile bu komutları
-görebilirsiniz. Ayrıca, bunları açıklayan ve pg_ ile başlayan çok sayıda sistem tablosu bulunmaktadır. Aynı zamanda,
-psql -l ile tüm veritabanlarını listeyelebirsiniz.
-
-Ayrıca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritabanı sistem dosyalarından bilgiyi
-almak için gereksinim duyulan bir çok SELECT'leri gösterir.
-4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
-
-Indexler her sorgu tarafından otomatik olarak kullanılmazlar. Indexler eğer bir tablonun büyüklüğü minimum bir
-büyüklükten fazla ise ve sorgu tablodaki satırların sadece küçük bir yüzdesini seçiyorsa kullanılır. Bunun nedeni,
-index erişiminin neden olduğu raslansal disk erişimi nin diskin ya da tablonun sıralı okunmasından daha yavas
-olabilmesidir.
-
-Bir index'in kullanılıp kullanılmayacağını belirlemek için, PostgreSQL tablo hakkındaki istatistiklere gereksinmesi
-vardır. Bu istatistikler, VACUUM ANALYZE kullanılarak toplanırlar. Optimizer, istatistikleri kullanarak, tabloda kaç
-satır olduğunu ve bilir ve indexin kullanılıp kullanılmayacağına daha iyi karar verir. Istatistikler, aynı zamanda en
-uygun join sırasını ve yöntemini belirlemekte çok önemlidir. İstatistik toplanması, tablo içerikleri değiştikçe
-periyodik olarak yapılmalıdır.
-
-Indexler normalde ORDER BY sorguları ya da join işlemlerini gerçekleştirmek için kullanılmazlar. Açık bir sıralamayı
-takip eden sıralı bir arama (sequential scan), büyük bir tabloda index araması yapmaktan genelde daha hızlıdır.
-Ancak, ORDER BY ile birleşmiş LIMIT genellikle bir index kullanacaktır; çünkü tablonun sadece belirli bir miktarı
-döndürülecektir. Aslında, MAX() ve MIN() fonksiyonlarının index kullanmamalarından dolayı, bu gibi değerleri ORDER BY
-ve LIMIT kullanarak da almak olasıdır:
-
+ 782 veritabanı sayfası * sayfa başına 8192 byte = 6,406,144 bytes (6.4
+ MB)
+
+ Index'ler çok fazla yere gereksinim duymazlar, ama index'lenmiş veriyi
+ tutacaklarından büyük olabilirler.
+
+ NULL değerler bitmapler içinde tutulur; dolayısıyla çok az yer
+ kaplarlar.
+
+ 4.7) Veritabanında hangi tablo ya da index'lerin tanımlandığını nasıl
+ görebilirim?
+
+ psql, bu tür bilgileri göstermek için, \ ile başlayan bir çok komut
+ sunmaktadır. \? komutu ile bu komutları görebilirsiniz. Ayrıca,
+ bunları açıklayan ve pg_ ile başlayan çok sayıda sistem tablosu
+ bulunmaktadır. Aynı zamanda, psql -l ile tüm veritabanlarını
+ listeyelebirsiniz.
+
+ Ayrıca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu
+ dosya, veritabanı sistem dosyalarından bilgiyi almak için gereksinim
+ duyulan bir çok SELECT'leri gösterir.
+
+ 4.8) Sorgularım cok yavaş, ya da index'lerimi kullanmıyorlar. Neden?
+
+ Indexler her sorgu tarafından otomatik olarak kullanılmazlar. Indexler
+ eğer bir tablonun büyüklüğü minimum bir büyüklükten fazla ise ve sorgu
+ tablodaki satırların sadece küçük bir yüzdesini seçiyorsa kullanılır.
+ Bunun nedeni, index erişiminin neden olduğu raslansal disk erişimi nin
+ diskin ya da tablonun sıralı okunmasından daha yavas olabilmesidir.
+
+ Bir index'in kullanılıp kullanılmayacağını belirlemek için, PostgreSQL
+ tablo hakkındaki istatistiklere gereksinmesi vardır. Bu istatistikler,
+ VACUUM ANALYZE kullanılarak toplanırlar. Optimizer, istatistikleri
+ kullanarak, tabloda kaç satır olduğunu ve bilir ve indexin kullanılıp
+ kullanılmayacağına daha iyi karar verir. Istatistikler, aynı zamanda
+ en uygun join sırasını ve yöntemini belirlemekte çok önemlidir.
+ İstatistik toplanması, tablo içerikleri değiştikçe periyodik olarak
+ yapılmalıdır.
+
+ Indexler normalde ORDER BY sorguları ya da join işlemlerini
+ gerçekleştirmek için kullanılmazlar. Açık bir sıralamayı takip eden
+ sıralı bir arama (sequential scan), büyük bir tabloda index araması
+ yapmaktan genelde daha hızlıdır.
+ Ancak, ORDER BY ile birleşmiş LIMIT genellikle bir index
+ kullanacaktır; çünkü tablonun sadece belirli bir miktarı
+ döndürülecektir. Aslında, MAX() ve MIN() fonksiyonlarının index
+ kullanmamalarından dolayı, bu gibi değerleri ORDER BY ve LIMIT
+ kullanarak da almak olasıdır:
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
-Eğer optimizer'ın sıralı arama yapmasının yanlış olduğuna inanıyorsanız, SET enable_seqscan TO 'off' kullanın ve index
-kullanan aramaların hala daha hızlı olup olmadığını görün.
-
-LIKE ya da ~ gibi operatörler kullanıyorsanız, index'ler sadece aşağıdaki koşullarda kullanılabilir:
-
- * Arama dizininin başı, dizinin başı ile bağlanmalıdır. Yani,
- o LIKE sorguları % ile başlamamalıdır.
- o Düzenli ifade sorguları ^ işe başlamamalıdır.
- * Arama metni bir karakter sınıfı ile başlayamaz. Örnek: [a-e]
- * ILIKE ve ~* gibi büyük/küçük harfe duyarsız aramalar index'lerden yararlanmazlar. Onun yerine, bölüm 4.12'de
-anlatılan fonksiyonel index'leri kullanabilirsiniz.
- * initdb sırasında öntanımlı C locale'i kullanılmalıdır.
-
-4.9) query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme soktuğunu nasıl görebilirim?
-
-EXPLAIN yardım sayfasına bakınız.
-4.10) R-tree index nedir?
-
-R-tree index, uzaysal (spatial) verileri indexlemek için kullanılır. Bir hash index, dizi aramalarında (range search)
-kullanılamaz. B-tree index dizi aramalarında sadece tek boyutlu çalışmaktadır. R-tree, çok boyutlu veriyi destekler.
-Örneğin, eğer bir R-tree index point veri tipi üzerinde inşa edililebilirse, sistem "select all points within a
-bounding rectangle" gibi sorgulara daha verimli yanıtlar verecektir.
-
-Orijinal R-tree tasarımını açıklayan belge:
-
-Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf
-on Mgmt of Data, 45-57.
-
-Bu belgeyi, Stonebraker'ın "Readings in Database Systems" kitabında bulabilirsiniz.
-
-Gömülü R-tree indexleri poligon ve boxları kullanabilir. Teorik olarak, R-tree indexlerin özelliklerini genişletmek bir
-miktar çaba gerektirir ve bunun nasıl yapılacağına dair bir belgemiz henüz bulunmamaktadır.
-4.11) Genetic Query Optimizer nedir?
-
-GEQO modülü, Genetic Algorithm(GA) kullanılarak tablolar birleştirildiğinde sorgu optimizasyonunu hızlandırır.
-4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük harfe duyarsız aramaları nasıl yapabilirim? Bu
-büyük(küçük harfe duyarlı aramalar için index'i nasıl kullanabilirim?
-
-~ operatörü düzenli ifade eşleşmesi ve ~* büyük/küçük harfe duyarsız düzenli ifade eşleşmesi yapar. Büyük/küçük harfe
-duyarlı olan LIKE'ın büyük/küçük harfe duyarsız olan biçimi ILIKE'tır ve PostgreSQL 7.1 sürümü ile birlikte gelmiştir.
-
-Büyük-küçük harfe duyarsız eşitlik karşılaştırmaları aşağıdaki gibi ifade edilir:
-
+ Eğer optimizer'ın sıralı arama yapmasının yanlış olduğuna
+ inanıyorsanız, SET enable_seqscan TO 'off' kullanın ve index kullanan
+ aramaların hala daha hızlı olup olmadığını görün.
+
+ LIKE ya da ~ gibi operatörler kullanıyorsanız, index'ler sadece
+ aşağıdaki koşullarda kullanılabilir:
+ * Arama dizininin başı, dizinin başı ile bağlanmalıdır. Yani,
+ + LIKE sorguları % ile başlamamalıdır.
+ + Düzenli ifade sorguları ^ işe başlamamalıdır.
+ * Arama metni bir karakter sınıfı ile başlayamaz. Örnek: [a-e]
+ * ILIKE ve ~* gibi büyük/küçük harfe duyarsız aramalar index'lerden
+ yararlanmazlar. Onun yerine, bölüm 4.12'de anlatılan fonksiyonel
+ index'leri kullanabilirsiniz.
+ * initdb sırasında öntanımlı C locale'i kullanılmalıdır.
+
+ 4.9) query-optimizer'ın sorgularımı nasıl değerlendirdiğini, işleme
+ soktuğunu nasıl görebilirim?
+
+ EXPLAIN yardım sayfasına bakınız.
+
+ 4.10) R-tree index nedir?
+
+ R-tree index, uzaysal (spatial) verileri indexlemek için kullanılır.
+ Bir hash index, dizi aramalarında (range search) kullanılamaz. B-tree
+ index dizi aramalarında sadece tek boyutlu çalışmaktadır. R-tree, çok
+ boyutlu veriyi destekler. Örneğin, eğer bir R-tree index point veri
+ tipi üzerinde inşa edililebilirse, sistem "select all points within a
+ bounding rectangle" gibi sorgulara daha verimli yanıtlar verecektir.
+
+ Orijinal R-tree tasarımını açıklayan belge:
+
+ Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
+ Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
+ Data, 45-57.
+
+ Bu belgeyi, Stonebraker'ın "Readings in Database Systems" kitabında
+ bulabilirsiniz.
+
+ Gömülü R-tree indexleri poligon ve boxları kullanabilir. Teorik
+ olarak, R-tree indexlerin özelliklerini genişletmek bir miktar çaba
+ gerektirir ve bunun nasıl yapılacağına dair bir belgemiz henüz
+ bulunmamaktadır.
+
+ 4.11) Genetic Query Optimizer nedir?
+
+ GEQO modülü, Genetic Algorithm(GA) kullanılarak tablolar
+ birleştirildiğinde sorgu optimizasyonunu hızlandırır.
+
+ 4.12) Düzenli ifade (Regular Expression) aramalarını ve büyük/küçük harfe
+ duyarsız aramaları nasıl yapabilirim? Bu büyük(küçük harfe duyarlı aramalar
+ için index'i nasıl kullanabilirim?
+
+ ~ operatörü düzenli ifade eşleşmesi ve ~* büyük/küçük harfe duyarsız
+ düzenli ifade eşleşmesi yapar. Büyük/küçük harfe duyarlı olan LIKE'ın
+ büyük/küçük harfe duyarsız olan biçimi ILIKE'tır ve PostgreSQL 7.1
+ sürümü ile birlikte gelmiştir.
+
+ Büyük-küçük harfe duyarsız eşitlik karşılaştırmaları aşağıdaki gibi
+ ifade edilir:
SELECT *
FROM tab
WHERE lower(col) = 'abc'
-
-
-Bu standart bir index yaratmayacaktır. Ancak eğer fonksiyonel bir index yaratırsanız; o kullanılacaktır:
-
+
+ Bu standart bir index yaratmayacaktır. Ancak eğer fonksiyonel bir
+ index yaratırsanız; o kullanılacaktır:
CREATE INDEX tabindex on tab (lower(col));
-4.13) Bir sorguda, bir alanin "NULL" olduğunu nasıl ortaya çıkarabilirim?
-
-Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
-4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
-
-Veri Tipi İç Adı Not
+ 4.13) Bir sorguda, bir alanin "NULL" olduğunu nasıl ortaya çıkarabilirim?
+
+ Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
+
+ 4.14) Çesitli karakter tipleri arasındaki farklar nelerdir?
+
+Veri Tipi İç Adı Not
--------------------------------------------------
VARCHAR(n) varchar boyut en büyük uzunluğu verir; sadece verilen kadar veri tutulur.
CHAR(n) bpchar belirtilen uzunluğa kadar sonuna boşluk eklenir.
-TEXT text uzunlukta herhangi bir üst sınır yoktur.
+TEXT text uzunlukta herhangi bir üst sınır yoktur.
BYTEA bytea variable-length byte array (null-byte safe)
-"char" char bir karakter
-
-
-İç adları (internal name) sistem kataloglarını ve bazı hata mesajlarını incelerken göreceksiniz.
-
-İlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devamı da veridir.) Dolayısıyla, kullanılan
-gerçek alan, belirtilen alandan biraz daha büyüktür. Ancak, bu veri tipleri, sıkıştırılmaya tabi tutulabilir;
-dolayısıyla disk alanı beklenilenden küçük olabilir. VARCHAR(n) büyüklüğü artabilen ama en büyük uzunluğu sınırlı olan
-verileri saklamak için en uygun yöntemdir. TEXT, 1 GB büyüklüğe kadar olan verileri tutmak için kullanılır.
-
-CHAR(n), aynı uzunluktaki dizilerin saklanması için kullanımır. CHAR(n) belirtilen uzunluğa kadar boşluk ile doldurur;
-ancak VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri saklamak içindir; ayrıca "NULL" bayt içeren
-değerleri de saklar. Burada anlatılan üç veri tipi de benzer başarım karakteristiklere sahiptir.
-4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan yaratabilirim?
-
-PostgreSQL'de SERIAL veri tipi vardır. Bu veri tipi bir sequence ve kolon üzerinde bir index yaratır.
-
-Örnek, aşağıdaki sorgu:
-
+"char" char bir karakter
+
+ İç adları (internal name) sistem kataloglarını ve bazı hata
+ mesajlarını incelerken göreceksiniz.
+
+ İlk dört veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
+ uzunluktur; devamı da veridir.) Dolayısıyla, kullanılan gerçek alan,
+ belirtilen alandan biraz daha büyüktür. Ancak, bu veri tipleri,
+ sıkıştırılmaya tabi tutulabilir; dolayısıyla disk alanı beklenilenden
+ küçük olabilir. VARCHAR(n) büyüklüğü artabilen ama en büyük uzunluğu
+ sınırlı olan verileri saklamak için en uygun yöntemdir. TEXT, 1 GB
+ büyüklüğe kadar olan verileri tutmak için kullanılır.
+
+ CHAR(n), aynı uzunluktaki dizilerin saklanması için kullanımır.
+ CHAR(n) belirtilen uzunluğa kadar boşluk ile doldurur; ancak
+ VARCHAR(n) sadece verilen karakterleri saklar. BYTEA binary veri
+ saklamak içindir; ayrıca "NULL" bayt içeren değerleri de saklar.
+ Burada anlatılan üç veri tipi de benzer başarım karakteristiklere
+ sahiptir.
+
+ 4.15.1) Nasıl serial/otomatik artan (auto-incrementing) bir alan
+ yaratabilirim?
+
+ PostgreSQL'de SERIAL veri tipi vardır. Bu veri tipi bir sequence ve
+ kolon üzerinde bir index yaratır.
+
+ Örnek, aşağıdaki sorgu:
CREATE TABLE person (
id SERIAL,
name TEXT
-);
-
-
-buna çevrilir:
-
+);
+
+ buna çevrilir:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
-CREATE UNIQUE INDEX person_id_key ON person ( id );
-
-
-Sequenceler hakkında daha fazla bilgi için create_sequence yardım sayfasına bakabilirsiniz. Her satırın OID alanını
-tekil bir sayı olarak alabilirsiniz. Ancak, veritabanınızın dump'ını alıp yeniden yüklerseniz, OID değerlerini
-koruyabilmek için pg_dump'ın -o parametresini ya da "COPY WITH OIDS" seçeneğini kullanmanız gerekecektir.
-4.15.2) SERIAL girişinin degerini nasıl alabilirim?
-
-Bir yaklaşım, sequence nesnesindeki SERIAL değerini, veriyi girmeden önce nextval() ile alıp, aldığınız değeri
-kendinizin girmesidir. 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
-
+CREATE UNIQUE INDEX person_id_key ON person ( id );
+
+ Sequenceler hakkında daha fazla bilgi için create_sequence yardım
+ sayfasına bakabilirsiniz. Her satırın OID alanını tekil bir sayı
+ olarak alabilirsiniz. Ancak, veritabanınızın dump'ını alıp yeniden
+ yüklerseniz, OID değerlerini koruyabilmek için pg_dump'ın -o
+ parametresini ya da "COPY WITH OIDS" seçeneğini kullanmanız
+ gerekecektir.
+
+ 4.15.2) SERIAL girişinin degerini nasıl alabilirim?
+
+ Bir yaklaşım, sequence nesnesindeki SERIAL değerini, veriyi girmeden
+ önce nextval() ile alıp, aldığınız değeri kendinizin girmesidir.
+ 4.15.1'deki örnek tabloyu kullanarak bir örnek verelim:
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-Diğer sorgular için new_id'de yeni değerin saklanması gerekir. Otomatik olarak yaratılan SEQUENE nesnesinin adı, __seq
-şeklinde olacaktır (< > işaretleri olmadan).
-
-Alternatif olarak, atanmış SERIAL değerini, değer girildikten sonra currval() fonksiyonu ile alabilirsiniz:
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
-
-Son olarak, ön tanımlı değeri bulmak için INSERT ifadesinden dönen OID değerini kullanabilirsiniz; ancak bu en az
-taşınabilir çözüm olacaktır. Perl'de, Edmund Mergl'in DBD:Pg mödülü ile birlikte DBI kullanarak, OID değeri
-$sth->execute() çalıştırıldıktan sonra $sth->(pg_oid_status) ile alınabilir.
-4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
-
-Hayır. curval(), tüm kullanıcılar değil, backend tarafından atanan geçerli değeri döndürür.
-4.15.4) Neden sequence sayıları transaction işleminin iptalinden sonra yeniden kullanılıyor? Neden sequence/SERIAL
-kolonumdaki sayılarda atlamalar oluyor?
-
-Uyumluluğu arttırmak için, sequence değerleri çalışan transaction'lara gerektiği şekilde aktarılır ve transaction
-bitene kadar o değer kilitlenmez. Bu, iptal edilen transaction işlemleri nedeniyle boşluklara neden olur.
-4.16) OID nedir? TID nedir?
-
-OIDler, tekil satır numaralarına PostgreSQL'in yanıtıdır. PostgreSQL'de yaratılan her sayı, tekil bir OID alır. initdb
-işlemi sırasında yaratılan tüm OID'ler 16384'ten küçüktür (backend/access/transam.h). Kullanıcılar tarafından yaratılan
-tüm OID'ler bu sayıya eşit ya da bu sayıdan büyüktür. Varsayılan durumda, tüm bu OIDler sadece bir tablo ya da
-veritabanında değil, tüm PostgreSQL kurulumunda tekildir.
-
-PostgreSQL OIDleri, tablolar arasında satırları ilişkilendirmek için kendi iç tablolarında kullanır. Bu OIDler belirli
-kullanıcı satırlarını belirtmek için kullanabilir ve join işlemlerinde kullanılır. OID değerlerini saklamak için OID
-kolon tipini kullanmanız önerinir. Daha hızlı bir erişim için, OID alanında bir index yaratabilirsiniz.
-
-OID'ler yeni satırlara, tüm veritabanları tarafında kullanılan ortak bir alandan atanırlar. Eğer OID'i başka bir değere
-eşitlemek isterseniz ya da tablonun bir kopyasını orijinal OIDler ile çıkarmak isterseniz, bu mümkündür:
-
- CREATE TABLE new_table(old_oid oid, mycol int);
- SELECT old_oid, mycol INTO new FROM old;
- COPY new TO '/tmp/pgtable';
- DELETE FROM new;
- COPY new WITH OIDS FROM '/tmp/pgtable';
-
-
-OIDler 4-bit tamsayı olarak saklanırlar ve 4 milyarda overflow olacaktır. Kimse 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.
-
-TIDler, belirli fiziksel satırlar block ve offset değerleri ile belirtmekte kullanılır. TIDler, satırlar değiştiğinde
-ya da yeniden yüklendiğinde değişirler. Index girdileri tarafından fiziksel satırları göstermek için kullanılırlar.
-
-4.17) PostgreSQL'de kullanılan bazı terimlerin anlamları nelerdir?
-
-Kaynak kodun bir kısmı ve eski belgeler, daha geniş kullanım alanı olan terimleri kullanırlar. Bunların bazıları:
-
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
-Genel veritabanı terimleri, http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-adresinde bulunabilir.
-4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını alıyorum?
-
-Sisteminizde sanal belleğinizi tüketmiş olabilirsiniz, ya da çekirdeğiniz belli kaynaklar icin düşük bir sınıra sahip
-olabilir. postmaster'ı başlatmadan önce aşağıdakileri deneyebilirsiniz:
-
+ Diğer sorgular için new_id'de yeni değerin saklanması gerekir.
+ Otomatik olarak yaratılan SEQUENE nesnesinin adı, <tablo adı>_<serial
+ kolonu adı>_seq şeklinde olacaktır (< > işaretleri olmadan).
+
+ Alternatif olarak, atanmış SERIAL değerini, değer girildikten sonra
+ currval() fonksiyonu ile alabilirsiniz:
+ execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
+ new_id = execute("SELECT currval('person_id_seq')");
+
+ Son olarak, ön tanımlı değeri bulmak için INSERT ifadesinden dönen OID
+ değerini kullanabilirsiniz; ancak bu en az taşınabilir çözüm
+ olacaktır. Perl'de, Edmund Mergl'in DBD:Pg mödülü ile birlikte DBI
+ kullanarak, OID değeri $sth->execute() çalıştırıldıktan sonra
+ $sth->(pg_oid_status) ile alınabilir.
+
+ 4.15.3) currval() ve nextval() diğer kullanıcılara sorun yaratmaz mı?
+
+ Hayır. curval(), tüm kullanıcılar değil, backend tarafından atanan
+ geçerli değeri döndürür.
+
+ 4.15.4) Neden sequence sayıları transaction işleminin iptalinden sonra
+ yeniden kullanılıyor? Neden sequence/SERIAL kolonumdaki sayılarda atlamalar
+ oluyor?
+
+ Uyumluluğu arttırmak için, sequence değerleri çalışan transaction'lara
+ gerektiği şekilde aktarılır ve transaction bitene kadar o değer
+ kilitlenmez. Bu, iptal edilen transaction işlemleri nedeniyle
+ boşluklara neden olur.
+
+ 4.16) OID nedir? TID nedir?
+
+ OIDler, tekil satır numaralarına PostgreSQL'in yanıtıdır.
+ PostgreSQL'de yaratılan her sayı, tekil bir OID alır. initdb işlemi
+ sırasında yaratılan tüm OID'ler 16384'ten küçüktür
+ (backend/access/transam.h). Kullanıcılar tarafından yaratılan tüm
+ OID'ler bu sayıya eşit ya da bu sayıdan büyüktür. Varsayılan durumda,
+ tüm bu OIDler sadece bir tablo ya da veritabanında değil, tüm
+ PostgreSQL kurulumunda tekildir.
+
+ PostgreSQL OIDleri, tablolar arasında satırları ilişkilendirmek için
+ kendi iç tablolarında kullanır. Bu OIDler belirli kullanıcı
+ satırlarını belirtmek için kullanabilir ve join işlemlerinde
+ kullanılır. OID değerlerini saklamak için OID kolon tipini kullanmanız
+ önerinir. Daha hızlı bir erişim için, OID alanında bir index
+ yaratabilirsiniz.
+
+ OID'ler yeni satırlara, tüm veritabanları tarafında kullanılan ortak
+ bir alandan atanırlar. Eğer OID'i başka bir değere eşitlemek
+ isterseniz ya da tablonun bir kopyasını orijinal OIDler ile çıkarmak
+ isterseniz, bu mümkündür:
+ CREATE TABLE new_table(old_oid oid, mycol int);
+ SELECT old_oid, mycol INTO new FROM old;
+ COPY new TO '/tmp/pgtable';
+ DELETE FROM new;
+ COPY new WITH OIDS FROM '/tmp/pgtable';
+
+ OIDler 4-bit tamsayı olarak saklanırlar ve 4 milyarda overflow
+ olacaktır. Kimse 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.
+
+ TIDler, belirli fiziksel satırlar block ve offset değerleri ile
+ belirtmekte kullanılır. TIDler, satırlar değiştiğinde ya da yeniden
+ yüklendiğinde değişirler. Index girdileri tarafından fiziksel
+ satırları göstermek için kullanılırlar.
+
+ 4.17) PostgreSQL'de kullanılan bazı terimlerin anlamları nelerdir?
+
+ Kaynak kodun bir kısmı ve eski belgeler, daha geniş kullanım alanı
+ olan terimleri kullanırlar. Bunların bazıları:
+ * table, relation, class
+ * row, record, tuple
+ * column, field, attribute
+ * retrieve, select
+ * replace, update
+ * append, insert
+ * OID, serial value
+ * portal, cursor
+ * range variable, table name, table alias
+
+ Genel veritabanı terimleri,
+ http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
+ /glossary.html adresinde bulunabilir.
+
+ 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()" hatasını alıyorum?
+
+ Sisteminizde sanal belleğinizi tüketmiş olabilirsiniz, ya da
+ çekirdeğiniz belli kaynaklar icin düşük bir sınıra sahip olabilir.
+ postmaster'ı başlatmadan önce aşağıdakileri deneyebilirsiniz:
ulimit -d 262144
-limit datasize 256m
-
-
-Kabuğunuza bağlı olarak, bunlardan sadece biri olumlu sonuç verecektir, ama bu işlem veri segment sınırınızı
-arttıracak, ve belki de sorgunuzun tamamlanmasını sağlayacaktır. Bu komut, varolan işleme (current process) ve komut
-çalıştırıldıktan sonraki tüm alt işlemlere uygulanır. Eğer SQL istemcinizle, backend'in çok fazla veri döndürmesi
-nedeniyle bir sorun yaşıyorsanız, bunu istemciyi başlatmadan önce deneyiniz.
-4.19) Hangi PostgreSQL sürümünü çalıştırdığımı nasıl görebilirim?
-
-psql arabiriminde, select version(); yazınız.
-4.20) Neden large-object işlemlerim, "invalid large obj descriptor" hatasını veriyor?
-
-Large object işlemlerinizin uçlarına, yani lo_open ... lo_close komutlarının çevresine, BEGIN WORK ve COMMIT koymanız
-gerekmektedir;
-
-Şu anda, PostgreSQL kuralları large objectleri transaction commit edildiğinde kapatarak uygulamaktadır. Dolayısıyla
-handle ile yapılacak ilk şey invalid large obj descriptor hatası ile sonuçlanacaktır.Dolayısıyla çalışan kodunuz eğer
-transaction kullanmazsanız hata mesajları üretecektir.
-
-Eğer ODBC gibi bir istemci arabirimi kullanıyorsanız, auto-commit'i kapatmanız gerekebilir.
-4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden How do I create a column that will default to the current
-time?
-
-Alttakini kullanabilirsiniz:
-
+limit datasize 256m
+
+ Kabuğunuza bağlı olarak, bunlardan sadece biri olumlu sonuç
+ verecektir, ama bu işlem veri segment sınırınızı arttıracak, ve belki
+ de sorgunuzun tamamlanmasını sağlayacaktır. Bu komut, varolan işleme
+ (current process) ve komut çalıştırıldıktan sonraki tüm alt işlemlere
+ uygulanır. Eğer SQL istemcinizle, backend'in çok fazla veri döndürmesi
+ nedeniyle bir sorun yaşıyorsanız, bunu istemciyi başlatmadan önce
+ deneyiniz.
+
+ 4.19) Hangi PostgreSQL sürümünü çalıştırdığımı nasıl görebilirim?
+
+ psql arabiriminde, select version(); yazınız.
+
+ 4.20) Neden large-object işlemlerim, "invalid large obj descriptor"
+ hatasını veriyor?
+
+ Large object işlemlerinizin uçlarına, yani lo_open ... lo_close
+ komutlarının çevresine, BEGIN WORK ve COMMIT koymanız gerekmektedir;
+
+ Şu anda, PostgreSQL kuralları large objectleri transaction commit
+ edildiğinde kapatarak uygulamaktadır. Dolayısıyla handle ile yapılacak
+ ilk şey invalid large obj descriptor hatası ile
+ sonuçlanacaktır.Dolayısıyla çalışan kodunuz eğer transaction
+ kullanmazsanız hata mesajları üretecektir.
+
+ Eğer ODBC gibi bir istemci arabirimi kullanıyorsanız, auto-commit'i
+ kapatmanız gerekebilir.
+
+ 4.21) Şu andaki zamanı öntanımlı değer olarak kabul eden How do I create a
+ column that will default to the current time?
+
+ Alttakini kullanabilirsiniz:
CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-
-4.22) Neden IN kullanan subquery'lerim çok yavas?
-
-7.4 sürümünden önce, subqueryler. Eğer subquery sadece birkaç satır ve outer query bol sayıda satır döndürüyorsa, IN en
-hızlısıdır. Sorguları hızlandırmak için IN yerine EXISTS kullanın:
-
+
+ 4.22) Neden IN kullanan subquery'lerim çok yavas?
+
+ 7.4 sürümünden önce, subqueryler. Eğer subquery sadece birkaç satır ve
+ outer query bol sayıda satır döndürüyorsa, IN en hızlısıdır. Sorguları
+ hızlandırmak için IN yerine EXISTS kullanın:
SELECT *
FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2)
-
-
-sorgusunu, aşağıdaki ile değiştirin:
-
+
+ sorgusunu, aşağıdaki ile değiştirin:
SELECT *
FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
-
-
-Bu işlemin hızlı olması için, subcol'un indexlenmiş bir kolon olması gerekmektedir.
-
-7.4 sürümü ve sonrasında, IN aslında normal sorgularla aynı karmaşık join tekniklerini kullanır ve EXISTS'e tercih
-edilir.
-4.23) Outer join işlemini nasıl yapabilirim?
-
-PostgreSQL outer joins islemlerini SQL standartlarını kullanarak gerçekleştirmektedir. Aşağıda 2 örnek bulunmaktadır:
-
+ WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+
+ Bu işlemin hızlı olması için, subcol'un indexlenmiş bir kolon olması
+ gerekmektedir.
+
+ 7.4 sürümü ve sonrasında, IN aslında normal sorgularla aynı karmaşık
+ join tekniklerini kullanır ve EXISTS'e tercih edilir.
+
+ 4.23) Outer join işlemini nasıl yapabilirim?
+
+ PostgreSQL outer joins islemlerini SQL standartlarını kullanarak
+ gerçekleştirmektedir. Aşağıda 2 örnek bulunmaktadır:
SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-
-ya da
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ ya da
SELECT *
-FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-
-Bu özdeş sorgular t1.col' i t2.col'ye join ederler ve aynı zamanda t1'deki unjoined satırları (t2'de eşlenmemiş
-olanlarla) döndürürler. RIGHT JOIN t2'nin unjoined satırlarını ekleyecektir. Bir FULL join, eşleşmiş bütün satırları ve
-t1 ile t2'den tüm bağlanmamış (unjoined) satırları alır. OUTER sözcüğü seçimseldir ve LEFT, RIGHT ve FULL join
-işlemlerinde olduğu kabul edilir. Sıradan join işlemleri INNER JOIN olarak adlandırılır.
-
-Önceki sürümlerde, OUTER JOINler UNION ve NOT IN kullanılarak simüle edilebiliyordu. Örneğin, tab1 ve tab2'yi
-birleştirirken, aşağıdaki sorgu iki tablonun dıştan bağlanmasını sağlar:
-
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+
+ Bu özdeş sorgular t1.col' i t2.col'ye join ederler ve aynı zamanda
+ t1'deki unjoined satırları (t2'de eşlenmemiş olanlarla) döndürürler.
+ RIGHT JOIN t2'nin unjoined satırlarını ekleyecektir. Bir FULL join,
+ eşleşmiş bütün satırları ve t1 ile t2'den tüm bağlanmamış (unjoined)
+ satırları alır. OUTER sözcüğü seçimseldir ve LEFT, RIGHT ve FULL join
+ işlemlerinde olduğu kabul edilir. Sıradan join işlemleri INNER JOIN
+ olarak adlandırılır.
+
+ Önceki sürümlerde, OUTER JOINler UNION ve NOT IN kullanılarak simüle
+ edilebiliyordu. Örneğin, tab1 ve tab2'yi birleştirirken, aşağıdaki
+ sorgu iki tablonun dıştan bağlanmasını sağlar:
SELECT tab1.col1, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
@@ -838,60 +1114,79 @@ UNION ALL
SELECT tab1.col1, NULL
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-ORDER BY col1
-
-
-4.24) Aynı andan birden fazla veritabanında nasıl işlem yapabilirim?
-
-Mevcut veritabanınız dışındaki başka bir veritabanınızı sorgulamanızın bir yolu bulunmamaktadır. Bunun nedeni,
-PostgreSQL'in veritabanına özel sistem katalogları yüklemesidir. Bu nedenle, cross-database bir sorgunun nasıl
-davranacağını kestirmek zordur.
-
-contrib/dblink fonksiyon çağrılarını kullanarak cross-database sorgulara izin verir. Tabii ki, bir istemci değişik
-veritabanlarına aynı anda erişim sağlayabilir ve bilgiyi bu şekilde birleştirebilir.
-
-4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
-
-7.3 sürümünde, bir fonksiyondan kolaylıkla çoklu satır ya da sütun döndürebilirsiniz.
-(http://techdocs.postgresql.org/guides/SetReturningFunctions)
-
-4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo yaratma/kaldırma işlemlerini yapamıyoruz?
-
-PL/PgSQL fonksiyon içerikleri cache'ler. Bunun istenmeyen bir tarafı, eğer bir PL/PgSQL fonksiyonu geçici bir tabloya
-erişiyorsa ve bu tablo ileride kaldırılıp yeniden oluşturulduktan sonra fonksiyon yeniden çağrılırsa, fonksiyon
-çalışmayacaktır; çünkü cache'lenmiş fonksiyon hala eski geçici tabloyu gösteriyor olacaktır. Çözüm, geçici tablo
-erişimleri için PL/PgSQL'de EXECUTE kullanmaktır. Bu, sorgunun her seferinde yeniden işlenmesini sağlayacaktır.
-
-4.27) Hangi şifreleme seçenekleri bulunmaktadır?
-
- * contrib/pgcrypto SQL sorgularında kullanılabilmesi için şifreleme fonksiyonları içermektedir.
- * İstemciden sunucuya iletişimi şifrelemek için, sunucuda ssl seçeneği postgresql.conf içinde açık olmalıdır.
-Ayrıca,pg_hba.conf dosyası içinde host ya da hostssl kaydı mutlaka olmalıdır ve istemci sslmode kapatılmamalıdır. (Aynı
-zamanda,PostgreSQL'in doğal SSL bağlantıları dışında ssh ya da ssl gibi 3.parti şifrelenmiş veri iletimi de mümkündür.)
- * Veritabanı kullanıcı adı ve şifreleri 7.3 sürümü ile birlikte otomatik olarak şifrelenirler. Önceki sürümlerde,
-postgresql.conf içindeki PASSWORD_ENCRYPTION seçeneğini aktif hale getirmeniz gerekmektedir.
- * Sunucunun kendisini şifreli dosya sistemi üzerinde çalıştırabilirsiniz.
-
-PostgreSQL Özelliklerini Genişletmek
-
-5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım zaman neden core dump ediyor?
-
-Sorunun nedeni birden fazla şey olabilir. Kullanıcı-tanımlı fonksiyonunuzu stand-alone bir programda çalıştırmayı
-deneyiniz.
-
-5.2) PostgreSQL'e nasıl yeni tipler/fonksiyonlar ekleyebilirim?
-
-Çalışmalarınızı pgsql-hackers e-posta listesine gönderiniz. Kodunuz incelendikten sonra /contrib dizinine konacaktır.
-
-5.3) Bir tuple dondürmek icin bir C fonksiyonunu nasil yazarım?
-
-PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanılarak tablo-döndüren fonksiyonlar tamamen
-desteklenmektedir. Ayrıntılı bilgi için PostgreSQL 7.3.2 Kullanıcı Rehberi'ne bakabilrisiniz. Bir örneği
-contrib/tablefunc içinde bulabilirsiniz.
-
-5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen değişiklik geçerli olmuyor. Neden?
-
-Makefile'lar include dosyaları için tam bir bağımlılık içermezler. Öncelikle make clean, ardından da baska bir make
-işlemi yapmanız gerekir. GCC kullanıyorsanız, configure betiğinin --enable-depend seçeneğini, derleyicinin
-bağımlılıkları otomatik olarak hesaplaması için kullanabilirsiniz.
-
+ORDER BY col1
+
+ 4.24) Aynı andan birden fazla veritabanında nasıl işlem yapabilirim?
+
+ Mevcut veritabanınız dışındaki başka bir veritabanınızı sorgulamanızın
+ bir yolu bulunmamaktadır. Bunun nedeni, PostgreSQL'in veritabanına
+ özel sistem katalogları yüklemesidir. Bu nedenle, cross-database bir
+ sorgunun nasıl davranacağını kestirmek zordur.
+
+ contrib/dblink fonksiyon çağrılarını kullanarak cross-database
+ sorgulara izin verir. Tabii ki, bir istemci değişik veritabanlarına
+ aynı anda erişim sağlayabilir ve bilgiyi bu şekilde birleştirebilir.
+
+ 4.25) Bir fonksiyondan nasıl çoklu satır ya da kolon döndürebilirim?
+
+ 7.3 sürümünde, bir fonksiyondan kolaylıkla çoklu satır ya da sütun
+ döndürebilirsiniz.
+ (http://techdocs.postgresql.org/guides/SetReturningFunctions)
+
+ 4.26) Neden Pl/PgSQL fonksiyonları içinden güvenli bir şekilde tablo
+ yaratma/kaldırma işlemlerini yapamıyoruz?
+
+ PL/PgSQL fonksiyon içerikleri cache'ler. Bunun istenmeyen bir tarafı,
+ eğer bir PL/PgSQL fonksiyonu geçici bir tabloya erişiyorsa ve bu tablo
+ ileride kaldırılıp yeniden oluşturulduktan sonra fonksiyon yeniden
+ çağrılırsa, fonksiyon çalışmayacaktır; çünkü cache'lenmiş fonksiyon
+ hala eski geçici tabloyu gösteriyor olacaktır. Çözüm, geçici tablo
+ erişimleri için PL/PgSQL'de EXECUTE kullanmaktır. Bu, sorgunun her
+ seferinde yeniden işlenmesini sağlayacaktır.
+
+ 4.27) 4.28) Hangi şifreleme seçenekleri bulunmaktadır?
+
+ * contrib/pgcrypto SQL sorgularında kullanılabilmesi için şifreleme
+ fonksiyonları içermektedir.
+ * İstemciden sunucuya iletişimi şifrelemek için, sunucuda ssl
+ seçeneği postgresql.conf içinde açık olmalıdır. Ayrıca,pg_hba.conf
+ dosyası içinde host ya da hostssl kaydı mutlaka olmalıdır ve
+ istemci sslmode kapatılmamalıdır. (Aynı zamanda,PostgreSQL'in
+ doğal SSL bağlantıları dışında ssh ya da ssl gibi 3.parti
+ şifrelenmiş veri iletimi de mümkündür.)
+ * Veritabanı kullanıcı adı ve şifreleri 7.3 sürümü ile birlikte
+ otomatik olarak şifrelenirler. Önceki sürümlerde, postgresql.conf
+ içindeki PASSWORD_ENCRYPTION seçeneğini aktif hale getirmeniz
+ gerekmektedir.
+ * Sunucunun kendisini şifreli dosya sistemi üzerinde
+ çalıştırabilirsiniz.
+ _________________________________________________________________
+
+ PostgreSQL Özelliklerini Genişletmek
+
+ 5.1) Kullanıcı-tanımlı bir fonksiyon yazdım. psql'de çalıştırdığım zaman
+ neden core dump ediyor?
+
+ Sorunun nedeni birden fazla şey olabilir. Kullanıcı-tanımlı
+ fonksiyonunuzu stand-alone bir programda çalıştırmayı deneyiniz.
+
+ 5.2) PostgreSQL'e nasıl yeni tipler/fonksiyonlar ekleyebilirim?
+
+ Çalışmalarınızı pgsql-hackers e-posta listesine gönderiniz. Kodunuz
+ incelendikten sonra /contrib dizinine konacaktır.
+
+ 5.3) Bir tuple dondürmek icin bir C fonksiyonunu nasil yazarım?
+
+ PostgreSQL 7.3 sürümü ile birlikte, C, PL/PgSQL ve SQL kullanılarak
+ tablo-döndüren fonksiyonlar tamamen desteklenmektedir. Ayrıntılı bilgi
+ için PostgreSQL 7.3.2 Kullanıcı Rehberi'ne bakabilrisiniz. Bir örneği
+ contrib/tablefunc içinde bulabilirsiniz.
+
+ 5.4) Bir kaynak dosyasında değişiklik yaptım. Yeniden derlememe rağmen
+ değişiklik geçerli olmuyor. Neden?
+
+ Makefile'lar include dosyaları için tam bir bağımlılık içermezler.
+ Öncelikle make clean, ardından da baska bir make işlemi yapmanız
+ gerekir. GCC kullanıyorsanız, configure betiğinin --enable-depend
+ seçeneğini, derleyicinin bağımlılıkları otomatik olarak hesaplaması
+ için kullanabilirsiniz.