Takip et

Neden PostgreSQL ve Ubuntu 18.04 İkilisini Tercih Etmelisiniz?

Ubuntu 18.04 Üzerine PostgreSQL Kurulumu ve Kullanımı Rehberi

Modern uygulama geliştirme dünyasında veri yönetimi, projelerin bel kemiğini oluşturur. Peki, güçlü, esnek ve açık kaynaklı bir ilişkisel veritabanı yönetim sistemini (RDBMS) Ubuntu 18.04 sunucunuza nasıl kurar ve verimli bir şekilde kullanırsınız? Bu kapsamlı rehber, PostgreSQL’in kurulumundan temel veritabanı operasyonlarına, performans optimizasyonundan güvenlik ipuçlarına kadar her adımı adım adım açıklayarak sizi sıfırdan uzman seviyesine taşıyacak.

Neden PostgreSQL ve Ubuntu 18.04 İkilisini Tercih Etmelisiniz?

Veri tabanı seçimi, bir projenin başarısı için kritik öneme sahiptir. Günümüzün rekabetçi teknoloji ortamında, hem güvenilir hem de yüksek performanslı bir çözüm bulmak zorlayıcı olabilir. İşte tam bu noktada, PostgreSQL ve Ubuntu 18.04 kombinasyonu devreye giriyor. PostgreSQL, uzun yıllardır geliştirilen, topluluk destekli, açık kaynaklı bir ilişkisel veritabanı yönetim sistemidir. Güçlü özellikleri, ACID uyumluluğu (Atomicity, Consistency, Isolation, Durability) ve geniş veri türü desteği sayesinde kurumsal düzeyde uygulamalardan küçük ölçekli projelere kadar geniş bir yelpazede tercih edilmektedir. Özellikle karmaşık sorgular, yüksek eşzamanlılık ve büyük veri hacimleri ile başa çıkma konusunda üstün yeteneklere sahiptir. Ayrıca, mekansal veriler (PostGIS), JSON/JSONB ve XML gibi modern veri formatlarını yerel olarak desteklemesi, onu günümüzün çok yönlü uygulamaları için ideal bir seçenek haline getirir.

Ubuntu 18.04 (Bionic Beaver) ise, uzun süreli destek (LTS) sağlayan, stabil ve yaygın olarak kullanılan bir Linux dağıtımıdır. Sunucu ortamlarında güvenilirliği, kolay yönetilebilirliği ve geniş paket deposu sayesinde geliştiriciler ve sistem yöneticileri arasında oldukça popülerdir. PostgreSQL gibi kritik sistem bileşenlerini Ubuntu üzerine kurmak, genellikle sorunsuz bir deneyim sunar çünkü Ubuntu’nun paket yönetim sistemi (APT) bu tür yazılımların bağımlılıklarını ve güncellemelerini kolayca yönetir. Bu ikilinin tercih edilmesi, sadece teknik avantajlar sunmakla kalmaz, aynı zamanda maliyet etkinliği de sağlar. Açık kaynak lisansları sayesinde hem PostgreSQL hem de Ubuntu için lisans maliyeti ödemezsiniz, bu da bütçe kısıtlamaları olan projeler için büyük bir avantajdır. Ek olarak, geniş ve aktif toplulukları sayesinde karşılaşabileceğiniz sorunlara hızlıca çözüm bulabilir, sürekli gelişen özelliklerden faydalanabilirsiniz. Kısacası, PostgreSQL’in veri bütünlüğü, genişleyebilirliği ve performansı ile Ubuntu’nun stabilitesi ve kullanım kolaylığı birleştiğinde, her türlü veri odaklı uygulama için sağlam ve güvenilir bir temel oluşturmuş olursunuz. Bu rehber boyunca, bu güçlü ikiliyi en verimli şekilde nasıl kurup yöneteceğinizi adım adım keşfedeceğiz.

PostgreSQL Nedir ve Neden Bu Kadar Popülerdir?

PostgreSQL, genellikle “Postgres” olarak anılan, açık kaynak kodlu, güçlü, nesne-ilişkisel bir veritabanı yönetim sistemidir (ORDBMS). İlişkisel veritabanlarının sağlamlığını ve güvenilirliğini, nesne tabanlı programlamanın esnekliğiyle birleştirir. İlk olarak 1986 yılında Kaliforniya Üniversitesi, Berkeley’de geliştirilen POSTGRES projesinden doğmuş olup, yıllar içinde dünya çapında bir geliştirici topluluğu tarafından sürekli olarak iyileştirilmiş ve güncellenmiştir. Bu uzun ve köklü geçmiş, PostgreSQL’in olgunluğunu, stabilitesini ve güvenilirliğini kanıtlar niteliktedir. Peki, piyasada birçok veritabanı çözümü varken PostgreSQL’i bu kadar popüler yapan nedir?

Öncelikle, PostgreSQL’in en önemli özelliklerinden biri ACID uyumluluğudur. Bu, veritabanı işlemlerinin atomik (bölünemez), tutarlı (geçerli bir durumdan diğerine geçer), izole (eşzamanlı işlemler birbirini etkilemez) ve dayanıklı (kalıcı olarak kaydedilir) olduğu anlamına gelir. Özellikle finansal işlemler, envanter yönetimi veya kritik iş süreçleri gibi veri bütünlüğünün mutlak öneme sahip olduğu uygulamalar için bu özellik hayati öneme sahiptir. Ayrıca, PostgreSQL’in genişletilebilirliği eşsizdir. Kullanıcılar kendi veri türlerini, fonksiyonlarını, operatörlerini, agregalarını ve indeks türlerini tanımlayabilirler. Bu esneklik, özellikle coğrafi bilgi sistemleri (PostGIS), zaman serisi verileri veya diğer özel veri ihtiyaçları olan uygulamalar için büyük avantaj sağlar. Örneğin, PostGIS uzantısı ile PostgreSQL, mekansal verileri yönetme ve karmaşık coğrafi sorguları çalıştırma konusunda sektör lideri bir çözüm haline gelmiştir.

