Önceki bölüm PostgreSQL - Kurulum ve Çalıştırma Sonraki Bölüm

Veritabanı büyüklüğü: Sınırsız

PostgreSQL bir veritabanının toplam büyüklüğü için herhangi bir sınır koymaz. Şu anda bilinen 60 GB’lik bir veritabanı vardır.

PostgreSQL’in veriyi düzenleme yönteminden dolayı çok fazla tablo içeren veritabanlarında başarım gittikçe düşer. PostgreSQL veriyi saklamak için çok sayıda dosya kullanacaktır, ve işletim sistemi tek bir dizinde bu kadar çok dosyayı yönetemezse, başarım düşecektir.

Tablo büyüklüğü: 16Tb-64Tb

PostgreSQL normalde tablo verilerini 8k’lık parçalarda tutar. Bu blokların sayıları 32-bit signed integer kadar sınırlıdır (2 milyarın hemen üstü) ve 16 TeraByte kadar bir tablo büyüklüğü sağlar. Temel blok büyüklüğü PostgreSQL kurulurken 32k ya kadar  yükseltilebilir ve bu da teorik olarak 64 TB’lık bir sınır getirir.

Bazı işletim sistemleri dosya büyüklükleri için bir sınır koyarlar. Bu nedenden, PostgreSQL tablo verilerini her biri en fazla 1GB büyüklükte olabilecek çoklu dosyalarda tutar. Büyük tablolar için bu bir çok dosya anlamına gelecek ve daha önce de blirtildiği gibi sistem başarımının düşmesine neden olacaktır.

Bu büyüklük işletim sisteminden bağımsızdır.

Tablodaki satır sayısı: Sınırsız

PostgreSQL tablodaki satırlarda herhangi bir sınır koymaz. Aslında toplam  COUNT fonksiyonu 32-bit tamsayı döndürür, dolayısıyla 2 milyar satırın üzerindeki tablolar için COUNT anlamsız olacaktır.

Bu değer sürüm 7.1 ve sonrasında sınırsız olmuştur.

Tablo indexleri: Sınırsız

Tablo üzerinde yaratılabilecek indexlerde PostgreSQL tarafından konan herhangi bir limit yoktur. Ancak unutulmaması gereken, oldukça fazla kolon içeren bir tabloda çok fazla index yaratma çalışırsak başarım gittikçe düşecektir.

Field büyüklüğü: 1Gb

PostgreSQL , sürüm 7.1 ve sonrasında bir tablodaki herhangi bir field için 1 GB’lik bir sınır getirmiştir. Pratikte bu limit sunucunun veriyi işleme ve istemciye transfer etmesi için gerekli hafıza miktarından gelir.

Tablodaki kolon sayısı: 250+

PostgreSQL’de tutulabilecek en fazla kolon sayısı, konfigure edilmiş blok büyüklükleri ve kolon tiplerine bağlıdır. Varsayılan değer olarak blok büyüklüğü olan 8k’da en az 250 kolon saklanabilir, bu sayı eğer fieldlar oldukça basit ise (tamsayı değerleri gibi) 1600 e kadar çıkabilir.Blok büyüklüğünü arttırmak eş zamanlı olarak bu limitleri de arttırır.

Satır büyüklüğü : Sınırsız

Bir satırın büyüklüğü için bir sınır yoktur, ancak kolonlar ve onların büyüklüğü yukarıda anlatıldığı gibi sınırlıdır.

Bu sınır, sürüm 7.1’den sonra kaldırılmıştır.

PostgreSQL veri tipleri

PostgreSQL, Users’ Guide ve psql’deki \dT komutu ile de görülebileceği gibi oldukça fazla veri tipini destekler. Burada bazı özel veri tipleri ve PostgreSQL tarafından internal olarak kullanılan veri tipleri hariç en çok kullanılan veri tipleri verilecektir. Tam liste için psql’deki \dT yi kullanınız.

