Takip et

Day 2: PostgreSQL Kurulumu ve Ortam Kurulumu Kılavuzu

Modern uygulama geliştirmenin kalbinde, verilerin etkin ve güvenilir bir şekilde yönetilmesi yatar. Peki, veritabanı seçimi, projenizin başarısını ne kadar etkileyebilir? Bu rehberde, popüler açık kaynak ilişkisel veritabanı yönetim sistemi PostgreSQL’i nasıl kuracağınızı ve ortamınızı nasıl yapılandıracağınızı adım adım keşfedeceğiz. Başlangıçtan itibaren sağlam bir temel oluşturarak, veri tabanı deneyiminizi sorunsuz bir şekilde başlatmak için gerekli tüm adımları burada bulacaksınız.

Günümüzde veri, her türlü iş uygulamasının ve dijital hizmetin temelini oluşturuyor. Web sitelerinden mobil uygulamalara, e-ticaret platformlarından kurumsal ERP sistemlerine kadar, her yerde büyük hacimli verilerin depolanması, işlenmesi ve güvenli bir şekilde erişilebilir olması gerekiyor. İşte tam bu noktada, güçlü ve güvenilir bir veritabanı yönetim sistemine olan ihtiyaç ortaya çıkıyor. Peki, piyasada bunca seçenek varken neden özellikle PostgreSQL’e odaklanmalıyız?

Bir geliştirici veya sistem yöneticisi olarak, doğru veritabanı seçimi, projenizin performansı, ölçeklenebilirliği ve sürdürülebilirliği üzerinde doğrudan bir etkiye sahiptir. Yanlış bir seçim, ilerleyen süreçlerde maliyetli hatalara, performans darboğazlarına ve hatta veri kayıplarına yol açabilir. Bu nedenle, projenize başlamadan önce veritabanı teknolojileri hakkında derinlemesine bilgi sahibi olmak ve ihtiyaçlarınıza en uygun çözümü seçmek büyük önem taşır. PostgreSQL, yıllardır sektördeki en saygın ve tercih edilen ilişkisel veritabanlarından biri olarak öne çıkmaktadır ve bunun pek çok geçerli nedeni vardır.

Bu makalenin amacı, sizleri PostgreSQL’in dünyasına sorunsuz bir şekilde sokmak, kurulumundan temel yapılandırmasına kadar tüm süreçleri anlaşılır bir dille aktarmaktır. İster yeni başlayan bir geliştirici olun ister mevcut bilginizi tazelemek isteyin, bu rehber size sağlam bir başlangıç noktası sunacaktır. Öyleyse, veri yönetimindeki bu önemli yolculuğa çıkmaya hazır mısınız? Haydi, PostgreSQL’in gücünü ve esnekliğini keşfetmeye başlayalım!

PostgreSQL Nedir ve Neden Tercih Etmelisiniz? Temel Kavramlara Giriş

PostgreSQL, dünyadaki en gelişmiş açık kaynak ilişkisel veritabanı yönetim sistemlerinden (RDBMS) biridir. Kırk yılı aşkın bir süredir aktif olarak geliştirilmekte olup, performansı, güvenilirliği ve zengin özellik seti ile tanınır. Birçok kişi için MySQL’e bir alternatif olarak görülse de, PostgreSQL özellikle kurumsal düzeydeki uygulamalar için sunduğu ileri düzey özellikler ve esneklik sayesinde kendi nişini oluşturmuştur.

PostgreSQL’i tercih etmeniz için birçok neden bulunmaktadır:

  • Açık Kaynak ve Ücretsiz: PostgreSQL tamamen açık kaynak kodludur ve kullanımı ücretsizdir. Bu, lisans maliyetleri olmadan güçlü bir veritabanı çözümüne sahip olmanız anlamına gelir. Ayrıca, geniş ve aktif bir topluluğa sahip olması sayesinde sürekli geliştirilir ve desteklenir.
  • Gelişmiş Özellikler: ACID (Atomicity, Consistency, Isolation, Durability) uyumluluğu, gelişmiş indeksleme türleri (GIN, GIST), eşzamanlılık kontrolü (MVCC – Multi-Version Concurrency Control), dış anahtarlar, tetikleyiciler, saklı prosedürler ve kullanıcı tanımlı fonksiyonlar gibi birçok ileri düzey özellik sunar. JSON, XML, HSTORE, diziler gibi çeşitli veri türlerini doğal olarak destekler, bu da modern uygulama geliştirme için büyük bir esneklik sağlar.
  • Güvenilirlik ve Veri Bütünlüğü: Veri bütünlüğünü ve güvenilirliğini en üst düzeyde tutmak için tasarlanmıştır. İşlem (transaction) yönetiminde oldukça sağlamdır ve veri kaybını en aza indiren mekanizmalar sunar.
  • Genişletilebilirlik: En güçlü yanlarından biri genişletilebilirliğidir. Kendi veri tiplerinizi, fonksiyonlarınızı, operatörlerinizi ve hatta indeks türlerinizi tanımlayabilirsiniz. PostGIS gibi coğrafi veri işleme uzantıları veya TimescaleDB gibi zaman serisi veritabanı uzantıları, PostgreSQL’in sadece bir veritabanı olmaktan öteye geçmesini sağlar.
  • Performans: Doğru yapılandırıldığında ve indekslendiğinde, PostgreSQL yüksek performanslı ve büyük ölçekli uygulamalar için mükemmel bir seçimdir. Özellikle karmaşık sorgular ve yüksek yazma yükü olan senaryolarda gücünü gösterir.
  • Topluluk ve Destek: Büyük ve canlı bir geliştirici ve kullanıcı topluluğuna sahiptir. Bu, sorun yaşadığınızda veya yardıma ihtiyaç duyduğunuzda kolayca destek bulabileceğiniz anlamına gelir.

Vaka Analizi: Büyük Bir Veri Analizi Şirketi İçin PostgreSQL