Diğer bir popülerlik nedeni ise açık kaynak olmasıdır. Açık kaynak kodlu olması, herhangi bir lisans ücreti ödemeden kullanılabilmesi, değiştirilebilmesi ve dağıtılabilmesi anlamına gelir. Bu durum, hem startup’lar hem de büyük ölçekli işletmeler için maliyet avantajı sağlar. Ayrıca, geniş ve aktif bir topluluğa sahip olması, sürekli hata düzeltmeleri, güvenlik yamaları ve yeni özelliklerin eklenmesini garanti eder. Karşılaşılan sorunlar için hızlı destek bulmak da bu topluluk sayesinde mümkündür. PostgreSQL, eşzamanlılık kontrolü konusunda da oldukça gelişmiştir. Multi-Version Concurrency Control (MVCC) mimarisi sayesinde, okuma işlemleri yazma işlemlerini engellemez ve tam tersi de geçerlidir. Bu, yüksek trafikli uygulamalarda bile veritabanının performansını ve yanıt verebilirliğini korumasını sağlar. Son olarak, SQL standartlarına yüksek düzeyde uyum sağlaması ve JSON/JSONB, XML gibi modern veri formatlarını yerel olarak desteklemesi, onu hem geleneksel ilişkisel veritabanı ihtiyaçları hem de NoSQL benzeri esneklik arayan projeler için ideal bir hibrit çözüm haline getirir. Bu özelliklerin tümü, PostgreSQL’i günümüzün en güvenilir, esnek ve güçlü veritabanı çözümlerinden biri yapmakta ve geniş bir kullanıcı kitlesi tarafından tercih edilmesini sağlamaktadır.

Ubuntu 18.04 Üzerine PostgreSQL Kurulumu Nasıl Yapılır?

Ubuntu 18.04 sunucunuza PostgreSQL kurmak, doğru adımları izlediğinizde oldukça basit bir işlemdir. Bu bölümde, sisteminizi hazırlamaktan PostgreSQL paketlerini yüklemeye ve servisini yönetmeye kadar tüm adımları detaylı bir şekilde ele alacağız. Bu adımlar, veritabanı sunucunuzun temelini sağlam bir şekilde atmanızı sağlayacak ve gelecekteki operasyonlarınız için sorunsuz bir başlangıç sunacaktır. Unutmayın, her adımın doğru ve eksiksiz bir şekilde tamamlanması, kurulumun başarısı için kritik öneme sahiptir. Başlamadan önce, bir terminal penceresi açtığınızdan ve root veya sudo yetkilerine sahip bir kullanıcı olarak çalıştığınızdan emin olun.

Sistem Güncellemesi ve Ön Gereksinimler Nelerdir?

Herhangi bir yazılım kurulumuna başlamadan önce, işletim sisteminizin güncel olduğundan emin olmak her zaman en iyi uygulamadır. Bu, hem güvenlik açıklarının kapatılmasına yardımcı olur hem de yeni kurulacak yazılımların mevcut sistem paketleriyle uyumluluğunu sağlar. Ubuntu’da bu işlemi yapmak için aşağıdaki komutları kullanabilirsiniz. İlk komut, yerel paket indeksinizi güncellerken, ikinci komut mevcut tüm paketlerin en son sürümlerine yükseltilmesini sağlar. Bu adımı atlamak, kurulum sırasında beklenmedik bağımlılık hatalarına veya güvenlik risklerine yol açabilir.


sudo apt update
sudo apt upgrade -y
    

Bu komutlar tamamlandıktan sonra, sisteminiz PostgreSQL kurulumu için hazır hale gelmiş demektir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar, böylece yükseltme işlemi kesintisiz devam eder. Bu adımların tamamlanması, yalnızca PostgreSQL için değil, sunucunuzda çalıştıracağınız diğer tüm uygulamalar için de sağlıklı bir temel oluşturur. Ayrıca, bu aşamada sistem kaynaklarınızın (CPU, RAM, disk alanı) yeterli olduğundan emin olmak da önemlidir. PostgreSQL, özellikle büyük veritabanları veya yoğun sorgu yükleri altında çalışırken belirli miktarda kaynak tüketebilir. Genellikle, başlangıç için 2GB RAM ve 20GB disk alanı çoğu küçük ve orta ölçekli uygulama için yeterli olacaktır. Ancak projenizin gereksinimlerine göre bu değerleri artırmanız gerekebilir.

PostgreSQL Paketlerini Yükleme Adımları

Sisteminiz güncellendikten sonra, PostgreSQL’i yüklemeye hazırsınız. Ubuntu’nun varsayılan depolarında PostgreSQL’in kararlı sürümleri bulunur ve apt paket yöneticisi aracılığıyla kolayca yüklenebilir. Aşağıdaki komut, PostgreSQL sunucusunu ve gerekli istemci araçlarını (örneğin psql) sisteminize kuracaktır. Bu komut, PostgreSQL’in varsayılan sürümünü (Ubuntu 18.04 için genellikle PostgreSQL 10) kuracaktır. Eğer belirli bir PostgreSQL sürümünü kurmak istiyorsanız, PostgreSQL APT deposunu eklemeniz gerekebilir; ancak bu rehberde varsayılan kurulumu ele alacağız.


sudo apt install postgresql postgresql-contrib -y
    

Burada postgresql paketi ana veritabanı sunucusunu içerirken, postgresql-contrib paketi ise çeşitli ek modülleri ve yardımcı programları barındırır. Bu ek modüller, PostGIS gibi coğrafi veri uzantılarından, performans analiz araçlarına kadar birçok faydalı aracı içerir ve genellikle çoğu kurulumda tavsiye edilir. Kurulum işlemi, bağımlılıkları otomatik olarak çözecek ve gerekli tüm dosyaları indirip yapılandıracaktır. Bu süreç birkaç dakika sürebilir, internet bağlantınızın hızına bağlı olarak değişiklik gösterebilir. Kurulum tamamlandığında, PostgreSQL servisi otomatik olarak başlatılacak ve sistem açılışında da otomatik olarak başlamak üzere yapılandırılacaktır. Bu, sunucunuz yeniden başlatıldığında veritabanınızın da otomatik olarak erişilebilir olacağı anlamına gelir, bu da operasyonel kolaylık sağlar. Bu adım, PostgreSQL’in çekirdek bileşenlerini ve temel araç setini sisteminize entegre etmenin anahtarıdır. Başarılı bir kurulumun ardından, veritabanı sunucunuz artık çalışmaya hazır olacaktır.

PostgreSQL Servisini Yönetme ve Durumunu Kontrol Etme

PostgreSQL kurulumu tamamlandığında, servis otomatik olarak başlatılır. Ancak, veritabanı sunucusunun durumunu kontrol etmek veya gerektiğinde manuel olarak durdurmak, başlatmak veya yeniden başlatmak isteyebilirsiniz. Bu tür servis yönetimi işlemleri için systemctl komutunu kullanırız. systemctl, Linux’ta sistem ve servis yöneticisi olan systemd ile etkileşim kurmak için kullanılan güçlü bir araçtır. Servisin durumunu kontrol etmek, herhangi bir sorun olup olmadığını anlamak için kritik öneme sahiptir. Aşağıdaki komut, PostgreSQL servisinin aktif olup olmadığını, herhangi bir hata mesajı olup olmadığını ve son log kayıtlarını gösterir:


sudo systemctl status postgresql
    

