PostgreSQL Nedir ve Hangi Alanlarda Kullanılır?
PostgreSQL; web uygulamaları, kurumsal yazılımlar, finans sistemleri, coğrafi bilgi sistemleri, veri analizi ve çeşitli otomasyon projelerinde kullanılmaktadır.
Ücretsiz olarak kullanılabilen PostgreSQL, PostgreSQL Global Development Group tarafından geliştirilen ve dünya genelindeki geliştiricilerin katkılarıyla sürdürülen bir projedir.
PostgreSQL'in Tarihçesi
PostgreSQL'in kökenleri, 1986 yılında Kaliforniya Üniversitesi Berkeley kampüsünde başlatılan POSTGRES projesine dayanmaktadır.
Proje, veritabanı araştırmacısı Michael Stonebraker öncülüğünde geliştirilmiştir.
POSTGRES sistemi, daha önce geliştirilen Ingres veritabanı projesinin ardından ortaya çıkmıştır.
1990'lı yıllarda SQL desteğinin eklenmesiyle sistem Postgres95 adıyla geliştirilmiştir.
1996 yılında ise PostgreSQL adını almıştır.
PostgreSQL, sonraki yıllarda açık kaynaklı veritabanı sistemleri arasında önemli bir konuma ulaşmıştır.
PostgreSQL Ne İşe Yarar?
Bir web sitesindeki kullanıcı hesapları, ürünler, siparişler, mesajlar ve diğer kayıtlar PostgreSQL veritabanında tutulabilir.
Veritabanındaki bilgiler SQL sorguları aracılığıyla görüntülenebilir, değiştirilebilir veya silinebilir.
PostgreSQL ayrıca farklı tablolar arasında ilişkiler kurulmasını ve veri bütünlüğünün korunmasını sağlar.
Bu özellikleri sayesinde hem küçük uygulamalarda hem de büyük ölçekli sistemlerde kullanılabilir.
PostgreSQL Nasıl Çalışır?
Veritabanı sunucusu, gelen bağlantıları kabul eder ve SQL sorgularını işler.
Uygulamalar, PostgreSQL sunucusuna bağlantı kurarak veri okuyabilir veya yeni kayıtlar oluşturabilir.
Örneğin bir e-ticaret uygulamasında müşteri sipariş verdiğinde sipariş bilgileri PostgreSQL veritabanına kaydedilebilir.
PostgreSQL, işlemleri yöneterek verilerin tutarlı biçimde saklanmasına yardımcı olur.
PostgreSQL Veritabanı Yapısı
Bir PostgreSQL sunucusunda birden fazla veritabanı bulunabilir.
Her veritabanında farklı şemalar oluşturulabilir.
Şemalar, tabloların ve diğer veritabanı nesnelerinin düzenlenmesini sağlar.
Tablolar ise satırlar ve sütunlardan oluşmaktadır.
Her satır bir kaydı, her sütun ise belirli bir veri alanını temsil eder.
PostgreSQL ile Veritabanı Oluşturma
PostgreSQL'de yeni bir veritabanı oluşturmak için CREATE DATABASE komutu kullanılır.
CREATE DATABASE forum;
Bu komut, forum adında yeni bir veritabanı oluşturur.
PostgreSQL'de veritabanı bağlantısı, kullanılan istemci aracılığıyla gerçekleştirilir.
Örneğin psql komut satırı aracında aşağıdaki komutla veritabanına bağlanılabilir:
\connect forum
Bu komut, psql aracına özgüdür ve standart SQL komutu değildir.
PostgreSQL ile Tablo Oluşturma
PostgreSQL'de tablo oluşturmak için CREATE TABLE komutu kullanılır.
CREATE TABLE kullanicilar (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
kullanici_adi VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Bu örnekte kullanıcı bilgilerini saklamak için bir tablo oluşturulmaktadır.
ID alanı, her kullanıcıya benzersiz bir numara verilmesini sağlar.
Kullanıcı adı ve e-posta alanları metin bilgilerini saklar.
Kayıt tarihi alanı ise yeni kayıt oluşturulduğunda geçerli tarih ve saati kaydedebilir.
PostgreSQL ile Veri Ekleme
Yeni kayıt eklemek için INSERT komutu kullanılır.
INSERT INTO kullanicilar (kullanici_adi, email)
VALUES ('ahmet', 'ahmet@example.com');
Bu komut, kullanıcılar tablosuna yeni bir kayıt ekler.
PostgreSQL, aynı sorgu içerisinde birden fazla kayıt eklenmesini de desteklemektedir.
PostgreSQL ile Veri Sorgulama
Veritabanındaki bilgileri görüntülemek için SELECT komutu kullanılır.
SELECT * FROM kullanicilar;
Bu sorgu, kullanıcılar tablosundaki bütün kayıtları getirir.
Belirli bir kullanıcıyı sorgulamak için WHERE koşulu kullanılabilir.
SELECT * FROM kullanicilar
WHERE kullanici_adi = 'ahmet';
Bu sorgu, kullanıcı adı ahmet olan kayıtları getirir.
PostgreSQL ile Veri Güncelleme ve Silme
Mevcut kayıtları güncellemek için UPDATE komutu kullanılır.
UPDATE kullanicilar
SET email = 'yeni@example.com'
WHERE id = 1;
Bu sorgu, ID değeri 1 olan kullanıcının e-posta adresini değiştirir.
Kayıt silmek için DELETE komutu kullanılır.
DELETE FROM kullanicilar
WHERE id = 1;
UPDATE ve DELETE işlemlerinde WHERE koşulunun doğru kullanılması önemlidir.
Aksi durumda birden fazla kayıt istenmeden değiştirilebilir veya silinebilir.
PostgreSQL'de ACID Özellikleri
PostgreSQL, ACID özelliklerini destekleyen bir veritabanı sistemidir.
ACID, veritabanı işlemlerinin güvenilirliğini açıklayan dört temel özelliği ifade eder.
-
Atomicity (Atomiklik): Bir işlem bütün olarak tamamlanır veya geri alınır.
-
Consistency (Tutarlılık): İşlemler, tanımlanmış veri bütünlüğü kurallarını korur.
-
Isolation (İzolasyon): Eş zamanlı işlemler belirlenen izolasyon kurallarına göre yürütülür.
-
Durability (Kalıcılık): Başarıyla tamamlanan işlemler sistem arızalarına karşı kalıcı olacak şekilde korunur.
Bu özellikler özellikle finansal işlemler ve veri tutarlılığının önemli olduğu uygulamalarda gereklidir.
PostgreSQL'de MVCC Nedir?
MVCC (Multi-Version Concurrency Control), PostgreSQL'in eş zamanlı veritabanı işlemlerini yönetmek için kullandığı yöntemlerden biridir.
Türkçede Çok Sürümlü Eşzamanlılık Kontrolü olarak adlandırılmaktadır.
MVCC sayesinde verilerin farklı sürümleri kullanılarak işlemler arasında belirli bir izolasyon sağlanır.
Bu yapı, normal koşullarda okuma işlemlerinin yazma işlemlerini ve yazma işlemlerinin okuma işlemlerini engellemeden yürütülmesine yardımcı olur.
PostgreSQL'in eş zamanlı kullanıcı ve işlem yüklerini yönetmesinde MVCC önemli rol oynamaktadır.
PostgreSQL'de JSON ve JSONB Desteği
PostgreSQL, ilişkisel tabloların yanında JSON biçimindeki verileri de saklayabilmektedir.
JSON, yapılandırılmış bilgilerin metin biçiminde temsil edilmesini sağlayan bir veri formatıdır.
PostgreSQL'de JSON ve JSONB veri türleri bulunmaktadır.
JSON veri türü, girilen JSON metnini saklarken JSONB veriyi işlenmiş ikili biçimde tutar.
JSONB, çeşitli sorgulama ve indeksleme özelliklerini desteklemektedir.
Örneğin bir ürünün değişken özellikleri JSONB alanında saklanabilir.
CREATE TABLE urunler (
id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
ad VARCHAR(100),
ozellikler JSONB
);
Bu yapı, farklı özelliklere sahip ürünlerin bilgilerinin saklanmasında kullanılabilir.
PostgreSQL'de İndeksleme
İndeksler, veritabanında belirli sorguların daha hızlı çalışmasını sağlayan yapılardır.
PostgreSQL, farklı sorgu ihtiyaçlarına uygun çeşitli indeks türlerini desteklemektedir.
B-tree, Hash, GIN, GiST, SP-GiST ve BRIN desteklenen indeks yöntemleri arasındadır.
Örneğin kullanıcıların e-posta adreslerine göre sık sık arama yapılıyorsa ilgili sütuna indeks eklenebilir.
CREATE INDEX idx_kullanicilar_email
ON kullanicilar(email);
İndeksler sorgu performansını artırabilse de ek depolama alanı kullanır ve veri değiştirme işlemlerine maliyet ekleyebilir.
Bu nedenle indekslerin uygulamanın sorgu ihtiyaçlarına göre oluşturulması gerekir.
PostgreSQL ve PostGIS
PostGIS, PostgreSQL için geliştirilen açık kaynaklı bir coğrafi veri uzantısıdır.
PostGIS sayesinde koordinatlar, noktalar, çizgiler, alanlar ve diğer coğrafi veriler saklanabilir.
Coğrafi mesafe hesaplamaları ve konumsal sorgular gerçekleştirilebilir.
Bu özellikler harita uygulamalarında, ulaşım sistemlerinde ve coğrafi bilgi sistemlerinde kullanılmaktadır.
Örneğin bir uygulama, belirli bir noktaya yakın olan işletmeleri PostGIS kullanarak sorgulayabilir.
PostgreSQL Hangi Alanlarda Kullanılır?
PostgreSQL birçok farklı yazılım alanında kullanılmaktadır.
Web sitelerinde kullanıcı hesapları, içerikler ve oturum bilgileri gibi veriler saklanabilir.
E-ticaret sistemlerinde ürünler, siparişler, stok kayıtları ve müşteri bilgileri yönetilebilir.
Finans uygulamalarında işlem kayıtları ve hesap hareketleri gibi veriler tutulabilir.
Kurumsal yazılımlarda personel, müşteri, envanter ve operasyon kayıtları saklanabilir.
Coğrafi bilgi sistemlerinde PostGIS uzantısı kullanılarak konumsal veriler işlenebilir.
Veri analizi uygulamalarında ise SQL sorguları, toplulaştırmalar ve raporlama işlemleri gerçekleştirilebilir.
PostgreSQL ve Python Birlikte Kullanımı
PostgreSQL, Python ile geliştirilen uygulamalarda yaygın olarak kullanılmaktadır.
Python uygulamaları, PostgreSQL veritabanına uygun sürücüler aracılığıyla bağlanabilir.
Psycopg, PostgreSQL bağlantısı için kullanılan Python kütüphanelerinden biridir.
Django ve Flask gibi web geliştirme teknolojileriyle PostgreSQL kullanılabilir.
Bu sayede kullanıcı kayıtları, uygulama verileri ve diğer bilgiler veritabanında yönetilebilir.
PostgreSQL ve PHP Birlikte Kullanımı
PostgreSQL, PHP ile geliştirilen web sitelerinde de kullanılabilmektedir.
PHP'nin PDO_PGSQL sürücüsü veya PostgreSQL işlevleri aracılığıyla veritabanına bağlantı kurulabilir.
Örneğin bir forum yazılımı, kullanıcı hesaplarını ve mesajları PostgreSQL veritabanında saklayabilir.
PHP uygulaması ise kullanıcı işlemlerini gerçekleştirerek veritabanından gerekli bilgileri alabilir.
Ancak PostgreSQL kullanımı için sunucuda gerekli veritabanı hizmetinin ve PHP sürücülerinin bulunması gerekir.
pgAdmin Nedir?
pgAdmin sayesinde veritabanları, tablolar, kullanıcılar ve diğer nesneler görüntülenebilir.
SQL sorguları çalıştırılabilir ve veritabanı yapıları incelenebilir.
Ayrıca yedekleme ve geri yükleme gibi çeşitli yönetim işlemleri gerçekleştirilebilir.
pgAdmin, PostgreSQL ile çalışan geliştiriciler ve veritabanı yöneticileri tarafından kullanılmaktadır.
PostgreSQL ile MySQL Arasındaki Farklar
PostgreSQL ve MySQL, yaygın kullanılan ilişkisel veritabanı yönetim sistemleridir.
Her iki sistem de SQL sorgularını, tabloları, indeksleri ve işlem yönetimini desteklemektedir.
PostgreSQL, nesne-ilişkisel özellikleri, genişletilebilir veri türleri ve gelişmiş SQL işlevleriyle öne çıkmaktadır.
MySQL ise özellikle web uygulamalarında yaygın kullanımı ve geniş hosting desteğiyle bilinmektedir.
|
Özellik |
PostgreSQL |
MySQL |
|---|---|---|
|
Veritabanı türü |
Nesne-ilişkisel |
İlişkisel |
|
SQL desteği |
Var |
Var |
|
Açık kaynak sürümü |
Var |
Var |
|
JSON desteği |
JSON ve JSONB |
JSON |
|
İşlem yönetimi |
Var |
InnoDB ile var |
|
Coğrafi veri |
PostGIS ile gelişmiş destek |
Yerleşik mekânsal özellikler |
|
Genişletilebilirlik |
Geniş uzantı sistemi |
Eklenti ve bileşen desteği |
İki sistem arasında seçim yapılırken uygulamanın ihtiyaçları, mevcut altyapı, sorgu özellikleri ve yönetim gereksinimleri değerlendirilmelidir.
PostgreSQL'in Avantajları Nelerdir?
PostgreSQL'in önemli avantajlarından biri açık kaynaklı ve ücretsiz olmasıdır.
Gelişmiş SQL desteği, karmaşık sorguların ve veri ilişkilerinin yönetilmesini sağlar.
ACID uyumluluğu ve MVCC mimarisi, veri tutarlılığı ve eş zamanlı işlemler açısından önemli özellikler sunar.
JSONB, diziler, özel veri türleri ve uzantılar gibi özellikler farklı uygulama ihtiyaçlarının karşılanmasına yardımcı olur.
PostgreSQL ayrıca replikasyon, yedekleme ve erişim kontrolü gibi veritabanı yönetimi özelliklerini desteklemektedir.
PostgreSQL Güvenliği Nasıl Sağlanır?
PostgreSQL'de güvenlik için kullanıcı rolleri ve erişim yetkileri kullanılmaktadır.
Her uygulamaya yalnızca ihtiyaç duyduğu veritabanı yetkilerinin verilmesi önemlidir.
Bağlantıların şifrelenmesi, güçlü kimlik doğrulama yöntemlerinin kullanılması ve veritabanı sunucusuna erişimin sınırlandırılması güvenliği artırabilir.
SQL enjeksiyonu saldırılarına karşı parametreli sorgular kullanılmalıdır.
Düzenli yedekleme yapılması ve güvenlik güncellemelerinin uygulanması da verilerin korunması açısından gereklidir.
PostgreSQL'in Yazılım Geliştirmedeki Önemi
PostgreSQL, ilişkisel verilerin güvenilir şekilde saklanmasını ve yönetilmesini sağlayan kapsamlı bir veritabanı sistemidir.
Gelişmiş SQL desteği, veri bütünlüğü özellikleri, JSONB veri türü ve PostGIS gibi uzantılar, PostgreSQL'in farklı alanlarda kullanılmasını sağlamaktadır.
Web uygulamalarından kurumsal sistemlere, finans yazılımlarından coğrafi bilgi sistemlerine kadar geniş bir kullanım alanına sahiptir.
Açık kaynaklı geliştirme modeli ve farklı programlama dilleriyle uyumluluğu sayesinde PostgreSQL, modern yazılım altyapılarında kullanılan önemli veritabanı teknolojilerinden biridir.