Diyelim ki, “VeriVizyon” adında büyümekte olan bir veri analizi şirketi, her gün terabaytlarca müşteri etkileşim verisini işlemekle yükümlü. Mevcut MySQL tabanlı sistemleri, artan veri hacmi ve karmaşık analitik sorgular karşısında yavaşlamaya başlamış, hatta kritik raporlama süreçlerinde aksaklıklar yaşanıyordu. Şirket, verimliliği artırmak ve gelecekteki büyüme potansiyelini desteklemek için daha sağlam, esnek ve yüksek performanslı bir veritabanı çözümüne ihtiyaç duyuyordu. Yönetim, maliyetleri düşük tutmak amacıyla açık kaynak bir çözüme yöneldi. Yapılan araştırmalar sonucunda, PostgreSQL’in gelişmiş indeksleme seçenekleri (özellikle GIN ve GIST indeksleri), JSONB desteği ile yarı yapılandırılmış verileri etkin bir şekilde depolama yeteneği ve PostGIS uzantısı sayesinde coğrafi verileri kolayca işleyebilmesi gibi özellikleri dikkatlerini çekti. Ayrıca, MVCC (Multi-Version Concurrency Control) mimarisi sayesinde yoğun okuma/yazma işlemleri sırasında bile tutarlı performans sağlayabilmesi, kritik raporlama süreçleri için vazgeçilmez bir avantajdı. VeriVizyon, mevcut sistemini PostgreSQL’e taşıyarak sorgu performansında %40’a varan iyileşmeler kaydetti ve yeni analitik özellikler eklemek için çok daha esnek bir altyapıya sahip oldu. Bu geçiş, sadece operasyonel verimliliği artırmakla kalmadı, aynı zamanda şirketin veri odaklı büyüme stratejisine de önemli katkı sağladı.

Uzman İpucu: PostgreSQL’in MVCC mimarisi, okuma ve yazma işlemlerinin birbirini engellemeden aynı anda gerçekleşmesine olanak tanır. Bu sayede yoğun iş yüklerinde bile yüksek performans ve eşzamanlılık sunar.

Sonuç olarak, PostgreSQL sadece basit bir veritabanı değil, modern uygulamaların gereksinimlerini karşılayabilen, genişletilebilir ve güvenilir bir veri yönetim platformudur. Geliştiricilerin ve işletmelerin karmaşık veri zorluklarını aşmalarına yardımcı olan kapsamlı bir araç setidir.

Adım Adım PostgreSQL Kurulumu: İşletim Sistemine Özel Rehberler

PostgreSQL’i sisteminize kurmak, kullanılan işletim sistemine göre küçük farklılıklar gösterir. Ancak genel süreç oldukça basittir. Bu bölümde, en popüler işletim sistemleri olan Windows, macOS ve Linux (Ubuntu örneği üzerinden) için adım adım kurulum rehberlerini bulacaksınız. Kurulumdan önce, sisteminizin minimum gereksinimleri karşıladığından emin olmanız önemlidir, ancak çoğu modern bilgisayar bu gereksinimleri rahatlıkla karşılayacaktır.

Windows’da PostgreSQL Kurulumu Nasıl Yapılır?

Windows kullanıcıları için PostgreSQL kurulumu, genellikle bir grafiksel yükleyici (installer) aracılığıyla oldukça kolaydır. EnterpriseDB tarafından sağlanan resmi yükleyiciyi kullanmanızı öneririz.

  1. Yükleyiciyi İndirin: PostgreSQL resmi web sitesinden Windows için uygun sürümü indirin. Genellikle “Interactive installer by EnterpriseDB” bağlantısını aramalısınız.
  2. Kurulum Sihirbazını Başlatın: İndirdiğiniz .exe dosyasını çift tıklayarak kurulum sihirbazını başlatın. Yönetici izinleri isteyebilir, onaylayın.
  3. Kurulum Konumu Seçin: PostgreSQL’in kurulacağı dizini seçin. Varsayılan konum (C:\Program Files\PostgreSQL\) genellikle uygundur.
  4. Bileşenleri Seçin: Kurulacak bileşenleri seçmeniz istenir. Genellikle aşağıdaki bileşenler varsayılan olarak seçilidir ve değiştirmenize gerek yoktur:
    • PostgreSQL Server: Ana veritabanı sunucusu.
    • pgAdmin 4: PostgreSQL’i yönetmek için kullanılan web tabanlı grafik arayüzü.
    • Stack Builder: Ek araçlar ve sürücüler yüklemenizi sağlar (şimdilik gerekmez).
    • Command Line Tools: psql gibi komut satırı araçları.
  5. Veri Dizini Seçin: Veritabanı dosyalarınızın saklanacağı dizini seçin. Varsayılan konum genellikle uygundur (örneğin, C:\Program Files\PostgreSQL\\data).
  6. Süper Kullanıcı Parolası Belirleyin: Veritabanı süper kullanıcısı (postgres) için bir parola belirleyin. Bu parola önemlidir, unutmayın.
  7. Port Numarası Seçin: PostgreSQL sunucusunun dinleyeceği port numarasını seçin. Varsayılan 5432 genellikle uygundur. Çakışma yoksa değiştirmeyin.
  8. Varsayılan Yerel Ayarı (Locale) Ayarlayın: Veritabanının varsayılan yerel ayarını (dil, karakter seti vb.) seçin. “Default locale” bırakmak genellikle en iyisidir.
  9. Özet ve Kurulum: Tüm ayarları gözden geçirin ve “Next” butonuna basarak kurulumu başlatın. Kurulum tamamlandığında “Finish” butonuna tıklayın. Stack Builder’ı başlatmak isteyip istemediğinizi sorarsa, bu rehber için “hayır” diyebilirsiniz.
  10. Kurulum Sonrası Kontrol: Başlat menüsünden pgAdmin 4‘ü arayarak çalıştırın. Tarayıcınızda açılacaktır. Belirlediğiniz süper kullanıcı parolası ile PostgreSQL sunucunuza bağlanabilirsiniz. Komut istemcisi (cmd) açıp psql -U postgres komutunu deneyerek de komut satırı araçlarının çalıştığını kontrol edebilirsiniz. Parolanız sorulduğunda girin.