Bu komutun çıktısında Active: active (exited) veya Active: active (running) gibi bir ifade görmelisiniz. active (running) ifadesi, servisin sorunsuz bir şekilde çalıştığını gösterir. Eğer servis çalışmıyorsa veya bir hata durumu varsa, çıktı size sorunun ne olabileceği hakkında ipuçları verecektir. Servisi durdurmak, başlatmak veya yeniden başlatmak için ise aşağıdaki komutları kullanabilirsiniz:

  • Servisi Durdurma:
    
    sudo systemctl stop postgresql
                

    Bu komut, PostgreSQL sunucusunu tamamen durdurur. Veritabanına hiçbir bağlantı kabul edilmeyecektir.

  • Servisi Başlatma:
    
    sudo systemctl start postgresql
                

    Durdurulmuş bir PostgreSQL servisini yeniden başlatmak için bu komutu kullanın.

  • Servisi Yeniden Başlatma:
    
    sudo systemctl restart postgresql
                

    Yapılandırma değişiklikleri yaptıktan sonra servisi yeniden başlatmak genellikle gereklidir. Bu komut, servisi durdurup tekrar başlatır.

  • Sistem Açılışında Otomatik Başlamayı Etkinleştirme/Devre Dışı Bırakma:
    
    sudo systemctl enable postgresql
    sudo systemctl disable postgresql
                

    enable komutu, PostgreSQL’in sistem her başlatıldığında otomatik olarak başlamasını sağlar. disable ise bu özelliği kapatır. Varsayılan olarak, kurulumdan sonra enable durumu aktiftir.

Bu komutlar, PostgreSQL sunucunuzun yaşam döngüsünü yönetmenize olanak tanır. Özellikle yapılandırma dosyalarında değişiklikler yaptığınızda (postgresql.conf veya pg_hba.conf gibi), bu değişikliklerin etkili olması için servisi yeniden başlatmanız gerekecektir. Servis yönetimi becerileri, veritabanı yöneticisi olarak günlük operasyonlarınızda size büyük kolaylık sağlayacaktır.

Uzman İpucu: Herhangi bir servis yönetim komutu çalıştırmadan önce, mevcut bağlantıların ve işlemlerin durumunu kontrol etmek olası veri kaybını veya kesintileri önleyebilir. Özellikle üretim ortamlarında, planlı bakım pencerelerinde bu işlemleri yapmak en iyisidir.

PostgreSQL Kullanıcı ve Veritabanı Yönetimi

PostgreSQL’i kurduktan sonra, ilk yapmanız gereken şeylerden biri, veritabanı sunucusu ile etkileşim kuracak kullanıcılar ve bu kullanıcıların erişeceği veritabanları oluşturmaktır. PostgreSQL, varsayılan olarak postgres adında bir süper kullanıcı hesabı oluşturur. Bu hesap, sistemin root kullanıcısına benzer şekilde veritabanı sunucusu üzerinde tam yetkiye sahiptir. Güvenlik nedenleriyle, genellikle bu postgres kullanıcısı yerine projeniz veya uygulamanız için özel, daha az yetkili kullanıcılar ve veritabanları oluşturmak en iyi uygulamadır. Bu bölüm, yeni bir PostgreSQL kullanıcısı oluşturmaktan, bir veritabanı yaratmaya ve psql istemcisi ile bağlantı kurmaya kadar temel yönetim adımlarını kapsayacaktır. Bu adımlar, veritabanı ortamınızın güvenliğini ve organizasyonunu sağlamak için hayati öneme sahiptir.

Yeni Bir PostgreSQL Kullanıcısı Nasıl Oluşturulur?

Varsayılan postgres kullanıcısı, işletim sistemindeki postgres kullanıcısı ile ilişkilidir. Bu nedenle, postgres kullanıcısı olarak PostgreSQL istemcisine bağlanmak için, önce işletim sisteminde postgres kullanıcısına geçiş yapmanız gerekir. Bunu aşağıdaki komutla yapabilirsiniz:


sudo -i -u postgres
    

Bu komut sizi postgres kullanıcısının shell’ine atacaktır. Artık psql komutunu kullanarak PostgreSQL komut satırı istemcisine bağlanabilirsiniz:


psql
    

psql istemcisindeyken, yeni bir veritabanı kullanıcısı oluşturabilirsiniz. Güvenlik için, her uygulama veya proje için ayrı bir veritabanı kullanıcısı oluşturmak iyi bir uygulamadır. Örneğin, myuser adında bir kullanıcı oluşturalım ve ona bir şifre atayalım:


CREATE USER myuser WITH PASSWORD 'gucluvegizlisifre';
    

Şifrenizi güvenli ve karmaşık bir şekilde seçtiğinizden emin olun. Kullanıcı oluşturulduktan sonra, \du komutunu kullanarak mevcut kullanıcıları listeleyebilir ve yeni kullanıcınızın başarıyla oluşturulduğunu doğrulayabilirsiniz. psql‘den çıkmak için \q yazıp Enter tuşuna basmanız yeterlidir. Daha sonra, işletim sistemi postgres kullanıcısından çıkmak için exit yazıp Enter tuşuna basarak kendi kullanıcı hesabınıza geri dönebilirsiniz. Bu adımlar, veritabanı erişimini daha granüler bir şekilde yönetmenizi ve olası güvenlik açıklarını minimize etmenizi sağlar. Her bir uygulamanın kendi özel veritabanı kullanıcısına sahip olması, yetkisiz erişim durumunda potansiyel zararı sınırlamaya yardımcı olur.

Yeni Bir Veritabanı Nasıl Oluşturulur ve Yetkilendirilir?

Bir kullanıcı oluşturduktan sonra, bu kullanıcının üzerinde çalışacağı bir veritabanı oluşturmanız gerekir. Yine postgres kullanıcısı olarak psql‘e bağlanarak bu işlemi gerçekleştirebilirsiniz. my_database adında yeni bir veritabanı oluşturalım:


sudo -i -u postgres
psql
    

psql istemcisindeyken:


CREATE DATABASE my_database;
    

Veritabanı oluşturulduktan sonra, bu veritabanına daha önce oluşturduğumuz myuser kullanıcısına yetki vermemiz gerekir. Bu, myuser‘ın my_database üzerinde okuma, yazma ve diğer gerekli işlemleri yapabilmesini sağlar:


GRANT ALL PRIVILEGES ON DATABASE my_database TO myuser;
    

