PostgreSQL’in Tarihçesi
PostgreSQL, ücretsiz ve açık kaynak kodlu bir veritabanı yönetim sistemidir ve özellikle son dönemlerde eklenen yeni özellikleriyle birlikte IT sektörünün parlayan yıldızlarından biri olmuştur. Mikroservis mimarisine geçen ve konteyner teknolojilerinden faydalanan firmalarda, PostgreSQL, konteynerleştirilerek ölçeklenebilmesi, ticari veritabanlarına yaklaşan performans seviyesi ve en önemlisi ücretsiz olması nedeniyle tercih gören bir yazılım haline gelmiştir. Ticari veritabanları, lisans sorunları ve işletim sistemleri üzerinde değil işletim sistemlerinin bir parçası olarak çalışmaları müşterilerine konteyner temelli teknolojiler için yeterince destek sağlayamamaktadır. Bu eksiği sektörde PostgreSQL doldurmaktadır.
Tarihçesine bakıldığında, diğer büyük ticari veritabanları gibi PostgreSQL de 1970’lerde akademik çalışma olarak başlamış ve 1990’ların ortalarından sonra açık kaynak kodlu bir proje olarak varlığını sürdürmüştür. PostgreSQL’in hikayesi Kaliforniya Üniversitesi Berkeley’de Bilgisayar Bilimlerinde öğretim görevlisi olan Michael Stonebraker, 1973’de aynı bölümde bulunan Eugene Wong ile birlikte akademik çalışma olarak INGRES (INteractive GRaphics REtrieval System) isimli bir veritabanı sistemi geliştirmeye başlamasıyla başlamaktadır. INGRES, aslında IBM’in 1970’lerde geliştirerek tasarım dokümanlarını Üniversitelerle paylaştığı “System R” sistemiyle benzerlik göstermekte ve UNIX ve VAX/VMS gibi işletim sistemleri üzerinde çalışmaktaydı.
INGRES kodu, 1973 ve 1976 arasında tam zamanlı bir programcı ve bazı yüksek lisans öğrencilerinin katılımıyla geliştirilmiştir. Normal şartlarda akademik araştırma projeleri hedeflere ulaşıldıktan sonra sonlandırılmaktadır ama araştırma faaliyetlerinin tamamlanmasına rağmen INGRES üzerindeki çalışmalar devam etmiştir. 1977’de farklı ülkelerde 70’e yakın kurulum gerçekleştirilmiştir.
Eugene Wong QUEL sorgulama dilini ve sorgu optimizasyonu yapısını tasarlayan kişidir. İlişkisel bir veritabanı olarak Edgar Codd’un önerdiği veri modeline uygun olarak geliştirilen INGRES kodu, BSD lisansının özellikleri sebebiyle ticari firmalar tarafından da kullanılmıştır. Kodlar, Sybase, Microsoft SQL Server, NonStop SQL ve benzer birçok sistemin içinde yer aldığı bilinmektedir. Linteki videoda INGRES’in geliştirilmesi sürecini Michael Stonebraker’dan dinleyebilirsiniz.
Michael Stonebraker 1980’de INGRES’in ticarileşmesi için Ingres şirketini kurmuştur. INGRES sistemi benzer özelliklere ve performans değerlerine sahip olan Oracle yazılımı ile 1980’lerin ortalarında rekabet halindedir. İki sistem arasındaki en büyük farklardan biri kullanılan sorgulama dilidir. INGRES’te QUEL isimli bir sorgu diliyle sorgulama işleri yapılıyordu. Diğer yandan, 1970’lerde IBM mühendisleri tarafından geliştirilen ve o zamanlar SEQUEL olarak isimlendirilen SQL dili o dönemlerde daha fazla tercih edilen bir dildi çünkü veritabanı motorları tarafından daha rahat şekilde işlenebiliyor ve bir dizi alt işleme daha kolay dönüştürülebiliyordu.
Michael Stonebraker, 1982’de Ingres’in ticari versiyonunu yapmak üzere UC Berkeley’den ayrılmıştır. 1986’da ANSI (American National Standards Institute) QUEL yerine SQL’i standart haline getirince, INGRES’in Oracle ile olan rekabet şansı azaldı ve rekabetten koptu. Ancak 2011’de ismi değişerek Actian Corporation olan Ingres Şirketi, INGRES’in geliştirilmesine ve destek verilmesine devam etti. Stonebraker 1985’te Üniversiteye geri dönmüş ve INGRES projesini sonlandırarak Post-Ingres yani POSTGRES isimli bir proje başlatmıştır. “The Design of Postgres” başlıklı makalesinde INGRES’in kodunun ilk tasarımda alınan kararlar nedeniyle geliştirilemeyeceği ve daha kapsamlı özelliklerin eklenmeyeceği için yeni projeye başladığını ve bu nedenle INGRES üzerindeki çalışmaları durdurduğunu belirtmektedir. PostgreSQL’e DARPA ve NSF gibi önemli kurumlar destek vermiştir.
POSTGRES, INGRES’in önemli özelliklerini kapsamakla birlikte kodlama açısından tamamen farklıdır. Temel veri tipleri bile parametrik yapılmış ve sistemin genişleyebilme özellikleri göz önünde bulundurularak kodlama gerçekleştirilmiştir. Bu özellik PostgreSQL’deki nesne ilişkili veritabanı sistemi özelliklerinin öncülüdür ve coğrafi bilgi sistemlerinde kullanılmak üzere tasarlanmıştır.
POSTGRES, ayrıca bir kaydın son durumunu değil bütün eski versiyonlarını da tutabilecek şekilde oluşturulmuştur. Yenilikçi bir fikir ve tasarım ilkesi olarak görülebilecek bu özellik, günümüzde PostgreSQL’in performans sorunlarının da maalesef ana kaynağıdır. Çünkü, eski versiyonlar veritabanı sayfalarında birikmekte ve eğer temizlenmezse veritabanının çok fazla Disk I/O yapmasına sebep olarak genel performansı düşürmektedir. AUTOVACUUM prosesi, arka planda eski kayıt versiyonlarını temizleyerek, sayfaları kompakt hale getiren bir prosestir. Yeterince hızlı çalışmazsa ve çok fazla UPDATE/DELETE gibi işlemler olursa, POSTGRES’te “bloat” olayı yani şişme yaşanmaktadır.
POSTGRES’te sorgulama QUEL yerine artık PostQUEL adlı sorgu diliyle yapılmaktadır. POSTGRES’in ikinci sürümü 1990’da üçüncüsü de 1991’de çıkarılmıştır. POSTGRES’in 1993’ten itibaren kullanımının yaygınlaşmaya başladığı ve birçok Üniversitede öğretim materyali olarak kullanıldığı görülmektedir.
Tüm Dünya’daki önemli üniversitelerde ders materyali olarak kullanılan POSTGRES’e destek verme konusunda yaşanan sıkıntılar ve araştırma yerine destek hizmetinin ağırlık kazanması sebebiyle v4.2’nin çıkışından sonra POSTGRES projesi Michael Stonebraker tarafından sonlandırılmıştır. Stonebraker artık kendisinin kurduğu şirketlere ağırlık verme kararı almıştır.
Michael Stonebraker ticari veritabanları geliştirmek için çok sayıda şirket kurmuştur. Ingres Corporation, Illustra, Paradigm4, StreamBase Systems, Tamr, Vertica ve VoltDB gibi çeşitli şirketler Stonebraker’in girişimleri sonucu kurulmuştur. Bu şirketlerin kuruluşunun ardında Stonebraker’in farklı düşünceleri ve amaçları bulunmaktadır. Bu şirketlerin bir kısmı daha sonraları büyük şirketler tarafından satın alınmıştır.
PostgreSQL’de geliştirmenin sonlandırılması sonrasında Stonebraker’in iki eski öğrencisi Andrew Yu ve Jolly Chen, POSTGRES kodu üzerinde çalışmalarını sürdürmüşler ve yeniden kodlama yapmışlardır. 1994’te POSTGRES paketine SQL dili yorumlayıcısı eklemişler ve PostQUEL’i devreden çıkarmışlardır. Proje Postgres95 adıyla web’de yayınlanmıştır. Postgres95’in kodu ANSI C kodudur ve orijinal koda göre %25 daha küçüktür ve bu nedenle yeni sistem POSTGRES’e göre belirgin şekilde hızlıdır.
Veritabanı yönetim sistemine, Postgres95 ismi yerine, daha sonra PostgreSQL ismi verilmiştir. Postgres95, 1997 başında PostgreSQL 6.0 adıyla çıkmıştır. Ancak günümüzde birçok kişi, PostgreSQL kelimesi yerine postgres ismini kullanmaktadır. PostgreSQL’in en önemli özelliklerinden biri, nesneye dayalı veri modellerini destekleyen bir veritabanı yönetim sistemi olmasıdır. Kullanıcılar kendi sınıflarını (class) yani veritiplerini tanımlayabilmekte ve kalıt (inheritance) özelliklerinden faydalanabilmektedir.
Linkler:
https://www.csail.mit.edu/person/michael-stonebraker
https://www2.eecs.berkeley.edu/Faculty/Homepages/wong.html
https://www.ibm.com/history/edgar-codd
https://amturing.acm.org/award_winners/stonebraker_1172121.cfm
https://www.youtube.com/watch?v=0da-1IJH2OQ
https://people.eecs.berkeley.edu/~wong/wong_pubs/wong46.pdf