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.
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.
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 ü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.
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.
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.
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.
SQL Name |
PostgreSQL name |
Notes             |
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. |
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); |
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 |
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. |
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 |
SQL Name |
PostgreSQL name |
Notes |
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. |
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
|
|||||||||
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 |
SQL Name |
PostgreSQL name |
Notes |
[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 |
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.
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