Bu komut, myuser‘a my_database üzerindeki tüm yetkileri verir. Daha kısıtlı yetkiler vermek isterseniz, ALL PRIVILEGES yerine SELECT, INSERT, UPDATE, DELETE gibi belirli yetkileri belirtebilirsiniz. Örneğin, sadece okuma yetkisi vermek için GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser; gibi daha spesifik komutlar kullanılabilir. Yetkilendirme işlemi tamamlandıktan sonra, \l komutunu kullanarak mevcut veritabanlarını listeleyebilir ve my_database‘in başarıyla oluşturulduğunu ve yetkilendirildiğini doğrulayabilirsiniz. psql‘den çıkmak için \q ve ardından exit komutlarını kullanmayı unutmayın. Bu adımlarla, uygulamanız için güvenli ve izole bir veritabanı ortamı hazırlamış olursunuz. Her uygulamanın kendi veritabanına ve kullanıcısına sahip olması, veritabanı yönetimini kolaylaştırır ve olası hataların veya güvenlik ihlallerinin etkisini sınırlar.

psql İstemcisi ile Veritabanına Bağlanma

PostgreSQL ile etkileşime geçmenin en yaygın yollarından biri, psql komut satırı istemcisini kullanmaktır. Bu araç, SQL sorguları çalıştırmanıza, veritabanı nesnelerini yönetmenize ve sunucu hakkında bilgi almanıza olanak tanır. Daha önce oluşturduğumuz myuser kullanıcısı ve my_database veritabanı ile bağlantı kurmayı deneyelim. Kendi kullanıcı hesabınızdan (root olmayan) aşağıdaki komutu kullanarak bağlanabilirsiniz:


psql -U myuser -d my_database -h localhost -p 5432
    
  • -U myuser: Bağlanmak istediğiniz kullanıcı adını belirtir (myuser).
  • -d my_database: Bağlanmak istediğiniz veritabanı adını belirtir (my_database).
  • -h localhost: Veritabanı sunucusunun ana bilgisayarını belirtir. Yerel sunucu için localhost kullanılır.
  • -p 5432: PostgreSQL’in varsayılan bağlantı noktası olan 5432’yi belirtir.

Bu komutu çalıştırdığınızda, sizden myuser için belirlediğiniz şifreyi girmeniz istenecektir. Şifreyi doğru girdikten sonra, psql istemcisine başarıyla bağlanacak ve my_database ortamında SQL komutları çalıştırmaya hazır olacaksınız. Bağlandıktan sonra, komut isteminiz my_database=> veya benzer bir ifadeye dönüşecektir. Bu, hangi veritabanına bağlı olduğunuzu gösterir. psql içinde çeşitli meta komutlar (ters eğik çizgi ile başlayan komutlar) bulunur. Örneğin:

  • \l: Tüm veritabanlarını listeler.
  • \dt: Mevcut veritabanındaki tabloları listeler.
  • \du: Tüm kullanıcıları listeler.
  • \conninfo: Mevcut bağlantı hakkında bilgi verir.
  • \q: psql istemcisinden çıkar.

Bu komutlar, veritabanı üzerinde hızlıca bilgi almanıza ve yönetim görevlerini yerine getirmenize yardımcı olur. psql, güçlü bir araçtır ve SQL sorgularınızı test etmek, veri manipülasyonu yapmak ve veritabanı şemasını incelemek için vazgeçilmezdir. Bağlantı sorunları yaşıyorsanız, pg_hba.conf dosyasını kontrol etmeniz gerekebilir. Bu dosya, hangi kullanıcıların hangi veritabanlarına hangi IP adreslerinden ve hangi kimlik doğrulama yöntemiyle bağlanabileceğini belirler. Varsayılan olarak, yerel bağlantılar genellikle peer veya md5 kimlik doğrulaması ile yapılandırılmıştır. Uzaktan bağlantılar için bu dosyanın düzenlenmesi gerekecektir, ancak bu konuyu ilerleyen bölümlerde ele alacağız.

Temel SQL Komutları ve Veri Manipülasyonu Nasıl Yapılır?

PostgreSQL’e başarılı bir şekilde bağlandıktan sonra, veritabanı ile etkileşim kurmanın ve veri yönetimi yapmanın zamanı geldi. Bu bölüm, SQL’in temelini oluşturan tablo oluşturma, veri ekleme, sorgulama, güncelleme ve silme komutlarını adım adım açıklayacaktır. Ayrıca, bu komutların gerçek dünya senaryolarında nasıl kullanılabileceğini gösteren basit bir vaka analizi de sunacağız. SQL (Structured Query Language), ilişkisel veritabanlarıyla iletişim kurmak için kullanılan standart bir dildir ve PostgreSQL de bu standarda sıkı sıkıya bağlıdır. Bu temel komutları anlamak, veritabanı yönetimi ve uygulama geliştirme süreçlerinizde size büyük bir avantaj sağlayacaktır. Her komutu dikkatlice inceleyerek ve uygulayarak, veri manipülasyonu konusunda sağlam bir temel oluşturabilirsiniz.

Tablo Oluşturma ve Veri Ekleme

Veritabanında veri depolamanın ilk adımı, tablolar oluşturmaktır. Tablolar, belirli bir yapıya sahip verileri satırlar ve sütunlar halinde düzenler. Her sütun belirli bir veri türünü (örneğin, tam sayı, metin, tarih) temsil eder. psql istemcisine myuser ve my_database ile bağlandıktan sonra, bir products tablosu oluşturalım:


CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT NOT NULL DEFAULT 0,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
    

Bu komutta:

  • SERIAL PRIMARY KEY: product_id sütununun otomatik artan bir tam sayı olduğunu ve tablonun birincil anahtarı olduğunu belirtir.
  • VARCHAR(100) NOT NULL: name sütununun en fazla 100 karakter uzunluğunda metin olduğunu ve boş bırakılamayacağını (NOT NULL) belirtir.
  • TEXT: description sütununun uzun metinleri depolayabileceğini belirtir.
  • DECIMAL(10, 2) NOT NULL: price sütununun ondalık bir sayı olduğunu (toplam 10 basamak, ondalık noktasından sonra 2 basamak) ve boş bırakılamayacağını belirtir.
  • INT NOT NULL DEFAULT 0: stock_quantity sütununun tam sayı olduğunu, boş bırakılamayacağını ve varsayılan değerinin 0 olduğunu belirtir.
  • TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP: created_at sütununun zaman damgası olduğunu, zaman dilimi bilgisi içerdiğini ve varsayılan değerinin kaydın oluşturulduğu anki zaman olduğunu belirtir.

Tablo oluşturulduktan sonra, bu tabloya veri ekleyebiliriz. INSERT INTO komutu, bir tabloya yeni satırlar eklemek için kullanılır:


INSERT INTO products (name, description, price, stock_quantity) VALUES
('Laptop', 'Güçlü bir dizüstü bilgisayar', 1200.00, 50),
('Akıllı Telefon', 'Yüksek performanslı akıllı telefon', 800.00, 150),
('Kablosuz Kulaklık', 'Gürültü engellemeli kablosuz kulaklık', 150.00, 200);
    