Bu tablolarda önce standart SQL adı (PostgreSQL’in genelde kabul ettiği), sonra da PostgreSQL’e özel alternatif adlar verilmiştir. Bazı veri tipleri PostgreSQL’e özeldir, dolayısıyla bunların SQL adları verilmemiştir. Pratikte, SQL standartlarını kullanmanız önerilir.

Aşağıdaki metinler yurtdışında yayınlanan bir kitaptan alınmıştır. İngilizce metinlerin daha anlaşılır olması nedeniyle metinler Türkçe’ye çevirilmemiştir. Türkçe metinler çok yakında http://seminer.devrim.oper.metu.edu.tr adresinde bulunabilir.

Logical types

SQL Name

PostgreSQL name

Notes             

Boolean, bool

bool

Holds a truth value. Will accept values such as TRUE, 't', 'true', 'y', 'yes', '1' as true, same is true for false.

Uses 1 byte of storage, and can store NULL, unlike a few proprietary databases.

Boolean was not officially added to the SQL language until the SQL99 standard, although it was in common use long before that.

Exact number types

SQL Name

PostgreSQL name

Notes

Smallint

int2

A signed two-byte integer which can store -32768 to +32767

integer, int

int4

A signed 4-byte integer which can store -2147483648 to +2147483647

 

int8

A signed 8-byte integer, giving approximately 18 digits of precision.

Bit

bit

Stores a single bit, 0 or 1.

bit varying

varbit

Stores a sequence of bits. To insert into a table use syntax such as INSERT INTO … VALUES(011101::varbit);

Approximate number types

SQL Name

PostgreSQL name

Notes

Numeric (precision, scale)

Numeric (precision, scale)

Stores an exact number to the precision specified.  The user guide states there is no limit to the precision.

decimal(precision, scale)

decimal(precision, scale)

By default precision will be 9, and scale 0. Range is approximately 8000 digits according to the user guide. In standard SQL the difference between decimal and numeric is that with numeric the precision must be exactly as requested, with decimal the implementation may choose to store additional precision. We suggest you stick to numeric rather than use decimal

float(precision)

float4, float8

A floating point number with at least the given precision. If the precision requested is less than 7 digits float4 is used, otherwise float8 will be used with a maximum precision of 15 digits. Use float(15) to get an equivalent to the standard SQL type of double precision.

real

Float4

We recommend you stick to float(precision).

double precision

Float8

Same as float(15).

 

Money

This is the same as decimal(9,2). Its use is discouraged.

Temporal types

SQL Name

PostgreSQL name

Notes

timestamp

timestamp, datetime

Stores times from 4713BC to 1465001AD, with a resolution of 1 microsecond.

The format is : YYYY-MM-DD  HH-MM:SS+0X where X is determined due to Greenwich time.

timestamp with timezone

timestamp with timezone

Stores times from 1903AD to 2037AD, with a resolution of 1 microsecond.

interval

interval, timespan

Can store an interval of approximately +/- 178000000 years, with a resolution of 1 microsecond.

date

Date

Stores dates from 4713BC to 32767AD with a resolution of 1 day

time

Time

Stores a time of day, from 0 to 23:59:59.99 with a resolution of 1 microsecond.

time with timezone

Time with timezone

Same as time, except a timezone is also stored

Character types

SQL Name

PostgreSQL name

Notes

char

Char

Stores a single character

char(n)

Char(n)

Stores exactly n characters, which will be padded with blanks if less characters are actually stored. Recommended only for short strings of known length.

varchar(n), char varying(n)

varchar(n)

Stores a variable number of characters, up to a maximum of n characters, which are not padded with blanks. This is the 'standard' choice for character strings.

 

Text

A PostgreSQL specific variant of varchar, which does not require you to specify an upper limit on the number of characters.

Geometric

SQL Name

PostgreSQL name

Notes

 

point

An x,y value

 

Line

A pair of points (Infinite line)

 

lseg

A pair of points (Finite line)

 

box

A box specified by a pair of points

 

path

A sequence of points, which may be closed or open

path

4+32n bytes

((x1,y1),...)

Closed path (similar to polygon)

path

4+32n bytes

[(x1,y1),...]