macOS’ta PostgreSQL Kurulumu Süreci

macOS kullanıcıları için PostgreSQL kurmanın birkaç popüler yolu vardır. Homebrew paketi yöneticisi veya EnterpriseDB’nin grafiksel yükleyicisi en sık tercih edilenlerdir.

Homebrew ile Kurulum (Önerilen)

  1. Homebrew’i Yükleyin (Henüz Yoksa): Terminali açın ve aşağıdaki komutu çalıştırın:
    
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
                


    Kurulum talimatlarını takip edin.

  2. PostgreSQL'i Yükleyin: Homebrew aracılığıyla PostgreSQL'i kurmak için Terminal'e aşağıdaki komutu yazın:
    
    brew install postgresql
                


    Bu komut, PostgreSQL'in en son kararlı sürümünü indirecek ve kuracaktır.

  3. PostgreSQL Servisini Başlatın: Kurulumdan sonra PostgreSQL servisini başlatmanız gerekir:
    
    brew services start postgresql
                


    Bu komut, PostgreSQL'i sistem başlangıcında otomatik olarak başlaması için de yapılandırır.

  4. Bağlantıyı Kontrol Edin: psql komut satırı aracıyla varsayılan veritabanı sunucusuna bağlanabilirsiniz:
    
    psql postgres
                


    Başarılı bir şekilde bağlandıysanız, postgres=# komut istemini göreceksiniz. Çıkmak için \q yazın ve Enter'a basın.

EnterpriseDB Yükleyicisi ile Kurulum

Windows'a benzer şekilde, EnterpriseDB'nin grafiksel yükleyicisini de kullanabilirsiniz. Bu yöntem daha az komut satırı bilgisi gerektirir.

  1. Yükleyiciyi İndirin: PostgreSQL resmi web sitesinden macOS için uygun sürümü indirin.
  2. Kurulum Sihirbazını Takip Edin: İndirilen .dmg dosyasını açın ve içindeki yükleyiciyi çalıştırın. Windows'daki adımlara benzer şekilde, kurulum konumunu, bileşenleri, süper kullanıcı parolasını ve port numarasını belirleyerek kurulumu tamamlayın.
  3. pgAdmin 4'ü Kullanın: Kurulum bittikten sonra Applications (Uygulamalar) klasörünüzde pgAdmin 4'ü bulup çalıştırabilirsiniz.

Linux (Ubuntu) Üzerine PostgreSQL Kurulumu

Linux dağıtımlarının çoğu (Ubuntu, Debian, CentOS vb.) kendi paket yöneticileri aracılığıyla PostgreSQL kurulumunu destekler. Burada Ubuntu için adımları anlatacağız.

  1. Paket Listesini Güncelleyin: Terminali açın ve sisteminizdeki paket listesini güncelleyin:
    
    sudo apt update
                

  2. PostgreSQL'i Kurun: PostgreSQL sunucusunu ve contrib paketini (ek faydalı modüller ve araçlar içerir) kurun:
    
    sudo apt install postgresql postgresql-contrib
                


    Bu komut, varsayılan olarak postgres adında bir süper kullanıcı ve bu kullanıcıya ait bir veritabanı oluşturur. Ayrıca, PostgreSQL servisi otomatik olarak başlatılır ve sistem açılışında çalışacak şekilde ayarlanır.

  3. PostgreSQL Servisinin Durumunu Kontrol Edin: Servisin çalıştığından emin olmak için:
    
    sudo systemctl status postgresql
                


    Çıktıda "active (exited)" veya "active (running)" görmelisiniz.

  4. Veritabanı Kullanıcısına Geçin: PostgreSQL, kurulumla birlikte postgres adında bir Linux kullanıcısı oluşturur. Bu kullanıcı, PostgreSQL süper kullanıcısına erişmek için kullanılır:
    
    sudo -i -u postgres
                

  5. psql Komut Satırı Arayüzüne Bağlanın: Artık postgres Linux kullanıcısı olarak psql aracılığıyla PostgreSQL sunucusuna bağlanabilirsiniz:
    
    psql
                


    Başarılı bir bağlantıda postgres=# komut istemini göreceksiniz. Çıkmak için \q yazın ve Enter'a basın.

  6. (İsteğe Bağlı) Yeni Bir Veritabanı Kullanıcısı Oluşturun: Güvenlik nedeniyle, genellikle postgres süper kullanıcısını doğrudan kullanmak yerine kendi özel kullanıcılarınızı oluşturmanız önerilir. Önce postgres kullanıcısı olarak oturum açın (yukarıdaki 4. adım), ardından:
    
    CREATE USER myuser WITH PASSWORD 'my_strong_password';
                


    Bu, myuser adında bir kullanıcı oluşturur. Daha sonra bu kullanıcıya yetkiler vermeniz gerekecektir.

  7. (İsteğe Bağlı) Yeni Bir Veritabanı Oluşturun:
    
    CREATE DATABASE mydatabase OWNER myuser;
                


    Bu, mydatabase adında bir veritabanı oluşturur ve sahibini myuser olarak ayarlar.

Her üç işletim sistemi için de kurulumu tamamladığınıza göre, artık PostgreSQL ortamınızı daha detaylı yapılandırmaya ve ilk veritabanınızı oluşturmaya hazırsınız.

PostgreSQL Ortamınızı Başlangıç İçin Nasıl Yapılandırırsınız?

PostgreSQL'i kurmak harika bir başlangıçtır, ancak onu kendi özel ihtiyaçlarınıza göre yapılandırmak, performans ve güvenlik açısından kritik öneme sahiptir. Bu bölümde, yeni bir kullanıcı oluşturmaktan, veritabanı oluşturmaya ve temel yapılandırma dosyalarına göz atmaya kadar, ortamınızı başlangıç için nasıl kuracağınızı inceleyeceğiz.

Kullanıcılar ve Veritabanları Oluşturma