Bu komut, products tablosuna üç yeni ürün kaydı ekler. product_id ve created_at sütunları, tanımladığımız SERIAL ve DEFAULT CURRENT_TIMESTAMP özellikleri sayesinde otomatik olarak doldurulacaktır. Veri ekleme işlemi, uygulamanızın temel işlevselliğinin önemli bir parçasıdır ve doğru veri türleri ile kısıtlamaları belirlemek, veri bütünlüğünü sağlamak için hayati öneme sahiptir. Bu adımlar, veritabanınızda anlamlı bilgileri depolamaya başlamanız için gereken temel yapı taşlarını oluşturur.

Veri Sorgulama, Güncelleme ve Silme

Veritabanına veri ekledikten sonra, bu verilere erişmek, onları değiştirmek veya silmek isteyeceksiniz. SQL’in en temel ve en sık kullanılan komutları bu işlemleri yapmanızı sağlar.

Veri Sorgulama (SELECT)

Veritabanından veri almak için SELECT komutunu kullanırız. Bu komut, belirli koşullara uyan satırları veya sütunları seçmenize olanak tanır.

  • Tüm ürünleri listeleme:
    
    SELECT * FROM products;
                

    Bu komut, products tablosundaki tüm sütunları ve tüm satırları getirir.

  • Belirli sütunları seçme:
    
    SELECT name, price FROM products;
                

    Sadece ürün adını ve fiyatını listeler.

  • Koşullu sorgulama (WHERE):
    
    SELECT * FROM products WHERE price > 500;
                

    Fiyatı 500’den yüksek olan tüm ürünleri getirir.

  • Sıralama (ORDER BY):
    
    SELECT name, price FROM products ORDER BY price DESC;
                

    Ürünleri fiyata göre azalan sırada listeler.

Veri Güncelleme (UPDATE)

Mevcut bir kaydın verilerini değiştirmek için UPDATE komutunu kullanırız. WHERE koşulu olmadan UPDATE kullanmak, tablodaki tüm kayıtları etkileyeceğinden dikkatli olunmalıdır.


UPDATE products SET price = 1150.00 WHERE name = 'Laptop';
    

Bu komut, adı ‘Laptop’ olan ürünün fiyatını 1150.00 olarak günceller.


UPDATE products SET stock_quantity = stock_quantity + 20 WHERE product_id = 2;
    

ID’si 2 olan ürünün stok miktarını 20 artırır.

Veri Silme (DELETE)

Veritabanından kayıtları silmek için DELETE FROM komutunu kullanırız. UPDATE gibi, DELETE komutunu da WHERE koşulu olmadan kullanırsanız tablodaki tüm kayıtları siler, bu nedenle çok dikkatli olunmalıdır.


DELETE FROM products WHERE stock_quantity < 100;
    

Stok miktarı 100'den az olan tüm ürünleri siler.


DELETE FROM products WHERE name = 'Kablosuz Kulaklık';
    

Adı 'Kablosuz Kulaklık' olan ürünü siler.

Uzman İpucu: Üretim ortamlarında UPDATE ve DELETE komutlarını çalıştırmadan önce her zaman SELECT komutu ile etkilenecek satırları kontrol edin. Ayrıca, kritik işlemler öncesinde veritabanı yedeği almak, olası hataların önüne geçmek için altın kuraldır.

Gerçek Dünya Senaryosu: Basit Bir Envanter Yönetimi

Yukarıdaki temel SQL komutlarını kullanarak, bir e-ticaret sitesi için basit bir envanter yönetim sistemi senaryosu oluşturalım. Amacımız, ürünleri listelemek, stok durumlarını güncellemek ve belirli kriterlere göre ürünleri yönetmek.

Bir müşterinin 'Akıllı Telefon' satın aldığını varsayalım. Stok miktarını güncellememiz gerekiyor:


-- Müşteri 1 adet 'Akıllı Telefon' satın aldı, stoğu azaltalım.
UPDATE products SET stock_quantity = stock_quantity - 1 WHERE name = 'Akıllı Telefon';

-- Güncel stok durumunu kontrol edelim.
SELECT name, stock_quantity FROM products WHERE name = 'Akıllı Telefon';
    

Yeni bir ürün olan 'Tablet' ekleyelim:


INSERT INTO products (name, description, price, stock_quantity) VALUES
('Tablet', 'Hafif ve güçlü tablet', 450.00, 75);

-- Tüm ürünleri fiyatına göre azalan sırada listele.
SELECT name, price, stock_quantity FROM products ORDER BY price DESC;
    

Bir kampanya kapsamında tüm 'Laptop' fiyatlarını %10 düşürelim:


UPDATE products SET price = price * 0.90 WHERE name = 'Laptop';

-- Fiyatı güncellenmiş Laptop'u kontrol et.
SELECT name, price FROM products WHERE name = 'Laptop';
    

