Postgresql ve Mysql
Diğer rdbmslerden soyutlayarak yanına mysql’i koyarak bir karşılaştırma yapalım,
– Benchmarklar sonucu postgresql’in dizel motor mysql’in benzin motor oldugu soylenebilir. mysql transaction ve foreign key desteklemeyen myisam’i ile testlerde hiz rekorlari kirmakta iken, postgresql opensource bir veritabani ile yapacaginiz calismalarin %90’inda fark edemeyeceginiz hiz farklarinda geride kalmakta fakat stabilite vaad etmektedir.
– postgresql’de ilk kullanista veritiplerinde cok cesitlilik fark edilmeyecek gibi degildir. bit(n)/bool gibi veritipleri hizmetinize amadedir.
– ornegin mysql’de zorlandigimiz date/time tipleri postgresql’de daha fazla guven vermektedir. mysql’de microtime olarak bir time value tutmak icin sikismis timestamp formati, double(16,4) veya numeric(16,4) [oha] gibi fieldtype’lar kullanirken postgresql’de ’2005-12-15 04:00:52.403’ formatinda timestamp kullanabilmekteyiz.
– yine veritiplerinden devam edelim; herhangi bir column/satır array/dizi olarak bir veritipini barindirabilir postgresql’de, yani int[] olarak tanimlanmis bir field: [20,6,2] seklinde datayi rahatlikla saklayacaktir. yanilmiyorsam varchar gibi rowlength’i dynamic sekilde hesapliyor olmali.
– mysql’de dynamic rowtypelara sahip yani text-varchar kullanilmis tablolarda asla tam olarak fixed-length fieldtype’lar kullanamazdik. bir char tanimlayamazdik, oysa ki postgresql’de bu tarz islemleri de yapmaktayiz.
– postgresql’in default value destegi dinamiktir, bir date/time field’a “now()” default value’sunu verdigimizde, insert edilirken column bos bırakıldıgında now()’ın icerdigi su anın tarihini default value olarak aktaracaktir postgre. yine ayni sekilde mysql’deki auto_increment key’i yerine postgresql’de “serial” isimli bir kisayol-veritipi mevcuttur ki herhangi bir tablonun field’inin sonraki degerini nextval() fonksiyonu yardimi ile row’a aktarir.
– postgresql tek primary key, ardindan foreign olarak atayabileceginiz (on cascade, on restrict, set null, set default methodları ile foreign relation kurabiliyorsunuz) secondary keylere sahiptir. mysql’in primary key-key silahlari daha primitif daha ilkel (ayni sey, evet) kalmaktadir postgre karsisinda.
– postgresql’de yazarken unique, primary key, secondary key, foreign key gibi keyleri constraint olarak belirttigimizden dolayi sql yazilimi daha efendi, daha yerli yerinde gorunmekte, daha anlasilir olmaktadir.
– buna ragmen mysql’in cogu platform tarafindan desteklendigi, postgresql’in kendi admin interface’i disinda pek fazla destek gormedigini, php’de dahi mysql’in default support’una ragmen postgre’nin ayri bir extension olarak yuklendigi gercekleri bizi biraz zor durumda birakabilir postgresql kullanimi planladigimiz noktalarda.
ALINTI
cyber-warrior.org