PostgreSQL'de güvenlik, kullanıcı rolleri ve izinler üzerine kuruludur. Genellikle, tüm işlemler için süper kullanıcı olan 'postgres' kullanıcısını doğrudan kullanmaktan kaçınmak ve uygulamalarınız için özel, daha kısıtlı yetkilere sahip kullanıcılar oluşturmak iyi bir uygulamadır. Veritabanlarınız da aynı şekilde belirli bir kullanıcıya ait olmalıdır.

İlk olarak, psql komut satırı istemcisine süper kullanıcı olarak bağlanmalısınız:


# Linux/macOS için:
sudo -u postgres psql

# Windows için (komut istemcisini yönetici olarak açtıktan sonra):
psql -U postgres
# Ardından, kurulum sırasında belirlediğiniz parolayı girin.
    

Bağlandıktan sonra, yeni bir kullanıcı (rol) ve bir veritabanı oluşturalım:


-- Yeni bir kullanıcı (rol) oluşturalım
CREATE USER myapp_user WITH PASSWORD 'GucluParolanizBurayaGelecek';

-- Bu kullanıcı için bir veritabanı oluşturalım
CREATE DATABASE myapp_db OWNER myapp_user;

-- Yeni veritabanına bağlanıp kullanıcımıza tüm yetkileri verelim (geliştirme ortamı için)
\c myapp_db;
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;

-- Gerekli tablo ve şemalar için de yetki vermeyi unutmayın
-- Örneğin: GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myapp_user;
-- GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myapp_user;
    

Bu adımlarla myapp_user adlı bir kullanıcı ve myapp_db adlı bir veritabanı oluşturmuş oldunuz. Artık uygulamanız, myapp_user ve GucluParolanizBurayaGelecek parolası ile myapp_db veritabanına bağlanabilir.

pgAdmin 4 ile Bağlantı ve Yönetim

Grafik arayüzleri tercih edenler için pgAdmin 4 harika bir araçtır. Çoğu kurulumla birlikte gelir ve PostgreSQL sunucularınızı görsel olarak yönetmenize olanak tanır.

  1. pgAdmin 4'ü Başlatın: İşletim sisteminizin uygulama menüsünden pgAdmin 4'ü bulun ve başlatın. Tarayıcınızda açılacaktır.
  2. Sunucu Ekle: Sol menüdeki "Servers" (Sunucular) kısmına sağ tıklayın ve "Register" (Kaydet) -> "Server..." (Sunucu...) seçeneğini seçin.
  3. Bağlantı Detaylarını Girin:
    • General (Genel) sekmesi: Bir "Name" (Ad) girin, örneğin "Local PostgreSQL".
    • Connection (Bağlantı) sekmesi:
      • Host name/address (Ana bilgisayar adı/adresi): localhost (veya 127.0.0.1)
      • Port: 5432 (varsayılan)
      • Maintenance database (Bakım veritabanı): postgres
      • Username (Kullanıcı adı): postgres (veya yeni oluşturduğunuz myapp_user)
      • Password (Parola): Kurulum sırasında belirlediğiniz veya kullanıcı için ayarladığınız parola.
  4. Kaydedin ve Bağlanın: "Save" (Kaydet) butonuna tıklayın. pgAdmin, sunucuya bağlanmaya çalışacak ve başarılı olursa, sol menüde sunucunuzun altındaki veritabanlarını ve diğer nesneleri görebileceksiniz.

pgAdmin 4 ile veritabanlarını oluşturabilir, tabloları yönetebilir, SQL sorguları çalıştırabilir ve sunucunuzun durumunu izleyebilirsiniz. Görsel bir araç olması, özellikle yeni başlayanlar için veri tabanı yönetimi süreçlerini çok daha anlaşılır kılar.

Temel Yapılandırma Dosyaları: postgresql.conf ve pg_hba.conf

PostgreSQL'in davranışını ve güvenlik politikalarını ayarlamak için iki ana yapılandırma dosyası kullanılır:

  • postgresql.conf: Bu dosya, bellek kullanımı, disk G/Ç, bağlantı ayarları, loglama ve birçok diğer sunucu parametresini kontrol eder. Performans optimizasyonu için en çok düzenleyeceğiniz dosyalardan biridir. Örneğin, shared_buffers (paylaşılan bellek miktarı) veya work_mem (sorgu işlemleri için ayrılan bellek) gibi parametreleri burada ayarlayabilirsiniz.
  • pg_hba.conf: "Host-Based Authentication" anlamına gelir ve PostgreSQL'e kimlerin, hangi yöntemle ve hangi veritabanına bağlanabileceğini belirleyen güvenlik kurallarını içerir. Bu dosya, veritabanınıza yetkisiz erişimi engellemek için kritik öneme sahiptir.

Bu dosyaların konumu işletim sistemine göre değişir, ancak genellikle PostgreSQL kurulum dizininin içindeki data klasöründedir. Linux'ta ise çoğu zaman /etc/postgresql//main/ altında bulunurlar.

Uzman İpucu: pg_hba.conf dosyasını düzenlerken dikkatli olun! Yanlış yapılandırma, sunucunuza erişimi tamamen engelleyebilir. Herhangi bir değişiklik yaptıktan sonra PostgreSQL servisini yeniden başlatmayı unutmayın (örneğin, sudo systemctl restart postgresql).

Vaka Analizi: Geliştirme Ortamını Güvenli Hale Getirme

Bir yazılım geliştirme ekibi, yeni bir e-ticaret platformu üzerinde çalışıyordu. Her geliştiricinin kendi yerel makinesinde PostgreSQL'e erişimi olması gerekiyordu, ancak aynı zamanda test verilerine dışarıdan yetkisiz erişimin engellenmesi de önemliydi. Başlangıçta, tüm geliştiriciler "postgres" süper kullanıcısını kullanıyordu, bu da hem bir güvenlik riski oluşturuyor hem de değişikliklerin takibini zorlaştırıyordu. Ekip lideri, her geliştirici için özel bir kullanıcı (dev_user_ali, dev_user_ayse gibi) oluşturmaya ve bu kullanıcılara sadece kendi test veritabanlarına (dev_db_ali, dev_db_ayse) erişim yetkisi vermeye karar verdi. Ayrıca, pg_hba.conf dosyasını düzenleyerek sadece belirli IP aralıklarından veya localhost'tan gelen bağlantılara izin verdi ve parola tabanlı kimlik doğrulamasını zorunlu kıldı. Bu yapılandırma sayesinde, hem her geliştiricinin kendi bağımsız ortamında çalışması sağlandı hem de güvenlik önemli ölçüde artırıldı. Yanlışlıkla yapılan değişiklikler veya dış saldırılar gibi riskler minimize edildi, böylece geliştirme süreci daha güvenli ve kontrollü hale geldi.