Stoku bitmiş veya çok az kalmış ürünleri tespit edelim (örneğin, stok 10'un altında olanlar):


SELECT name, stock_quantity FROM products WHERE stock_quantity < 10;
    

Bu basit senaryolar, SELECT, INSERT, UPDATE ve DELETE komutlarının günlük iş operasyonlarında nasıl kullanılabileceğine dair somut örnekler sunar. Veritabanı yönetiminin temelini oluşturan bu işlemler, herhangi bir veri odaklı uygulamanın kalbinde yer alır. Bu komutları ustaca kullanmak, veritabanınızdan en iyi şekilde faydalanmanızı ve uygulamanızın gereksinimlerini karşılamasını sağlayacaktır. Unutmayın, pratik yapmak bu komutlarda uzmanlaşmanın anahtarıdır.

PostgreSQL Performans Optimizasyonu ve Güvenlik İpuçları

PostgreSQL'i kurup temel işlemlerini öğrendikten sonra, sıra veritabanınızın performansını en üst düzeye çıkarmaya ve güvenliğini sağlamaya gelir. Büyük ölçekli uygulamalarda veya yoğun trafik altında çalışan sistemlerde performans optimizasyonu ve güvenlik, projenin başarısı için kritik öneme sahiptir. Bu bölümde, PostgreSQL sunucunuzun daha hızlı çalışmasını sağlayacak ipuçlarını ve veri güvenliğinizi artıracak en iyi uygulamaları ele alacağız. Bu konular, sadece veritabanı yöneticileri için değil, aynı zamanda veritabanı ile etkileşim kuran uygulama geliştiricileri için de büyük önem taşır. Doğru yapılandırma ve güvenlik önlemleri, hem veri kaybını önler hem de uygulamanızın daha sorunsuz çalışmasını sağlar.

Veritabanı Performansını Artırmak İçin Neler Yapılabilir?

PostgreSQL'in performansını artırmak için birçok farklı strateji mevcuttur. Bu stratejiler genellikle doğru indeksleme, sorgu optimizasyonu ve sunucu yapılandırması etrafında döner.

  1. İndeksleme (Indexing):

    En önemli performans artırıcı faktörlerden biridir. Sıkça sorgulanan sütunlara indeks eklemek, veri arama işlemlerini önemli ölçüde hızlandırır. Örneğin, products tablosundaki name sütununda sıkça arama yapıyorsanız:

    
    CREATE INDEX idx_products_name ON products (name);
                

    Ancak, her sütuna indeks eklemek performansı düşürebilir çünkü indeksler INSERT, UPDATE, DELETE işlemlerinde ek yük oluşturur. İndeksleri dikkatli seçmek ve sadece gerçekten gerekli olan yerlere uygulamak önemlidir. EXPLAIN ANALYZE komutu, sorgularınızın nasıl çalıştığını ve hangi indekslerin kullanıldığını analiz etmek için güçlü bir araçtır.

  2. Sorgu Optimizasyonu:

    Kötü yazılmış sorgular, veritabanı performansını ciddi şekilde etkileyebilir. Sorguları daha verimli hale getirmek için:

    • SELECT * yerine sadece ihtiyacınız olan sütunları seçin.
    • JOIN işlemlerini dikkatli kullanın ve gereksiz birleştirmelerden kaçının.
    • WHERE koşullarını indekslerden faydalanacak şekilde optimize edin.
    • LIMIT ve OFFSET ile büyük sonuç kümelerini sayfalandırın.

    Yine EXPLAIN ANALYZE kullanarak sorgularınızın çalışma planlarını incelemek, dar boğazları tespit etmenize yardımcı olacaktır.

  3. Sunucu Yapılandırması (postgresql.conf):

    PostgreSQL'in ana yapılandırma dosyası olan postgresql.conf, sunucunuzun kaynak kullanımını ve davranışını kontrol eden birçok parametre içerir. Önemli parametrelerden bazıları:

    • shared_buffers: Veritabanı tarafından kullanılan paylaşılan bellek miktarı. Genellikle toplam RAM'in %25'i civarında ayarlanması önerilir.
    • work_mem: Sorgular sırasında geçici disk yazımlarını önlemek için kullanılan bellek miktarı.
    • maintenance_work_mem: VACUUM, CREATE INDEX gibi bakım işlemleri için ayrılan bellek.
    • wal_buffers: Write-Ahead Log (WAL) için kullanılan bellek.
    • max_connections: Aynı anda izin verilen maksimum bağlantı sayısı.

    Bu parametreleri sunucunuzun donanım özelliklerine ve iş yükünüze göre ayarlamak, performansta büyük fark yaratabilir. Her değişiklikten sonra PostgreSQL servisini yeniden başlatmayı unutmayın.

  4. Otomatik Temizleme (Autovacuum):

    PostgreSQL'in MVCC mimarisi nedeniyle, eski (artık görünmeyen) satır versiyonları veritabanında kalır. VACUUM işlemi bu "ölü" satırları temizler ve disk alanını geri kazanır. autovacuum servisi bu işlemi otomatik olarak yapar ve varsayılan olarak etkindir. Ancak, yoğun iş yüklerinde autovacuum ayarlarını optimize etmek gerekebilir.

Uzman İpucu: Performans optimizasyonu tek seferlik bir işlem değildir. Veritabanı ve uygulama geliştikçe, performans izleme ve ayarlamaları düzenli olarak yapmanız gerekecektir. pg_stat_statements gibi uzantılar, en yavaş sorguları belirlemenize yardımcı olabilir.

PostgreSQL Güvenliğini Sağlamak İçin En İyi Uygulamalar

Veritabanı güvenliği, herhangi bir sistemin en kritik yönlerinden biridir. Yetkisiz erişimi önlemek, veri bütünlüğünü korumak ve gizliliği sağlamak için aşağıdaki en iyi uygulamaları takip etmelisiniz:

  1. Güçlü Şifreler ve Kullanıcı Yönetimi:
    • Tüm veritabanı kullanıcıları için karmaşık, benzersiz şifreler kullanın.
    • postgres süper kullanıcısını doğrudan uygulama bağlantıları için kullanmaktan kaçının. Her uygulama veya hizmet için ayrı, en az yetkiye sahip kullanıcılar oluşturun.
    • Gereksiz kullanıcıları silin veya devre dışı bırakın.
  2. Erişim Kontrolü (pg_hba.conf):

    pg_hba.conf dosyası, hangi ana bilgisayarlardan, hangi kullanıcıların, hangi veritabanlarına, hangi kimlik doğrulama yöntemiyle bağlanabileceğini belirler. Bu dosya, PostgreSQL'in ağ erişim kontrolünün kalbidir.

    • Sadece güvenilen IP adreslerinden bağlantılara izin verin.
    • md5 veya scram-sha-256 gibi güçlü kimlik doğrulama yöntemlerini kullanın. trust yönteminden kesinlikle kaçının, zira bu, şifresiz bağlantıya izin verir.
    • Uzaktan erişime ihtiyacınız yoksa, listen_addresses parametresini sadece localhost olarak ayarlayın.

    Örnek bir pg_hba.conf girdisi:

    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    my_database     myuser          192.168.1.100/32        md5
                

    Bu, myuser'ın my_database'e sadece 192.168.1.100 IP adresinden md5 şifre doğrulaması ile bağlanmasına izin verir.

  3. Ağ Güvenliği (Firewall):

    Sunucunuzun güvenlik duvarını (örneğin UFW) kullanarak PostgreSQL'in varsayılan portu olan 5432'ye erişimi kısıtlayın. Sadece güvenilen IP adreslerinden gelen bağlantılara izin verin.

    
    sudo ufw allow from 192.168.1.100 to any port 5432
    sudo ufw enable
                
  4. SSL/TLS Kullanımı:

    Veritabanı ile uygulama arasındaki tüm iletişimi şifrelemek için SSL/TLS kullanın. Bu, özellikle hassas verilerin ağ üzerinden iletilirken ele geçirilmesini önler. postgresql.conf dosyasında ssl = on ayarını yapmanız ve gerekli sertifikaları yapılandırmanız gerekir.

  5. Güncel Tutma:

    PostgreSQL sunucunuzu ve Ubuntu işletim sisteminizi düzenli olarak güncelleyin. Güvenlik yamaları ve hata düzeltmeleri, olası güvenlik açıklarını kapatır.

  6. Yedekleme ve Geri Yükleme:

    Düzenli ve güvenli yedeklemeler, veri kaybı durumunda felaket kurtarma için hayati öneme sahiptir. Yedeklerinizi ayrı bir konumda saklayın ve geri yükleme prosedürlerini düzenli olarak test edin.

Bu güvenlik önlemleri, PostgreSQL veritabanınızı potansiyel tehditlere karşı korumak için sağlam bir savunma hattı oluşturur. Unutmayın, güvenlik sürekli bir süreçtir ve düzenli denetim ile güncellemeler gerektirir.

Yedekleme, Geri Yükleme ve Uzaktan Bağlantı Nasıl Yapılır?

Veritabanı yönetimi söz konusu olduğunda, veri kaybına karşı hazırlıklı olmak ve dışarıdan erişimi doğru bir şekilde yapılandırmak hayati önem taşır. Bu bölüm, PostgreSQL veritabanlarınız için sağlam yedekleme ve geri yükleme stratejilerini, ayrıca uzaktan bağlantıları güvenli bir şekilde nasıl yapılandıracağınızı ele alacaktır. Felaket kurtarma senaryolarına hazırlıklı olmak, iş sürekliliğini sağlamak için vazgeçilmezdir. Aynı şekilde, uygulamaların veya geliştiricilerin veritabanına uzaktan erişmesi gerektiğinde, bu erişimin hem işlevsel hem de güvenli olması gerekir. Bu konular, veritabanı yöneticisinin en önemli sorumluluklarından bazılarıdır ve doğru bir şekilde uygulanmaları, sistemlerinizin dayanıklılığını ve erişilebilirliğini büyük ölçüde artıracaktır.

Veritabanı Yedekleme ve Geri Yükleme Stratejileri

Veritabanı yedeklemesi, herhangi bir felaket (donanım arızası, yazılım hatası, veri bozulması veya insan hatası) durumunda verilerinizin güvende olmasını sağlamanın tek yoludur. PostgreSQL, yedekleme ve geri yükleme için birkaç güçlü araç sunar:

pg_dump ile Yedekleme

pg_dump yardımcı programı, bir PostgreSQL veritabanının veya belirli tabloların SQL betiği veya arşiv formatında yedeğini almak için kullanılır. Bu yedekler, başka bir PostgreSQL sunucusuna veya aynı sunucudaki farklı bir veritabanına geri yüklenebilir.

  • Belirli bir veritabanını yedekleme:
    
    sudo -i -u postgres pg_dump -Fc my_database > /var/backups/postgresql/my_database_$(date +%Y%m%d).bak
                

    Bu komut, my_database veritabanının sıkıştırılmış özel formatta bir yedeğini alır ve /var/backups/postgresql/ dizinine tarih damgasıyla kaydeder. -Fc (format custom) seçeneği, pg_restore ile geri yüklemede esneklik sağlar.

  • Tüm veritabanlarını yedekleme (globals dahil):
    
    sudo -i -u postgres pg_dumpall > /var/backups/postgresql/all_databases_$(date +%Y%m%d).sql
                

    pg_dumpall, tüm veritabanlarını ve genel objeleri (kullanıcılar, tablespace'ler vb.) SQL betiği olarak yedekler. Bu, tüm PostgreSQL kümesinin yedeğini almak için kullanışlıdır.

Yedekleme dosyalarını güvenli bir yere (örneğin, bulut depolama, uzak bir sunucu) kopyalamak çok önemlidir. Yedeklerinizi düzenli olarak test ederek, geri yükleme işleminin sorunsuz çalıştığından emin olun.

pg_restore ile Geri Yükleme

pg_restore yardımcı programı, pg_dump ile oluşturulan özel format yedeklerini geri yüklemek için kullanılır. SQL betiği yedeklerini (.sql uzantılı) geri yüklemek için psql kullanılır.

  • Özel format yedeğini geri yükleme:

    Önce boş bir veritabanı oluşturmanız gerekebilir:

    
    sudo -i -u postgres psql -c "CREATE DATABASE new_database;"
    sudo -i -u postgres pg_restore -d new_database /var/backups/postgresql/my_database_20231027.bak
                

    Bu komut, my_database_20231027.bak yedeğini new_database adlı yeni bir veritabanına geri yükler.

  • SQL betiği yedeğini geri yükleme:
    
    sudo -i -u postgres psql -f /var/backups/postgresql/all_databases_20231027.sql postgres
                

    Bu, pg_dumpall ile alınan SQL betiğini postgres veritabanına (bu genellikle global ayarları geri yüklemek için kullanılır) geri yükler. psql komutuna -d parametresi ile belirli bir veritabanına da geri yükleme yapabilirsiniz.

Uzman İpucu: Otomatik yedekleme komutlarını cron işleri olarak planlayın. Ayrıca, yedekleme dosyalarının şifrelenmesini ve fiziksel olarak ayrı bir konumda tutulmasını sağlayın. Yedekleme stratejinizin bir parçası olarak, Point-in-Time Recovery (PITR) için WAL arşivlemeyi de düşünebilirsiniz.

Uzaktan PostgreSQL Bağlantısı Nasıl Yapılandırılır?

Uygulamalarınızın veya diğer sunucuların PostgreSQL veritabanınıza uzaktan bağlanabilmesi için bazı yapılandırma değişiklikleri yapmanız gerekir. Bu, iki ana adımdan oluşur: PostgreSQL'in ağ arayüzlerini dinlemesini sağlamak ve pg_hba.conf dosyasında uygun erişim kurallarını tanımlamak.

  1. postgresql.conf Dosyasını Düzenleme:

    PostgreSQL'in sadece localhost yerine belirli IP adreslerinden veya tüm ağ arayüzlerinden bağlantıları kabul etmesi için postgresql.conf dosyasını düzenlemeniz gerekir. Bu dosya genellikle /etc/postgresql/10/main/postgresql.conf yolunda bulunur (sürüm numarası farklılık gösterebilir).

    
    sudo nano /etc/postgresql/10/main/postgresql.conf
                

    Dosya içinde listen_addresses satırını bulun ve aşağıdaki gibi değiştirin:

    
    # What IP address(es) to listen on; '*' means all
    listen_addresses = '*'
                

    * değeri, PostgreSQL'in sunucunuzdaki tüm ağ arayüzlerinden gelen bağlantıları dinleyeceği anlamına gelir. Belirli bir IP adresinden bağlantıları dinlemek isterseniz, '192.168.1.10' gibi bir IP adresi de belirtebilirsiniz. Değişikliği kaydettikten sonra dosyayı kapatın.

  2. pg_hba.conf Dosyasını Düzenleme:

    Ardından, uzaktan bağlantılara izin vermek için pg_hba.conf dosyasını düzenlemeniz gerekir. Bu dosya genellikle /etc/postgresql/10/main/pg_hba.conf yolunda bulunur.

    
    sudo nano /etc/postgresql/10/main/pg_hba.conf
                

    Dosyanın sonuna, uzaktan erişim izni vermek istediğiniz her bağlantı için bir satır ekleyin. Örneğin, myuser kullanıcısının my_database veritabanına 192.168.1.0/24 ağından md5 şifre doğrulaması ile bağlanmasına izin vermek için:

    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    host    my_database     myuser          192.168.1.0/24          md5
                

    Burada 192.168.1.0/24, 192.168.1.x formatındaki tüm IP adreslerinden gelen bağlantılara izin verir. Sadece tek bir IP adresine izin vermek isterseniz, 192.168.1.100/32 gibi bir değer kullanabilirsiniz. Değişiklikleri kaydettikten sonra dosyayı kapatın.

  3. PostgreSQL Servisini Yeniden Başlatma:

    Bu yapılandırma değişikliklerinin etkili olması için PostgreSQL servisini yeniden başlatmanız gerekir:

    
    sudo systemctl restart postgresql
                
  4. Güvenlik Duvarını Yapılandırma (UFW):

    Son olarak, sunucunuzun güvenlik duvarının (UFW) PostgreSQL'in varsayılan portu olan 5432'ye gelen bağlantılara izin verdiğinden emin olun. Sadece belirli IP adreslerinden gelen bağlantılara izin vermek en güvenli yaklaşımdır:

    
    sudo ufw allow from 192.168.1.0/24 to any port 5432
    sudo ufw enable
                

    Bu adımları tamamladıktan sonra, myuser kullanıcısı, 192.168.1.0/24 ağı içindeki herhangi bir makineden my_database veritabanına uzaktan bağlanabilecektir. Bağlantı denemeleri yaparken, uygulamanızın veya istemcinizin doğru IP adresini, portu, kullanıcı adını ve şifreyi kullandığından emin olun. Uzaktan bağlantıları her zaman en az yetki ilkesiyle ve güçlü kimlik doğrulama yöntemleriyle yapılandırmak, güvenlik risklerini minimize etmek için kritik öneme sahiptir.

Sonuç ve Sıkça Sorulan Sorular

Bu kapsamlı rehber boyunca, Ubuntu 18.04 üzerinde PostgreSQL kurulumundan başlayarak, temel veritabanı yönetimi, SQL komutları, performans optimizasyonu, güvenlik ipuçları ve yedekleme/geri yükleme stratejilerine kadar birçok konuyu detaylı bir şekilde inceledik. Artık PostgreSQL'in gücünü ve esnekliğini kullanarak kendi uygulamalarınız için sağlam ve güvenilir bir veri altyapısı oluşturma becerisine sahipsiniz. PostgreSQL'in açık kaynak yapısı, genişletilebilirliği ve topluluk desteği, onu modern uygulama geliştirme için mükemmel bir seçim haline getirir. Unutmayın, veritabanı yönetimi sürekli öğrenme ve pratik gerektiren bir alandır. Bu rehberde edindiğiniz bilgilerle, PostgreSQL dünyasında daha ileri adımlar atabilir, daha karmaşık projelerde yeteneklerinizi geliştirebilirsiniz.

Herhangi bir teknik sistemde olduğu gibi, PostgreSQL ile çalışırken de zaman zaman sorularınız olabilir veya bazı konular hakkında ek bilgiye ihtiyaç duyabilirsiniz. İşte PostgreSQL kullanıcıları tarafından sıkça sorulan bazı sorular ve cevapları:

Sıkça Sorulan Sorular (SSS)

  1. PostgreSQL'i Ubuntu 18.04'e kurdum ama bağlanamıyorum, ne yapmalıyım?

    Bağlantı sorunları genellikle birkaç nedenden kaynaklanır. İlk olarak, PostgreSQL servisinin çalışıp çalışmadığını kontrol edin:

    sudo systemctl status postgresql

    Eğer çalışmıyorsa başlatın. İkinci olarak, psql ile bağlanmaya çalışırken doğru kullanıcı adı, veritabanı adı, ana bilgisayar (localhost veya IP) ve portu kullandığınızdan emin olun. Uzaktan bağlantı deniyorsanız, postgresql.conf dosyasındaki listen_addresses ayarını ve pg_hba.conf dosyasındaki erişim kurallarını kontrol edin. Son olarak, sunucunuzun güvenlik duvarının (UFW gibi) 5432 portuna gelen bağlantılara izin verdiğinden emin olun.

  2. pg_hba.conf dosyasını düzenledikten sonra ne yapmalıyım?

    pg_hba.conf dosyasında yaptığınız her değişiklikten sonra, PostgreSQL servisini yeniden başlatmanız gerekir ki değişiklikler etkili olsun:

    sudo systemctl restart postgresql

    Bu adım olmadan, yaptığınız kurallar uygulanmayacaktır.

  3. PostgreSQL için en iyi yedekleme stratejisi nedir?

    En iyi yedekleme stratejisi, veri büyüklüğünüze, kurtarma süresi hedeflerinize (RTO) ve veri kaybı toleransınıza (RPO) bağlıdır. Genellikle, pg_dump veya pg_dumpall ile düzenli (günlük/haftalık) mantıksal yedeklemeler almak iyi bir başlangıçtır. Kritik uygulamalar için, Point-in-Time Recovery (PITR) sağlayan sürekli arşivleme (WAL archiving) kullanmak en güvenli yaklaşımdır. Ayrıca, yedeklerinizi şifrelemeyi, ayrı bir konumda saklamayı ve düzenli olarak geri yükleme testleri yapmayı unutmayın.

  4. PostgreSQL'de performans sorunları yaşıyorum, nereden başlamalıyım?

    Performans sorunlarını gidermek için öncelikle yavaş çalışan sorguları tespit etmelisiniz. Bunun için pg_stat_statements gibi uzantıları kullanabilir veya uygulama loglarını inceleyebilirsiniz. Ardından, bu sorguların çalışma planlarını EXPLAIN ANALYZE ile analiz edin. Çoğu zaman sorun, eksik veya yanlış indeksleme, kötü yazılmış sorgular veya yetersiz sunucu yapılandırmasından kaynaklanır (shared_buffers, work_mem gibi parametreler). İndeksleri optimize edin, sorguları yeniden yazın ve postgresql.conf ayarlarını sunucunuzun donanımına ve iş yüküne göre ayarlayın.

  5. Hangi PostgreSQL sürümünü kullanmalıyım?

    Genellikle, en son kararlı sürümü kullanmanız önerilir. Yeni sürümler, performans iyileştirmeleri, yeni özellikler ve güvenlik yamaları içerir. Ubuntu 18.04'ün varsayılan depoları genellikle biraz daha eski bir kararlı sürümü (örneğin PostgreSQL 10) sunar. Eğer daha güncel bir sürüme ihtiyacınız varsa, PostgreSQL'in kendi APT deposunu sisteminize ekleyerek istediğiniz sürümü kurabilirsiniz. Ancak, üretim ortamlarında sürüm yükseltmeleri yapmadan önce kapsamlı testler yapmanız önemlidir.

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

Gönder

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.
Exit mobile version