Hadi hadi zorla kullandiriyorsun iste, daha kac hafta oldu, postgreSQL'e dokundugum filan yoktu basim rahatti, SQL server'la gunumu gun ediyordum. Senin yuzunden baktim iste, bakmaz olaydim, simdi cikamiyorum -disaridan okuyanlar varsa yanlis anlayabilir, aslinda Ugur'a tesekkur ediyorum-. Sabah gelirken, evde Ulku'nun hazirlanmasini beklerken bile kendimi postgreSQL calisirken buluyorum.
MongoDb guzel, "ACID ozellikleri yok" pek dogru degil ve biraz gecmisten kalma bilgiler. Onun da degisik implementasyonlari var ve mesela TokuMX full ACID ve fractal index ile daha hizli calisan bir MongoDb. "Data kaybi yasanmasi" gibi durumlar versiyon 2 oncesi hakliydi (eventually consistent ve journal kullanmayan bir model vardi). 2.x'de onlar hikaye oldu, bugun ise 3.0 RC cikmis durumda. MongoDb multi shard + replication kullaniyor ve bunun icin yapilmasi gereken inanilmaz derecede kolay birkac satirlik konfigurasyon. Ornegin Carfax Amerikadaki tum arabalarin gecmisini sakliyor (servis, kaza, sigorta ...). 11 milyarin ustunde arabanin bilgisi tutuluyor ve 1 araba icin ne kadar detay tutulmasi gerektigini dusununce epey bir data. Bildigim kadariyla bu isi 5 * 10 adet i7 makine ile yapiyorlar. 5 adet (replikasyon) * 10 adet (shard - partition). Yani pratikte data 10'a bolunmus 5 kopya seklinde calisiyor. Browserda, sitelerinde ben bir araba aradim ve cevap saniyenin altinda geldi. Oradaki data miktari ortada ve oyle kayiplari riske edecek bir yer degil (normalde 3 replikasyon kullanilirken onlar 5 kullanmis). MongoDb kullanan yerlerin sayisi cok ve iclerinde herkesin bildigi buyuk yerler de var (twitter, SAP, foursquare, gittigidiyor, sahibinden, MTV ...). Kullanilan modellerden birisi de, datayi saklamak icin postgreSQL, MySQL ... gibi bir SQL yani sira on planda okuma icin MongoDb kullanmak (SQL'den okumaktan cok daha hizli diye yapiliyor).
3.0'da gelen cok onemli ozelliklerden birisi de, artik her bir replikasyon icin ayri olabilen, klasik storage engine (memoy map - o da yenilendi MMAPv1) yerine baska bir storage engine kullanilabilmesi (rockstardb, ...). Ayrica WiredTiger storage engine de artik 3.0'in yeni engine'i. Bununla birlikte dokuman (SQL acisindan record) bazinda concurrency kontrolu (ACID'in yok dedikleri C'si - A zaten vardi hem de daha iyiydi, ID tartisilir, replikasyon nedeniyle benim gozumde var denen SQL serisi databaselerden daha iyi). 50'ye cikan replikasyon uye sayisi, 7-10x artan performansi, yuzde 80 data kompresyon ile 3.0 saglam geliyor (ben onlarin yalancisiyim, henuz 3.0'i hic kullanmadim ama 2.x'ten de memnunum zaten).
Sozun ozu, postgreSQL'e ciddi anlamda dalsam da, MongoDb'yi kenara atmis degilim, o kadar kolay vazgecilecek bir sey degil. Isin zor kismi, yeni projelerde hangisini sececegim, belki de mix kullanirim
Bu arada Ugur'un verdigi tabloda PostgreSQL'deki bazi seyler hic yer almamis bile - adamlar utandi herhalde yalnizca postgreSQL'de diye isaretlemeye Bazi seyler de komedi. XQuery yokmus, aman ne buyuk kayip. SQL server'da hem xml, hem xml indexing, xpath ve xquery var. Var var da, sahiden ise yarar ne var. postgreSQL "olmayan XQuery'e ragmen" xml data tipinde ve xml olsun olmasin genel olarak datada xml ile taklalar attiriyor. Aynisini SQL server'da bir sekilde yapiyor, yapmiyor diyemem de, yapmak icin sizin takla atmaniz gerekiyor. Yillarca calistigim SQL server'a karsi, sadece 1-2 haftalik postgreSQL calismanin sonucu "benim acimdan" postgreSQL, MS SQL'u dover Bu kadar guclu bir sey oldugu yetmiyormus gibi ustune ustluk "gercek" open source. Lisansi son derece serbest, al ister open ister closed ticari uygulamanda tepe tepe kullan diyorlar. Istersen (ve yapmak yerse) source kodunda degisiklik yap kendin icin ve kullan (diyorlar).
Ha ne oldu, benim isim artik postgreSQL, MSSQL, MongoDb, SQLite, VFP ... databaseleri ile calismak varken bitti mi? Hayir bitmedi. Ben kendi kendime araniyorum Su aralar, postgreSQL yani sira ciddi bir sekilde dikkatimi ceken bir iki open source database daha var. Isimleri simdilik bende kalsin, belki fazla ilerlemeden tamamen rafa kaldiririm.
(her Allah'in gunu postgreSQL'de bir seyler beni "yok artik" dedirtiyor zaten ve yeni projeme de hepsi cok uyuyor, gel de karar ver)
Kalin saglicakla.
Not: Mehmet bana soylemisti de dinlememistim, simdi bir de ciddi ciddi C++'a gecsem diye dusunuyorum da bu kadar sey arasinda korkuyorum:)