Bu temel yapılandırma adımları, PostgreSQL ortamınızı daha düzenli, güvenli ve projenizin ihtiyaçlarına uygun hale getirmek için vazgeçilmezdir. İlerleyen zamanlarda, performans optimizasyonu için postgresql.conf dosyasındaki diğer parametreleri de keşfetmeniz gerekecektir.

Veritabanı Temelleri: İlk Veritabanınızı ve Tablonuzu Nasıl Oluşturursunuz?

Artık PostgreSQL'i kurdunuz ve ortamınızı temel düzeyde yapılandırdınız. Şimdi, ilişkisel veritabanlarının kalbi olan veritabanlarını ve tabloları oluşturmaya geçme zamanı. Bu bölüm, SQL (Structured Query Language) komutlarını kullanarak ilk veritabanınızı oluşturmanızı, içine bir tablo eklemenizi ve bu tabloya veri girişleri yapmanızı sağlayacak pratik adımları içerir.

Yeni Bir Veritabanı ve Tablo Oluşturma

Daha önce gördüğünüz gibi, bir veritabanı oluşturmak oldukça basittir. Süper kullanıcı (postgres) veya yetkili bir kullanıcı olarak psql'e bağlanın ve aşağıdaki komutları kullanın. Eğer pgAdmin kullanıyorsanız, Query Tool'u açarak bu komutları çalıştırabilirsiniz.


-- Yeni bir veritabanı oluşturalım (eğer daha önce oluşturmadıysanız)
CREATE DATABASE satis_analizi OWNER myapp_user;

-- Oluşturduğumuz veritabanına bağlanalım
\c satis_analizi;

-- Şimdi bu veritabanı içinde bir tablo oluşturalım.
-- Örneğin, ürün satışlarını takip eden bir tablo:
CREATE TABLE urun_satislari (
    satis_id SERIAL PRIMARY KEY,    -- Otomatik artan benzersiz ID
    urun_adi VARCHAR(100) NOT NULL, -- Ürün adı, boş olamaz
    kategori VARCHAR(50),           -- Ürün kategorisi
    satis_miktari INT NOT NULL,     -- Satılan miktar, boş olamaz
    birim_fiyat DECIMAL(10, 2) NOT NULL, -- Birim fiyat, ondalıklı
    satis_tarihi DATE DEFAULT CURRENT_DATE -- Satış tarihi, varsayılan olarak bugünün tarihi
);

-- Tablonun başarıyla oluşturulduğunu kontrol edelim
\d urun_satislari;
    

Yukarıdaki komutları adım adım açıklayalım:

  • CREATE DATABASE satis_analizi OWNER myapp_user;: satis_analizi adında yeni bir veritabanı oluşturur ve bu veritabanının sahibini daha önce oluşturduğumuz myapp_user olarak belirler.
  • \c satis_analizi;: psql istemcisi içinde çalışırken, mevcut bağlantınızı satis_analizi veritabanına geçmenizi sağlar. Bu komut sadece psql'e özgüdür. pgAdmin'de ise sol panelden veritabanına tıklayarak veya Query Tool içinde veritabanı seçeneğini kullanarak bağlanabilirsiniz.
  • CREATE TABLE urun_satislari (...): urun_satislari adında yeni bir tablo oluşturur. Tablo tanımı, sütun adlarını ve veri tiplerini içerir:
    • satis_id SERIAL PRIMARY KEY: Her bir satış kaydı için benzersiz bir tanımlayıcı görevi gören birincil anahtar sütunudur. SERIAL, otomatik olarak artan bir tam sayı veri tipi anlamına gelir.
    • urun_adi VARCHAR(100) NOT NULL: Ürünün adını tutar. En fazla 100 karakter uzunluğunda metin ve boş bırakılamaz (NOT NULL).
    • kategori VARCHAR(50): Ürün kategorisini tutar. En fazla 50 karakter. Boş bırakılabilir.
    • satis_miktari INT NOT NULL: Satılan ürün miktarını tutar. Tam sayı tipi ve boş bırakılamaz.
    • birim_fiyat DECIMAL(10, 2) NOT NULL: Ürünün birim fiyatını tutar. DECIMAL(10, 2), toplam 10 haneye kadar, ondalık kısmında ise 2 haneye kadar sayıları ifade eder. Boş bırakılamaz.
    • satis_tarihi DATE DEFAULT CURRENT_DATE: Satışın yapıldığı tarihi tutar. DATE tipi ve varsayılan olarak kaydın eklendiği günün tarihini alır.
  • \d urun_satislari;: psql komut istemcisi içinde, belirtilen tablonun yapısını (sütunlar, tipler, indeksler vb.) detaylı olarak gösterir. Bu, tablonuzun doğru oluşturulduğunu doğrulamak için kullanışlıdır.

Tabloya Veri Ekleme ve Sorgulama

Tablonuzu oluşturduğunuza göre, şimdi içine veri ekleyebilir ve bu verileri sorgulayabiliriz.


-- urun_satislari tablosuna veri ekleyelim
INSERT INTO urun_satislari (urun_adi, kategori, satis_miktari, birim_fiyat, satis_tarihi) VALUES
('Laptop Pro X', 'Elektronik', 2, 1200.00, '2023-10-26'),
('Masaüstü Monitör', 'Elektronik', 5, 300.50, '2023-10-26'),
('Kablosuz Klavye', 'Aksesuar', 10, 75.25, '2023-10-25'),
('Ofis Koltuğu Ergonomik', 'Mobilya', 1, 450.00, '2023-10-27'),
('HDMI Kablo 2m', 'Aksesuar', 20, 15.99, '2023-10-27');