Open path

 

polygon

A sequence of points, effectively a closed path, but handled differently internal to PostgreSQL.

 

circle

A point and a length (radius), which specify a circle

Miscellaneous

SQL Name

PostgreSQL name

Notes

serial

[uses an integer]

In standard SQL a serial is a numeric column in a table that increases each time a row is added.

PostgreSQL does not implement the serial type as a separate type, although it accepts the standard SQL syntax. Internally PostgreSQL uses an integer to store the value, and a sequence to manage the automatic incrementing of the value. Its range is 0 to +2147483647.

 

oid

An object id. Internally PostgreSQL adds a hidden oid to each row, and stores a 4 byte integer, giving a maximum value of approximately 4 billion.

 

cidr

Stores a network address of the form x.x.x.x/y where y is the netmask.

CIDR is classless inter-domain routing. In "normal" IP you have three classes A, B and C that have a network part of 8, 16 and 24-bits respectively, allowing 16.7million, 65thousand and 254 hosts per network. CIDR allows network masks of any size, so you can better allocate IP addresses and route between them in a hierarchical fashion.

 

inet

Similar to cidr except the host part can be 0.

 

macaddr

A MAC address of the form XX:XX:XX:XX:XX:XX

 

 

 

 

Kurulum:

Giriş:

SuSE ve RedHat dağıtımlarında PostgreSQL kurulmuş, ya da kurulmaya hazır olarak gelir.

Unix tabanlı sistemlerde kaynak kodunu derleyerek kurmanız gerekir. Bunu birazdan göreceğiz. Kaynak kodundan kurmak bize bazı parametreleri değiştirme şansını verecektir. RPM kurulumunda bu şans sonradan vardır ve  kısıtlıdır.

Windows kullanıcıları: PostgreSQL Unix tabanlı ortamlarda geliştirilmiş ve bu ortamlarda stable olarak çalışması için kodlanmış olsa da sürüm 7.1 den sonra NT çekirdekli işletim sistemlerinde (NT/2000/XP) altında kullanılabilmeye başlamıştır. Bunun için ek bir yazılım gerekir (Cygwin). Bu yazılımla bazı Unix özelliklerini Windows altında kullanma şansımız olacaktır.

RPM’ den kurma (binary installation)

için rpmleri kolaylıkla bulabilirsiniz.

Tüm özellikleri ile çalışan PostgreSQL’ i kurabilmek için aşağıdaki paketler gerekmektedir:

postgresql

Ana paket

postgresql-libs

Library dosyaları, v7.1.0 ve sonrasını kurarken önemlidir.

postgresql-devel

Development için gereken dosya ve kitaplıklar.

postgresql-jdbc

PostgreSQL  için Java database connectivity

postgresql-odbc

PostgreSQL  için Open database connectivity

postgresql-perl

Perl için PostgreSQL arayüzü

postgresql-python

Python için PostgreSQL arayüzü

postgresql-server

Bir sunucuyu yaratmak ve çalıştırmak için gerekli programlar

postgresql-tcl

Tcl için PostgreSQL arayüzü

postgresql-test

PostgreSQL test suite

postgresql-tk

PostgreSQL için Tk kabuğu ve Tk-tabanlı GUI

Postgresql-contrib

PostgreSQL ile dağıtılan contributed source.

Tam dosya isimleri, sonuna sürüm numarası eklenmiş halleridir. Paketleri kurarken, aynı revision leveldaki paketleri kullanmanız önerilir. Paketleri kurmak için, RPM paket yönetim uygulamasını kullanabilirsiniz. Öncelikle postgresql-libs paketini kuralım:

[root@localhost root]#rpm –i postgresql-libs-7.1.3-2.i386.rpm

Bu işlemi root iken yapmak gerekmektedir. GnoRPM ya da kpackage (KDE ile gelir) uygulamalarını da rpmleri kurmak için kullanabiliriz. Bu komut, paketi açarak içindeki



Önceki bölüm PostgreSQL - Kurulum ve Çalıştırma Sonraki Bölüm