İÇİNDEKİLER
- •PostgreSQL'e geçmeyi mi düşünüyorsunuz?
- •Kısaca PostgreSQL
- •PostgreSQL Nedir?
- •Sürümler ve Destek Takvimi
- •Kısa Tarihçe
- •PostgreSQL Nasıl Çalışır?
- •MVCC ve VACUUM’u bir örnekle görelim
- •Öne Çıkan Özellikler
- •Örnek: JSONB ile ilişkisel ve esnek veri bir arada
- •Örnek: Identity kolonları
- •Örnek: Türkçe tam metin arama
- •Türkçe Veride İ ve ı Sorunu
- •PostgreSQL Ücretsiz mi? Gerçek Maliyet
- •PostgreSQL ve SQL Server Karşılaştırması
- •Hangi Durumda PostgreSQL, Hangi Durumda SQL Server?
- •PostgreSQL ile Başlamak
- •Production (Üretim Ortamı) İçin Kontrol Listesi
- •Ne Zaman Uzman Desteği Almalısınız?
- •Sıkça Sorulan Sorular
- •Kaynaklar
- •PostgreSQL’i production’da güvenle işletin
PostgreSQL, açık kaynak kodlu ve lisans bedeli olmayan, kurumsal düzeyde bir ilişkisel veritabanı yönetim sistemidir. Bir şirket yerine bağımsız bir topluluk tarafından geliştirilir; güvenilir işlem yönetimi, JSON desteği, eklenti mimarisi ve yerleşik replikasyon özellikleriyle bugün dünyanın en yaygın kullanılan veritabanlarından biridir. Kasım 2026 itibarıyla güncel sürüm PostgreSQL 18’dir.
Bu rehber, PostgreSQL’i ilk kez değerlendiren BT yöneticileri, mimarlar ve yazılım ekipleri için hazırlandı. PostgreSQL’in ne olduğunu, hangi işlere uygun olduğunu, gerçek maliyetini ve SQL Server ile farklarını özetliyoruz. Türkçe veriyle çalışan ekipler için İ/ı harflerinin nasıl davrandığını ayrıca gösteriyoruz. Örnekleri PostgreSQL 18.6 üzerinde test ettik.
PostgreSQL'e geçmeyi mi düşünüyorsunuz?
Aryasoft'un kıdemli PostgreSQL uzmanları iş yükünüzü değerlendirir, mimariyi birlikte tasarlar; kurulum, geçiş, performans ve 7x24 operasyon desteğini üstlenir.
Kısaca PostgreSQL
| Konu | Özet |
|---|---|
| Türü | Nesne-ilişkisel veritabanı yönetim sistemi (ORDBMS); SQL ile sorgulanır. |
| Lisans | PostgreSQL License: ücretsiz, açık kaynak, ticari kullanıma izin verir. |
| Geliştiren | PostgreSQL Global Development Group (bağımsız topluluk) |
| Edition farkı | Yok. Her kurulum tüm özelliklere sahiptir. |
| Platformlar | Linux, Windows, macOS; Docker ve Kubernetes; Azure, AWS ve Google Cloud’da yönetilen servis olarak |
| Güncel sürüm | PostgreSQL 18 (Kasım 2030’a kadar destekleniyor) |
| Güçlü yönleri | Veri bütünlüğü, JSON desteği, eklentiler (PostGIS, pgvector), standartlara uyum, taşınabilirlik |
| Dikkat gerektiren yönleri | Otomatik failover için ek araç gerekir; VACUUM ve bağlantı yönetimi bilinçli işletim ister. |
PostgreSQL Nedir?
PostgreSQL (kısaca Postgres), verileri tablolarda saklayan ve SQL ile sorgulanan ilişkisel bir veritabanıdır. “Nesne-ilişkisel” olarak anılmasının nedeni, klasik ilişkisel modelin üzerine kendi veri tiplerinizi, fonksiyonlarınızı ve indeks türlerinizi ekleyebilmenizdir. SQL standardına uyumu yüksektir: PostgreSQL 18, SQL:2023 Core uyumluluğu için gereken 177 zorunlu özelliğin en az 170’ini destekler.
PostgreSQL’i ticari veritabanlarından ayıran üç temel özellik vardır:
| Özellik | Ne anlama geliyor? |
|---|---|
| Lisans | PostgreSQL License, BSD ve MIT’ye benzeyen serbest bir açık kaynak lisansıdır. Yazılımı her amaçla, ücret ödemeden ve sözleşme imzalamadan kullanabilir, değiştirebilir ve dağıtabilirsiniz. |
| Bağımsızlık | Ürünü tek bir şirket değil, PostgreSQL Global Development Group topluluğu geliştirir. Bir üreticinin fiyat veya lisans politikası değişikliğinden etkilenmezsiniz. |
| Taşınabilirlik | Aynı veritabanı kendi veri merkezinizde, herhangi bir bulut sağlayıcıda veya container ortamında çalışır. |
Sürümler ve Destek Takvimi
Topluluk yılda bir yeni ana sürüm (major version) yayımlar ve her ana sürümü beş yıl destekler. Güvenlik ve hata düzeltmeleri, en az üç ayda bir çıkan ara sürümlerle (minor release) gelir. Kasım 2026 başı itibarıyla desteklenen sürümler şunlardır:
| Ana sürüm | Güncel ara sürüm | İlk yayın | Destek sonu |
|---|---|---|---|
| 18 | 18.6 | 25 Eylül 2025 | 14 Kasım 2030 |
| 17 | 17.11 | 26 Eylül 2024 | 8 Kasım 2029 |
| 16 | 16.15 | 14 Eylül 2023 | 9 Kasım 2028 |
| 15 | 15.19 | 13 Ekim 2022 | 11 Kasım 2027 |
| 14 | 14.24 | 30 Eylül 2021 | 12 Kasım 2026 |
PostgreSQL 13 ve öncesi artık desteklenmiyor. PostgreSQL 19’un ilk sürüm adayı (RC1) 15 Ekim 2026’da yayımlandı; genel kullanıma sunulması 19 Kasım 2026 için planlanıyor. Sunucunuzda hangi sürümün çalıştığını şu sorguyla görebilirsiniz:
SELECT version();
-- PostgreSQL 18.6 (Debian 18.6-1.pgdg13+2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
Uyarı
PostgreSQL 14’ün topluluk desteği 12 Kasım 2026’da sona eriyor; bu tarihten sonra güvenlik düzeltmesi yayımlanmayacak. Hâlâ 14 veya daha eski bir sürüm kullanıyorsanız PostgreSQL 18’e yükseltmeyi şimdi planlayın.
Kısa Tarihçe
PostgreSQL’in kökeni, 1986’da Kaliforniya Üniversitesi Berkeley’de Prof. Michael Stonebraker liderliğinde başlayan POSTGRES projesine dayanır. 1994’te projeye SQL desteği eklendi ve kod Postgres95 adıyla açık kaynak olarak yayımlandı. 1996’da PostgreSQL adını alan proje, yaklaşık 40 yıllık geliştirme geçmişiyle bugün en olgun açık kaynak veritabanlarından biridir.
PostgreSQL Nasıl Çalışır?
PostgreSQL’i production (üretim) ortamında doğru işletmek için dört temel kavramı bilmek yeterli bir başlangıçtır.
| Kavram | Nasıl çalışır? | Operasyonel karşılığı |
|---|---|---|
| Bağlantı başına süreç | Her istemci bağlantısı için işletim sisteminde ayrı bir süreç açılır. | Çok sayıda kısa bağlantı açan uygulamalarda bağlantı havuzu (connection pooling) baştan planlanmalıdır. |
| Paylaşılan bellek | Veri sayfaları shared_buffers adlı bellek alanında önbelleğe alınır. |
Varsayılan 128 MB production için yetersizdir; dokümantasyon başlangıç olarak toplam belleğin %25’ini önerir. |
| WAL (işlem günlüğü) | Her değişiklik, veri dosyalarına yazılmadan önce günlüğe kaydedilir. | Çökme sonrası kurtarma, belirli bir ana geri dönüş (PITR) ve replikasyon WAL üzerine kuruludur. |
| MVCC ve VACUUM | Güncellenen satırın yeni bir sürümü yazılır; eskisi bir süre diskte kalır. | Okuma ve yazma birbirini bloklamaz, ancak eski satırları temizleyen VACUUM düzenli çalışmalıdır. |
Bağlantı yönetimi konusunda sahadan bir not: performans sorunlarının sık görülen kök nedenlerinden biri, uygulamanın açıp kapatmadığı ve boşta bekleyen bağlantılardır. PostgreSQL’in süreç modeli bu sorunu daha görünür kılar.
MVCC ve VACUUM’u bir örnekle görelim
PostgreSQL, bir UPDATE sırasında satırı yerinde değiştirmez; yeni bir sürümünü yazar. Eski sürüm, artık hiçbir işlem tarafından görülmediğinde “ölü satır” olur ve VACUUM tarafından temizlenir. Aşağıdaki örnekte 1.000 satırlık bir güncelleme 1.000 ölü satır bırakıyor:
CREATE TABLE stock (id int PRIMARY KEY, qty int) WITH (autovacuum_enabled = off);
INSERT INTO stock SELECT g, 10 FROM generate_series(1, 1000) g;
SELECT ctid, xmin, qty FROM stock WHERE id = 1;
-- ctid (0,1) | xmin 778 | qty 10
UPDATE stock SET qty = qty - 1;
SELECT ctid, xmin, qty FROM stock WHERE id = 1;
-- ctid (4,97) | xmin 779 | qty 9 -- yeni satır sürümü, yeni fiziksel konum
SELECT pg_stat_force_next_flush();
SELECT n_live_tup, n_dead_tup FROM pg_stat_user_tables WHERE relname = 'stock';
-- 1000 | 1000
VACUUM stock;
SELECT pg_stat_force_next_flush();
SELECT n_live_tup, n_dead_tup FROM pg_stat_user_tables WHERE relname = 'stock';
-- 1000 | 0
Örnekte etkiyi görünür kılmak için autovacuum’u kapattık. Gerçek sistemlerde bu işi arka planda autovacuum süreci yapar ve kapatılmamalıdır. VACUUM aynı zamanda sorgu planlayıcının istatistiklerini günceller ve işlem numarası taşmasını (transaction ID wraparound) önler. Yoğun güncellenen tablolarda autovacuum davranışını izlemek, PostgreSQL operasyonunun temel görevlerinden biridir.
Öne Çıkan Özellikler
| Özellik | Ne sağlar? |
|---|---|
| ACID ve izolasyon seviyeleri | SQL standardındaki tüm izolasyon seviyeleri desteklenir; Serializable seviyesi Serializable Snapshot Isolation (SSI) ile uygulanır. |
| JSON ve JSONB | İlişkisel veriyle esnek belgeler aynı tabloda tutulur. JSONB, GIN indeksiyle hızlı aranır; SQL/JSON ve JSON_TABLE da desteklenir. |
| Eklentiler | CREATE EXTENSION ile yeni yetenekler eklenir: coğrafi veri için PostGIS, vektör araması için pgvector, sorgu analizi için pg_stat_statements. |
| Tam metin arama | Türkçe dahil birçok dil için kök bulma (stemming) yapılandırmasıyla gelir. |
| Bölümleme | Büyük tablolar range, list veya hash yöntemiyle bölümlere ayrılabilir. |
| Replikasyon | Fiziksel streaming replication ile bekleme sunucuları; tablo bazında logical replication. |
| Prosedürel diller | PL/pgSQL’in yanında PL/Perl, PL/Python ve PL/Tcl. |
| Güvenlik | SCRAM-SHA-256, LDAP, sertifika ve PostgreSQL 18 ile gelen OAuth kimlik doğrulaması; satır ve kolon düzeyinde yetkilendirme. |
PostgreSQL 18’in başlıca yenilikleri arasında asenkron I/O altyapısı, zaman sıralı UUID üreten uuidv7() fonksiyonu, varsayılan hale gelen sanal hesaplanmış kolonlar (virtual generated columns) ve yükseltme sırasında istatistikleri koruyan pg_upgrade yer alıyor.
Örnek: JSONB ile ilişkisel ve esnek veri bir arada
Sipariş bilgilerini JSON belgesi olarak saklayıp GIN indeksiyle sorgulamak, PostgreSQL’in en çok tercih edilen kullanım biçimlerinden biridir:
CREATE TABLE orders (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
doc jsonb NOT NULL
);
INSERT INTO orders (doc) VALUES
('{"customer": "Acme", "city": "İstanbul", "status": "new", "items": [{"sku": "A1", "qty": 2}]}'),
('{"customer": "Beta", "city": "Ankara", "status": "shipped", "items": [{"sku": "B7", "qty": 1}]}'),
('{"customer": "Gama", "city": "İzmir", "status": "new", "items": [{"sku": "A1", "qty": 5}]}');
CREATE INDEX orders_doc_gin ON orders USING gin (doc);
SELECT id, doc->>'customer' AS customer, doc->>'city' AS city
FROM orders
WHERE doc @> '{"status": "new"}';
-- id | customer | city
-- 1 | Acme | İstanbul
-- 3 | Gama | İzmir
Aynı veriyi CTE ile raporlamak da mümkündür. Aşağıdaki sorgu, yeni siparişlerdeki ürün adetlerini şehre göre topluyor:
WITH new_items AS (
SELECT doc->>'city' AS city, (item->>'qty')::int AS qty
FROM orders, jsonb_array_elements(doc->'items') AS item
WHERE doc->>'status' = 'new'
)
SELECT city, sum(qty) AS total_qty
FROM new_items
GROUP BY city
ORDER BY total_qty DESC;
-- city | total_qty
-- İzmir | 5
-- İstanbul | 2
Örnek: Identity kolonları
Otomatik artan anahtarlar için SQL standardındaki identity kolonları kullanılır. GENERATED ALWAYS, elle değer girilmesini engeller; veri taşıma gibi durumlarda bu kural OVERRIDING SYSTEM VALUE ile bilinçli olarak aşılabilir:
INSERT INTO orders (id, doc) VALUES (100, '{"customer": "Delta"}');
-- ERROR: cannot insert a non-DEFAULT value into column "id"
-- DETAIL: Column "id" is an identity column defined as GENERATED ALWAYS.
-- HINT: Use OVERRIDING SYSTEM VALUE to override.
INSERT INTO orders (id, doc) OVERRIDING SYSTEM VALUE VALUES (100, '{"customer": "Delta"}');
-- INSERT 0 1
Örnek: Türkçe tam metin arama
turkish yapılandırması kelimeleri köklerine indirir; böylece “yedek” araması “yedeklerini” kelimesini de bulur:
SELECT to_tsvector('turkish', 'Veritabanı yedeklerini düzenli olarak test ediyoruz');
-- 'düzenli':3 'ediyor':6 'olarak':4 'test':5 'veritaba':1 'yedek':2
SELECT to_tsvector('turkish', 'Veritabanı yedeklerini düzenli olarak test ediyoruz')
@@ websearch_to_tsquery('turkish', 'yedek test') AS match;
-- t
Türkçe Veride İ ve ı Sorunu
Türkçe veriyle çalışan her ekip er ya da geç “i” sorunuyla karşılaşır. Türkçede “i”nin büyüğü “İ”, “ı”nın büyüğü “I”dır; İngilizce locale’lerde ise “i”nin büyüğü “I”dır. PostgreSQL’de lower(), upper(), ILIKE ve sıralama işlemleri, kullanılan collation’ın (sıralama ve karşılaştırma kuralları) kurallarına göre çalışır.
Aşağıdaki örnek, varsayılan locale’i en_US.utf8 olan bir veritabanında çalıştırıldı ve sonuçları ICU tabanlı Türkçe collation (tr-TR-x-icu) ile karşılaştırıyor:
CREATE TABLE cities (name text);
INSERT INTO cities VALUES ('İSTANBUL'), ('istanbul'), ('Istanbul'), ('IĞDIR'), ('ığdır');
SELECT name,
lower(name) AS lower_default,
upper(name) AS upper_default,
lower(name COLLATE "tr-TR-x-icu") AS lower_tr,
upper(name COLLATE "tr-TR-x-icu") AS upper_tr
FROM cities;
-- name | lower_default | upper_default | lower_tr | upper_tr
-- İSTANBUL | istanbul | İSTANBUL | istanbul | İSTANBUL
-- istanbul | istanbul | ISTANBUL | istanbul | İSTANBUL
-- Istanbul | istanbul | ISTANBUL | ıstanbul | ISTANBUL
-- IĞDIR | iğdir | IĞDIR | ığdır | IĞDIR
-- ığdır | ığdır | IĞDIR | ığdır | IĞDIR
Sonuçlar özetle şöyle:
| İfade | Varsayılan collation | Türkçe ICU collation |
|---|---|---|
upper('istanbul') |
ISTANBUL (yanlış) | İSTANBUL (doğru) |
lower('IĞDIR') |
iğdir (yanlış) | ığdır (doğru) |
ILIKE 'istanbul' |
istanbul, Istanbul, İSTANBUL | istanbul, İSTANBUL |
| Sıralama: ilik, ılık | ilik, ılık | ılık, ilik (Türk alfabesine uygun) |
Arama ve sıralamadaki farkı şu sorgularla kendiniz de görebilirsiniz:
SELECT string_agg(name, ', ' ORDER BY name) AS ilike_default
FROM cities WHERE name ILIKE 'istanbul';
-- istanbul, Istanbul, İSTANBUL
SELECT string_agg(name, ', ' ORDER BY name) AS ilike_tr
FROM cities WHERE name COLLATE "tr-TR-x-icu" ILIKE 'istanbul';
-- istanbul, İSTANBUL
SELECT string_agg(w, ' ' ORDER BY w) AS sort_default,
string_agg(w, ' ' ORDER BY w COLLATE "tr-TR-x-icu") AS sort_tr
FROM (VALUES ('ilik'), ('ılık'), ('cam'), ('çam'), ('oda'), ('öykü')) AS v(w);
-- sort_default: cam çam ilik ılık oda öykü
-- sort_tr: cam çam ılık ilik oda öykü
Büyük/küçük harfe duyarsız karşılaştırma gerekiyorsa, her sorguda lower() kullanmak yerine nondeterministic bir ICU collation tanımlayabilirsiniz:
CREATE COLLATION tr_ci (provider = icu, locale = 'tr-TR-u-ks-level2', deterministic = false);
SELECT string_agg(name, ', ' ORDER BY name) FROM cities WHERE name = 'istanbul' COLLATE tr_ci;
-- istanbul, İSTANBUL
SELECT string_agg(name, ', ' ORDER BY name) FROM cities WHERE name = 'ığdır' COLLATE tr_ci;
-- IĞDIR, ığdır
Nondeterministic collation’ların bir performans maliyeti vardır; = ve LIKE ile çalışırlar, ILIKE ve düzenli ifadeleri desteklemezler.
İpucu
Bir veritabanının locale ayarları (LC_COLLATE ve LC_CTYPE) oluşturulduktan sonra değiştirilemez; değiştirmek için yeni bir veritabanı açıp veriyi taşımak gerekir. Türkçe veri tutacak bir sistemde locale ve collation kararını kurulumun ilk gününde verin.
PostgreSQL Ücretsiz mi? Gerçek Maliyet
Lisans açısından evet. PostgreSQL’i ticari projeler dahil her amaçla ücretsiz kullanabilirsiniz; çekirdek veya kullanıcı başına lisans bedeli yoktur ve özellikler edition’a göre kısıtlanmaz. Bu fark, özellikle çok sayıda sunucu veya yüksek çekirdek sayısı gerektiren ortamlarda maliyet hesabını önemli ölçüde değiştirir.
Ancak toplam sahip olma maliyeti sıfır değildir. Production’da çalışan bir PostgreSQL için şu kalemleri bütçelemeniz gerekir:
| Maliyet kalemi | Kapsam |
|---|---|
| Altyapı | Sunucu, sanal makine veya bulut kaynakları; yedekler için depolama alanı |
| Kurulum | Yedekleme, yüksek erişilebilirlik ve izleme altyapısının tasarımı ve kurulumu |
| Sürekli operasyon | VACUUM, indeks bakımı, kapasite takibi ve sürüm yükseltmeleri |
| Destek | 7×24 nöbet ve acil durum müdahalesi: kurum içi uzman veya dış destek sözleşmesi |
| Geçiş | Başka bir veritabanından geçiliyorsa SQL kodunun ve uygulamanın dönüştürülmesi, testler |
Lisans bedeli ortadan kalktığında bütçenin ağırlığı uzmanlık ve operasyona kayar. Bu nedenle PostgreSQL kararının, işletimi kimin üstleneceği sorusuyla birlikte verilmesi gerekir. PostgreSQL danışmanlığı, geçiş veya yönetilen veritabanı hizmeti için fiyat teklifi almak isterseniz bize ulaşabilirsiniz.
PostgreSQL ve SQL Server Karşılaştırması
İki ürün de olgun ve kurumsal düzeyde ilişkisel veritabanlarıdır. Aralarındaki seçim çoğu zaman teknik üstünlükten çok lisans, ekosistem ve uygulama gereksinimlerine bağlıdır.
| PostgreSQL | Microsoft SQL Server | |
|---|---|---|
| Geliştiren | PostgreSQL Global Development Group (topluluk) | Microsoft |
| Lisans modeli | Ücretsiz, edition ayrımı yok | Ticari lisans (çekirdek bazlı veya Server + CAL); Express ücretsiz, Developer yalnızca geliştirme ve test için |
| Platform | Linux, Windows, macOS | Windows; SQL Server 2017’den itibaren Linux ve container |
| Yüksek erişilebilirlik | Yerleşik streaming ve logical replication; otomatik failover için Patroni gibi harici bir araç gerekir | Always On availability groups ve failover cluster instance (Windows’ta WSFC, Linux’ta Pacemaker) |
| Yönetim araçları | psql, pgAdmin | SQL Server Management Studio (SSMS), SQL Server Agent |
| Prosedürel dil | PL/pgSQL; ayrıca PL/Perl, PL/Python, PL/Tcl | T-SQL |
| JSON | json ve jsonb tipleri, GIN indeks, SQL/JSON, JSON_TABLE | SQL Server 2025’te yerel json tipi ve JSON indeksi; önceki sürümlerde metin kolonlarında saklanır |
| Harf duyarlılığı | Metin karşılaştırması varsayılan olarak harfe duyarlıdır; tırnaksız nesne adları küçük harfe çevrilir. | Varsayılan collation’lar (SQL_Latin1_General_CP1_CI_AS, Turkish_CI_AS) harfe duyarsızdır. |
| Otomatik artan anahtar | GENERATED AS IDENTITY, serial tipleri, sequence | IDENTITY özelliği ve SEQUENCE nesneleri |
Geçiş projelerinde en çok sürpriz yaratan konu harf duyarlılığıdır. SQL Server’da sorunsuz çalışan bir sorgu, PostgreSQL’de farklı sonuç döndürebilir; tırnaklı ve tırnaksız nesne adları da sık görülen bir hata kaynağıdır:
SELECT 'Ankara' = 'ankara' AS equal;
-- f
CREATE TABLE Musteri (id int); -- tırnaksız: musteri olarak saklanır
CREATE TABLE "Siparis" (id int); -- tırnaklı: Siparis olarak saklanır
SELECT count(*) FROM MUSTERI; -- çalışır
SELECT count(*) FROM Siparis;
-- ERROR: relation "siparis" does not exist
Hangi Durumda PostgreSQL, Hangi Durumda SQL Server?
| PostgreSQL’in güçlü bir seçenek olduğu durumlar | SQL Server’da kalmanın daha mantıklı olduğu durumlar |
|---|---|
| Yeni geliştirilen uygulamalar; özellikle Linux, container ve Kubernetes üzerinde çalışacak servisler | Uygulama yalnızca SQL Server’ı destekliyorsa (Logo ve Mikro gibi yaygın ERP çözümleri SQL Server üzerinde çalışır) |
| Lisans maliyetinin sunucu ve çekirdek sayısıyla büyüdüğü geniş ortamlar | Ekip ve süreçler Windows, Active Directory, SSIS, SSRS ve Power BI ekosistemine derinden bağlıysa |
| İlişkisel veriyi JSON, coğrafi veri (PostGIS) veya vektör aramasıyla (pgvector) aynı veritabanında birleştirmek isteyen projeler | Yoğun T-SQL kodu veya SQL Server’a özgü özellikler kullanan ve yeniden yazımı iş açısından gerekçelendirilemeyen sistemler |
| Tek bir üreticiye bağlı kalmadan bulutlar ve veri merkezi arasında taşınabilir bir altyapı isteyen kurumlar | Mevcut lisans yatırımının ve ekip yetkinliğinin korunmasının öncelikli olduğu durumlar |
Not
Paket bir uygulamanın veritabanını değiştirmeden önce, üreticinin hangi veritabanlarını resmi olarak desteklediğini yazılı olarak teyit edin. Desteklenmeyen bir veritabanında çalışan ERP, güncelleme ve destek hakkınızı riske atar.
Kendi geliştirdiğiniz uygulamalarda ise SQL Server’dan veya Oracle’dan PostgreSQL’e geçiş gerçekçi bir seçenektir. İşin büyük kısmı veri aktarımı değildir; stored procedure, trigger ve uygulama içindeki SQL kodunun dönüştürülmesi, collation farkları ve test süreci asıl emeği oluşturur. Veritabanı geçiş hizmetimiz bu süreci envanter ve risk analiziyle başlatır.
PostgreSQL ile Başlamak
- Sürümü seçin. Yeni projelere, Kasım 2030’a kadar desteklenecek PostgreSQL 18 ile başlayın.
- Kurulum yöntemini belirleyin. postgresql.org/download sayfası Linux için resmi paket depolarını, Windows ve macOS için kurulum paketlerini listeler.
- Locale kararını verin. Türkçe veri tutacaksanız locale ve collation seçimini kurulumdan önce yapın.
- Bağlanın. Komut satırı istemcisi
psqlveya grafik arayüzlü pgAdmin ile bağlanıp ilk veritabanınızı oluşturun. - Resmi kılavuzu izleyin. PostgreSQL başlangıç kılavuzu kurulumdan ilk sorgulara kadar adım adım ilerler.
Production (Üretim Ortamı) İçin Kontrol Listesi
PostgreSQL’i bir geliştirici bilgisayarına kurmak dakikalar sürer; production’da güvenle işletmek ise disiplin ister. Kontrol listeniz en az şu başlıkları içermelidir:
| Başlık | Olması gereken |
|---|---|
| Yedekleme | pg_dump ile mantıksal yedek ve/veya temel yedek + WAL arşivi ile belirli bir ana geri dönüş (PITR). Geri yükleme testi yapılmamış bir yedek, yalnızca bir varsayımdır. |
| Yüksek erişilebilirlik | Streaming replication ile bekleme sunucuları. Otomatik failover için Patroni gibi bir küme yöneticisi ve etcd, Consul veya ZooKeeper gibi bir yapılandırma deposu. |
| İzleme | pg_stat_activity, pg_stat_user_tables ve pg_stat_statements ile bağlantılar, ölü satırlar ve pahalı sorgular. Replikasyon gecikmesi, disk doluluğu ve autovacuum için alarmlar. |
| Sürüm yönetimi | Ara sürümlerin düzenli uygulanması; ana sürüm yükseltmelerinin pg_upgrade veya dump/restore ile planlanması. |
| Bakım | Autovacuum ayarları, tablo ve indeks şişmesi (bloat), transaction ID yaşı ve bağlantı sayısının düzenli takibi. |
Ne Zaman Uzman Desteği Almalısınız?
Aşağıdaki durumlardan biri sizin için geçerliyse deneyimli bir PostgreSQL ekibiyle çalışmak zaman kazandırır ve riski azaltır:
- PostgreSQL’i ilk kez production’a alıyorsunuz ve yedekleme, yüksek erişilebilirlik ve izleme mimarisini baştan doğru kurmak istiyorsunuz.
- SQL Server veya Oracle’dan PostgreSQL’e geçişi değerlendiriyorsunuz.
- Sorgular yavaşladı, tablolar şişti ya da autovacuum yetişemiyor.
- Desteği biten veya bitmek üzere olan bir sürüm kullanıyorsunuz.
- Kurum içinde 7×24 nöbet tutabilecek kıdemli bir veritabanı yöneticisi (DBA) yok.
Aryasoft, SQL Server için sunduğu hizmetlerin tamamını PostgreSQL için de kıdemli uzmanlarla sunar: danışmanlık, mimari ve kurulum, performans iyileştirme, sağlık kontrolü, sürüm yükseltme, SQL Server ve Oracle’dan PostgreSQL’e geçiş, yüksek erişilebilirlik ve felaket kurtarma (HA/DR), Azure ve AWS üzerinde PostgreSQL. Sürekli destek için uzaktan veritabanı yöneticisi (Remote DBA) modelimizde 8×5 veya 7×24 bakım-destek ve tam Remote DBA SLA seçenekleri bulunur; ayrıntılar yönetilen veritabanı hizmetleri sayfamızda. Ortamınızı biz yönetiriz, verinizi değil: müşteri verisi Aryasoft tarafında tutulmaz.
Sıkça Sorulan Sorular
Kaynaklar
Bu rehberdeki teknik bilgiler Ekim ve Kasım 2026’da aşağıdaki resmi kaynaklarla karşılaştırıldı. Sürüm ve destek tarihleri değişebilir; karar vermeden önce ilgili sayfaları kontrol edin.
- PostgreSQL: About
- PostgreSQL License
- PostgreSQL Versioning Policy
- A Brief History of PostgreSQL
- Architectural Fundamentals
- Resource Consumption (shared_buffers)
- Write-Ahead Logging (WAL)
- Concurrency Control: Introduction (MVCC)
- Routine Vacuuming
- JSON Types
- Identity Columns
- Collation Support
- Locale Support
- Pattern Matching (LIKE, ILIKE)
- Lexical Structure (identifiers)
- Log-Shipping Standby Servers (streaming replication)
- Failover
- Logical Replication
- Backup and Restore
- pg_upgrade
- PostgreSQL 18 Release Notes
- PostGIS ve pgvector
- Patroni
- Microsoft Learn: Editions and supported features of SQL Server 2025
- Microsoft Learn: What is SQL Server on Linux?
- Microsoft Learn: What is an Always On availability group?
- Microsoft Learn: JSON data type
- Microsoft Learn: Collation and Unicode support
- Microsoft Learn: IDENTITY property ve CREATE SEQUENCE
PostgreSQL Danışmanlığı
PostgreSQL’i production’da güvenle işletin
Aryasoft’un kıdemli PostgreSQL uzmanları mimari, kurulum, geçiş, performans ve HA/DR çalışmalarını üstlenir; uzaktan veritabanı yöneticisi (Remote DBA) hizmetiyle sisteminizi 8×5 veya 7×24 takip eder.