-- Tüm verileri sorgulayalım
SELECT * FROM urun_satislari;

-- Sadece belirli kategorideki ürünleri sorgulayalım
SELECT urun_adi, satis_miktari, birim_fiyat FROM urun_satislari WHERE kategori = 'Elektronik';

-- 100 TL'den pahalı olan ürünlerin toplam satış miktarını bulalım
SELECT SUM(satis_miktari) AS toplam_pahali_urun_satis FROM urun_satislari WHERE birim_fiyat > 100.00;

-- Kategoriye göre toplam satış miktarı ve ortalama birim fiyatı gruplayarak listeleyelim
SELECT kategori, SUM(satis_miktari) AS toplam_satis, AVG(birim_fiyat) AS ortalama_birim_fiyat
FROM urun_satislari
GROUP BY kategori
ORDER BY toplam_satis DESC;
    

Uzman İpucu: SQL komutlarını yazarken büyük/küçük harf duyarlılığına dikkat etmeyebilirsiniz (PostgreSQL'de varsayılan olarak duyarlı değildir), ancak tutarlı bir yazım stili kullanmak kodunuzun okunabilirliğini artırır. Tablo ve sütun isimlerini genellikle küçük harf kullanmak iyi bir alışkanlıktır.

Bu örneklerle, veritabanı oluşturma, tablo tasarlama, veri ekleme ve temel sorgulama işlemlerini öğrenmiş oldunuz. Bu, herhangi bir uygulama geliştirmeye başlamak için sağlam bir temel sağlar. İleri düzeyde daha karmaşık sorgular, indeksler ve optimizasyon teknikleri öğrenebilirsiniz, ancak temelleri anlamak kritik önem taşır.

Performans ve Güvenlik İçin İleri Düzey İpuçları ve En İyi Uygulamalar

PostgreSQL'i sadece kurmak ve kullanmak yeterli değildir; uzun vadede performanslı ve güvenli kalmasını sağlamak için bazı ileri düzey ipuçlarını ve en iyi uygulamaları benimsemek hayati öneme sahiptir. Bu bölümde, veritabanınızın sağlığını korumak ve potansiyel güvenlik açıklarını kapatmak için atabileceğiniz adımlara odaklanacağız.

Performans Optimizasyonu İpuçları

Performans, bir veritabanı sisteminin en kritik özelliklerinden biridir. PostgreSQL'in hızını artırmak için kullanabileceğiniz bazı teknikler şunlardır:

  1. İndeksleme Stratejileri: Sıkça sorgulanan sütunlara, özellikle WHERE koşullarında kullanılanlara indeksler eklemek sorgu hızını önemli ölçüde artırır. Ancak çok fazla indeks eklemek yazma işlemlerini yavaşlatabilir. B-tree, Hash, GIN, GIST gibi farklı indeks tiplerini ve kullanımları araştırın.
    
    -- urun_adi sütununa indeks ekleyelim
    CREATE INDEX idx_urun_adi ON urun_satislari (urun_adi);
    
    -- Kategori ve satis_tarihi üzerinde bir birleşik indeks
    CREATE INDEX idx_kategori_tarih ON urun_satislari (kategori, satis_tarihi);
                

  2. VACUUM ve ANALYZE Komutları: PostgreSQL'in MVCC (Multi-Version Concurrency Control) mimarisi gereği, güncellenen veya silinen veriler hemen diskten kaldırılmaz, "ölü satır" olarak kalır. VACUUM komutu bu ölü satırları temizler ve disk alanını geri kazanır. ANALYZE ise sorgu planlayıcısının daha iyi planlar oluşturması için tablo istatistiklerini günceller. Genellikle VACUUM FULL yerine daha hafif olan VACUUM ve ardından ANALYZE kullanmak tercih edilir. Otomatik vakum (autovacuum) özelliği, bu işlemleri arka planda otomatik olarak yapar ve varsayılan olarak etkindir, ancak yapılandırmasını ihtiyaçlarınıza göre ayarlayabilirsiniz.
  3. Yapılandırma Dosyası Optimizasyonu (postgresql.conf):
    • shared_buffers: PostgreSQL'in kullanacağı paylaşılan bellek miktarını belirler. Genellikle RAM'in %25'i civarında ayarlanması önerilir.
    • work_mem: Her bir sorgu işlemi için geçici disk tabanlı işlemlerden önce kullanılacak bellek miktarını belirler. Sıralama (sort) veya birleştirme (hash join) gibi işlemleri etkiler.
    • wal_buffers: WAL (Write-Ahead Log) için kullanılan bellek miktarını belirler.
    • effective_cache_size: İşletim sisteminin ve veritabanının disk önbelleği için ne kadar bellek ayırabileceği konusunda sorgu planlayıcıya ipucu verir.

    Bu parametreleri sunucunuzun donanım kaynaklarına ve iş yükünüze göre ayarlamalısınız. Herhangi bir değişiklikten sonra veritabanını yeniden başlatmayı unutmayın.

  4. Sorgu Optimizasyonu: Yavaş çalışan sorguları EXPLAIN ANALYZE ile inceleyin. Bu komut, bir sorgunun nasıl yürütüldüğünü ve hangi adımların ne kadar zaman aldığını gösterir. Yavaş kalan kısımları optimize ederek genel performansı artırabilirsiniz.
  5. Bağlantı Havuzlama (Connection Pooling): Özellikle yüksek trafikli uygulamalarda, her gelen istek için yeni bir veritabanı bağlantısı açmak maliyetli olabilir. PgBouncer gibi bağlantı havuzu araçları, mevcut bağlantıları yeniden kullanarak performansı artırır.

Güvenlik En İyi Uygulamaları

Veritabanı güvenliği, veri ihlallerini önlemek ve hassas bilgileri korumak için olmazsa olmazdır. İşte dikkat etmeniz gerekenler:

  1. Güçlü Parolalar ve Rol Yönetimi:
    • postgres süper kullanıcısı için güçlü, karmaşık bir parola kullanın ve bu parolayı sık sık değiştirin.
    • Uygulamalarınız ve kullanıcılarınız için ayrı roller oluşturun ve bu rollere yalnızca ihtiyaç duydukları en az ayrıcalıkları (principle of least privilege) verin.
    • CREATEROLE, CREATEDB, SUPERUSER gibi ayrıcalıkları sadece gerçekten ihtiyaç duyan rollere atayın.
  2. pg_hba.conf Dosyasını Doğru Yapılandırma:
    • Veritabanınıza sadece güvendiğiniz IP adreslerinden veya ağlardan erişime izin verin.
    • Uygulamalar için md5 veya scram-sha-256 gibi güvenli parola kimlik doğrulama yöntemlerini kullanın. trust kimlik doğrulamasını asla üretim ortamında kullanmayın.
    • Örnek bir pg_hba.conf girişi:
      
      # TYPE  DATABASE        USER            ADDRESS                 METHOD
      host    myapp_db        myapp_user      192.168.1.0/24          md5
      # Bu satır, 'myapp_user'ın 'myapp_db' veritabanına sadece 192.168.1.x ağından MD5 parolasıyla bağlanmasına izin verir.
                          

  3. SSL/TLS Kullanımı: Veritabanı ile uygulama arasındaki iletişimi şifrelemek için SSL/TLS kullanın. Bu, ağ üzerinden gönderilen verilerin ele geçirilmesini önler. postgresql.conf içinde ssl = on ve ilgili sertifika ayarlarını yapmalısınız.
  4. Veritabanı Yedekleri ve Geri Yükleme: Düzenli yedekleme stratejileri uygulayın. pg_dump ve pg_restore gibi araçlar kullanarak veritabanınızın yedeğini alın ve bu yedekleri güvenli bir yerde saklayın. Felaket durumunda verilerinizi geri yükleme yeteneğiniz olduğundan emin olmak için yedekleri periyodik olarak test edin.
  5. Güvenlik Güncellemeleri: PostgreSQL topluluğu güvenlik açıklarını tespit edip yamalar yayınladığında, sunucunuzu güncel tutmak için bu yamaları hızla uygulayın.
Uzman İpucu: Otomatik yedekleme ve kurtarma senaryolarını otomatikleştirmek, veri kaybı riskini minimize etmenin en etkili yollarından biridir. Cron işleri veya otomasyon araçları kullanarak bu süreçleri planlayın.

Bu ileri düzey ipuçları ve en iyi uygulamalar, PostgreSQL veritabanı ortamınızın sadece çalışmasını değil, aynı zamanda en iyi performansı göstermesini ve güvenli kalmasını sağlamak için size yol gösterecektir. Unutmayın, veritabanı yönetimi sürekli bir öğrenme ve iyileştirme sürecidir.

Mobil Uyumlu Tasarım İçin Notlar: Makalenizin Sunumu Nasıl Olmalı?

Bu teknik makale, PostgreSQL kurulumu gibi önemli bir konuyu ele alırken, içeriğin okuyuculara nasıl sunulduğu da büyük önem taşır. Özellikle günümüzde, içeriğin mobil cihazlarda da kolayca okunabilir ve erişilebilir olması kritik bir gereksinimdir. Teknik dokümantasyonlar genellikle kod blokları, tablolar ve uzun paragraflar içerdiğinden, mobil uyumluluk düşünülmeden hazırlandığında okuyucu deneyimi olumsuz etkilenebilir.

Bir makalenin veya teknik dokümantasyonun mobil uyumlu olması için dikkat edilmesi gereken bazı temel noktalar vardır:

  • Duyarlı (Responsive) Tasarım: İçerik, farklı ekran boyutlarına ve cihazlara (masaüstü, tablet, telefon) otomatik olarak uyum sağlamalıdır. Bu genellikle CSS medya sorguları (@media kuralları) kullanılarak sağlanır.
  • Okunabilir Font Boyutları: Metinler mobil cihazlarda da rahatça okunabilecek büyüklükte olmalıdır. Küçük fontlar, okuyucuyu yakınlaştırmaya zorlar ve kullanıcı deneyimini bozar.
  • Uygun Satır Yüksekliği ve Paragraf Aralığı: Metin bloklarının daha havadar görünmesini ve gözün yorulmamasını sağlar.
  • Yatay Kaydırma Yok: Mobil cihazlarda yatay kaydırma (horizontal scrolling) genellikle kötü bir deneyimdir. Özellikle kod blokları veya tablolar genişledikçe bu sorun ortaya çıkabilir. Bu tür içerikler için kaydırma çubukları (overflow-x: auto;) kullanmak veya daha küçük ekranlarda okunabilirliği artıracak şekilde düzenlemek önemlidir.
  • Tıklanabilir Alanlar (Tap Targets): Bağlantılar ve düğmeler gibi etkileşimli öğeler, parmakla kolayca tıklanabilecek kadar büyük olmalı ve aralarında yeterli boşluk bulunmalıdır.

HTML ve CSS ile Mobil Uyumluluk Örneği

Bir web sitesinde bu makaleyi görüntülerken, içeriğin farklı cihazlarda nasıl görüneceğini ayarlamak için CSS medya sorgularını kullanabiliriz. İşte basit bir örnek:





    

Yukarıdaki örnekte:

  • Varsayılan stiller, en küçük ekranlar (mobil cihazlar) için uygulanır. pre code bloğunda white-space: pre-wrap; ve word-break: break-all; kullanarak kod satırlarının ekran dışına taşmasını engelliyoruz. Ayrıca overflow-x: auto; ile gerektiğinde yatay kaydırma çubuğu ekleyerek okunabilirliği artırıyoruz.
  • @media (min-width: 768px) sorgusu, ekran genişliği 768 pikselden fazla olduğunda (genellikle tablet ve masaüstü) ek stilleri uygular. Bu sayede, içerik daha geniş bir alanda daha okunaklı hale gelir, font boyutları artırılır ve kod blokları daha standart bir şekilde (yatay kaydırma ile) gösterilir.

Bu yaklaşım, içeriğinizi farklı cihazlarda tutarlı ve keyifli bir şekilde sunmanızı sağlar. Bir teknik makale hazırlarken, sadece içeriğin kalitesine değil, aynı zamanda okuyucunun içeriğe nasıl eriştiğine de dikkat etmek, mesajınızın daha geniş bir kitleye ulaşmasına yardımcı olacaktır.

Sonuç: PostgreSQL Yolculuğunuzun İkinci Adımı ve Sıkça Sorulan Sorular

Bu kapsamlı rehberde, PostgreSQL'i sıfırdan kurmayı ve temel düzeyde bir geliştirme ortamı oluşturmayı adım adım öğrendiniz. İşletim sisteminize özel kurulum süreçlerinden, veritabanı ve kullanıcı oluşturma komutlarına, pgAdmin gibi yönetim araçlarının kullanımına ve hatta performans ile güvenlik için ileri düzey ipuçlarına kadar geniş bir yelpazede bilgi edindiniz. Artık veri tabanı yolculuğunuzda sağlam bir temeliniz var ve bu bilgilerle kendi uygulamalarınız için güçlü ve güvenilir bir veri yönetim altyapısı kurmaya hazırsınız.

Unutmayın ki PostgreSQL, derinlemesine keşfedilmeyi bekleyen zengin özelliklere sahip bir ekosistemdir. Bu makale, sadece başlangıç noktasıdır. İlerleyen süreçlerde, daha karmaşık sorgular yazma, gelişmiş indeksleme teknikleri, replikasyon, yedekleme stratejileri, optimizasyon yöntemleri ve farklı uzantıları kullanarak veritabanınızın potansiyelini tam olarak ortaya çıkarabilirsiniz. Sürekli öğrenmeye ve pratik yapmaya devam etmek, PostgreSQL uzmanı olmanın anahtarıdır.

Veri tabanı yönetimi, modern yazılım geliştirmenin vazgeçilmez bir parçasıdır ve PostgreSQL gibi güçlü bir araçla çalışmak, projelerinize büyük değer katacaktır. Kurulum ve temel yapılandırma adımlarında karşılaşabileceğiniz olası sorunlara karşı hazırlıklı olmak ve çözüm yollarını bilmek, öğrenme sürecinizi daha akıcı hale getirecektir. Şimdi, edindiğiniz bu bilgileri pratiğe dökme zamanı!

Sıkça Sorulan Sorular (SSS)

  • S: PostgreSQL kurulumunda en yaygın hata nedir?

    C: En yaygın hatalardan biri, kurulum sırasında belirlenen süper kullanıcı (postgres) parolasının unutulmasıdır. Bu durumda, PostgreSQL servisini tek kullanıcı modunda başlatıp parolayı sıfırlamanız gerekebilir. Diğer bir yaygın sorun ise güvenlik duvarının (firewall) PostgreSQL'in varsayılan 5432 portuna erişimi engellemesidir. Güvenlik duvarı ayarlarınızı kontrol ettiğinizden emin olun.

  • S: psql ve pgAdmin arasındaki fark nedir? Hangisini kullanmalıyım?

    C: psql, PostgreSQL ile etkileşim kurmak için kullanılan bir komut satırı aracıdır. Hafif, hızlı ve otomasyon için idealdir. pgAdmin ise PostgreSQL sunucularını görsel olarak yönetmek için kullanılan bir grafik arayüzüdür (GUI). Yeni başlayanlar için veritabanını ve tabloları görselleştirmeyi kolaylaştırır. Her ikisinin de kendine göre avantajları vardır; geliştiriciler genellikle psql'i, veri analistleri veya yöneticiler ise pgAdmin'i tercih edebilir. İhtiyaçlarınıza göre her ikisini de kullanmak en iyisidir.

  • S: PostgreSQL'i kaldırmak istersem ne yapmalıyım?

    C: İşletim sisteminize göre değişiklik gösterir:

    • Windows: "Denetim Masası" -> "Program Ekle veya Kaldır" üzerinden PostgreSQL'i kaldırabilirsiniz.
    • macOS (Homebrew ile): Terminalde brew services stop postgresql ve ardından brew uninstall postgresql komutlarını kullanın. Veri dizinlerini de manuel olarak silmeniz gerekebilir (genellikle /usr/local/var/postgres).
    • Linux (Ubuntu): Terminalde sudo apt remove --purge postgresql postgresql-contrib komutunu kullanın. Bu, yapılandırma dosyalarını da kaldırır. Veri dizini /var/lib/postgresql//main da kaldırılmalıdır.
  • S: Performans neden önemlidir ve nasıl izleyebilirim?

    C: Performans, uygulamanızın hızı ve kullanıcılara sağladığı deneyim açısından kritik öneme sahiptir. Yavaş veritabanı işlemleri, uygulamanızın genelini yavaşlatabilir. Performansı izlemek için pg_stat_activity ve pg_stat_statements gibi PostgreSQL'in kendi sunduğu istatistiksel görünümleri kullanabilirsiniz. Ayrıca EXPLAIN ANALYZE komutu ile sorgularınızın nasıl çalıştığını detaylıca görebilirsiniz. Dış araçlar (örneğin Prometheus ve Grafana) ile de daha kapsamlı izleme yapabilirsiniz.

  • S: PostgreSQL'de hangi güvenlik önlemlerini almalıyım?

    C: En temel güvenlik önlemleri şunlardır: Güçlü ve benzersiz parolalar kullanın, uygulamalarınız için en az ayrıcalık ilkesini uygulayan özel kullanıcılar oluşturun, pg_hba.conf dosyasını doğru yapılandırarak sadece yetkili IP'lerden erişime izin verin, veritabanı ile uygulama arasındaki iletişimi SSL/TLS ile şifreleyin ve düzenli olarak yedekleme yapın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.