PostgreSQL Veritabanı Yönetim Sistemleri

Mustafa Yıldırım
3 min readJul 15, 2024

--

Veri ve Veritabanı Kavramı

Veri:

Veritabanı: bilgiyi depolayan yazılımdır. Birbiri ile ilişkili verileri tablolar halinde depolayan veri topluluğudur. Veritabanından beklenen, gerekli olduğu anda bilgiye hızlı bir şekilde ulaşılabilmesidir. Birbirleri ile ilişkili olarak düzenlenmiş veri topluluğudur.

  • Birçok kullanıcı tarafından kullanıma olanak sağlar.
  • Veri bütünlüğü sağlamasına yardımcı olur, verileri düzen içinde saklar.
  • Veri tekrarlarının önüne geçerek zaman kazandırır.
  • Verilerin merkezi kontrolünü sağlar.

Veritabanı Yönetim Sistemlerinin Avantajları

  • Veri tekilliği
  • Veri güvenliği
  • Veri bütünlüğü
  • Eş zamanlılık
  • Veri bağımsızlığı

Veri Modeline Göre Veritabanı Çeşitleri

Veritabanları yapısal olarak 3 farklı grupta toplanabilir:

Düz Dosya Veritabanı: Veritabanı tek bir tablodan oluşmaktadır. Gereksiz veri tekrarı çok fazla olacaktır. Ciddi performans kaybı oluşturur.

Hiyerarşik Veritabanı: Organizasyon şeması ya da ağaç yapısına benzetilebilir. Bu modelde paralel ve seri modeller vardır. Üstten alta doğru genişleyen bir yapı vardır. Veri büyüdükçe performans kaybı artacaktır.

İlişkisel Veritabanı: Günümüzde en çok kullanılandır. Birden fazla tablo birbiri ile ilişkisel haldedir. Başlıca özellikleri:

  • Hızlı erişim
  • Her veri sadece bir defa saklanır
  • Verilerin doğru ve etkin bir şekilde saklanması veri bütünlüğünü sağlar
  • Anahtarların kullanımı (Primary key, Foreign Key) sayesinde farklı tablolardan veriler tek seferde çekilebilir.
  • İlişkili tablolar sayesinde veri bütünlüğü sağlanmış olur.
  • Kullanıcı rol ve yetkilerinin farklılaşmasına uygun yapı.
  • Standart yapısı sayesinde başka ilişkisel veritabanına aktarımı kolaydır.

Veritabanı Sistemlerinin Mimarisi

Genellikle 3N layer kullanılmaktadır. Bu katmanlar sırasıyla:

Veri Katmanı (Data Layer): En alt katmandır. Bu katmanda veri eklenmesi ve çekilmesi işlemleri yapılır.

İş Katmanı (Business Process Layer): Uygulamanın mantıksal temellerini, kurallarını ve iş ile ilgili hesaplamaların yer aldığı katmandır. Oluşturulan ve çekilen veriler hemen bütünleşmez. Çünkü veriler çekilmiştir ama üzerinde yapılacak işlemler henüz belli değildir. Bunun için uygulama uyarlama işlemi yapılmalıdır.

Sunum Katmanı (Presentation Layer): Uygulamanın kullanıcı ile etkileşimde olan kısmıdır. Kullanıcı veri girişi veya kullanıcıya veri verme işlemlerinin olduğu katmandır. Karar verme mekanizması yoktur.

Özetle, Data layer ile veriler veritabanından çekilir. İş katmanı ile bu verilerin uygunluğu sağlanır. Sunum katmanı ile bir arayüz sağlanıp kullanıcıya verilir. Tam tersi de olabilir.

ACID & RDBMS

ACID: İlişkisel veritabanlarında iş süreçlerini (transaction) ve veri bütünlüğünü sağlamak adına gereken kurallara kısaca ACID denmektedir.

  • Atomicity (Atomiklik): Yapılan işlemin herhangi bir sebepten ötürü tamamlanamaması halinde tüm işlemlerin geçersiz sayılmasıdır. Bir transaction içinde tüm işlemler başarılı olmak zorundadır.
  • Consistency (Tutarlılık): Veritabanında yapılan işlemlerde aynı girişte her zaman aynı çıktı sağlanmalıdır. İşlemler tutarlı olmalıdır.
  • Isolation (İzolasyon): Her transaction birbirinden bağımsız olmalıdır. İşlem sırasında dışarıdan bağımsız olmalıdır. Bir veri ekleme ve silme işlemi yapılırken, silme işlemi eklemeden önce yapılmamalıdır.
  • Durability (Süreklilik): Bir transaction içinde herhangi bir hata oluşursa geri dönme yeteneğine sahip olmalıdır ve veriler ilk duruma getirilebilmelidir. İşlemler loglanmalıdır.

RDBMS (Relational Database Management System)

Faydaları:

  • Verilerin doğru ve etkin biçimde saklanmasını sağlar
  • İlişkisel bütünlük kuralları (database integrity) sağlanır
  • Değişiklik logları sayesinde, sorun oluştuğunda verilerin kurtarılması sağlanır.

Dört tip ilişki vardır:

  • Bire bir
  • Bire çok
  • Bir çoğa bir
  • Bir çoğa birçok

Veritabanı Kullanıcı Türleri

Veritabanı yöneticisinin görevleri:

  • Yapılacak uygulamaya dair gereksinimleri belirleyerek veritabanı içeriğini oluşturmak
  • Veritabanı kullanıcılarını tanımlamak
  • Primary Key, Foreign Key, Not Null constraint’lerini (kısıtları) tanımlamak
  • Sistemin sürekli ve sorunsuz çalışmasını devam ettirmek
  • Sistem çıktılarını analiz ederek, sistem başarılarını ve başarısızlıklarını takip etmek
  • Veritabanı fiziksel yapısını ihtiyaçlar doğrultusunda düzenlemek, yedeklemek, felaket senaryoları oluşturup kurtarma çalışmaları yapmak
  1. Veritabanı yöneticisi
  2. Uygulama programcısı
  3. Sorgu dili kullanıcıları
  4. Uygulama programı kullanıcıları
  5. Son kullanıcılar

DDL, DML, DCL ve TCL

DDL (Data Definition Language — Veri Tanımlama Dili)

DDL komutları, veritabanı şemalarının ve veri yapılarının tanımlanması ve değiştirilmesi için kullanılır. Bu komutlar veritabanı nesnelerinin yapısını değiştirebilir.

Örnek komutlar:

  • CREATE: Yeni bir veritabanı nesnesi (tablo, indeks, vb.) oluşturur.
  • ALTER: Var olan bir veritabanı nesnesini değiştirir.
  • DROP: Var olan bir veritabanı nesnesini siler. (DELETE ile farkı, DELETE verileri siler, DROP tabloyu tamamen siler.)
  • TRUNCATE: Bir tablonun tüm verilerini siler, ancak tablo yapısını korur.
  • COMMENT: Veri sözlüğüne açıklama eklemek için kullanılır.
  • RENAME: Bir nesneyi yeniden adlandırmak için kullanılır.

DML (Data Manipulation Language — Veri İşleme Dili):

DML komutları, veritabanındaki verileri işlemek için kullanılır. Bu komutlar, veritabanına veri eklemek, veriyi güncellemek, silmek ve sorgulamak için kullanılır.

Örnek komutlar:

  • SELECT: Veritabanından veri sorgular.
  • INSERT: Veritabanına yeni veri ekler.
  • UPDATE: Var olan veriyi günceller.
  • DELETE: Veritabanından veri siler.

DCL (Data Control Language — Veri Kontrol Dili):

DCL komutları, veritabanına erişim haklarını ve izinlerini kontrol etmek için kullanılır. Bu komutlar, kullanıcıların belirli verilere veya işlemlere erişim yetkilerini yönetir.

Örnek komutlar:

  • GRANT: Kullanıcılara belirli yetkiler verir.
  • REVOKE: Kullanıcılardan belirli yetkileri geri alır.
  • ALTER DEFAULT PRIVILEGES: Gelecekte yaratılacak nesnelere uygulanacak ayrıcalıkları ayarlamak için kullanılır.

TCL (Transaction Control Language — İşlem Kontrol Dili):

TCL komutları, veritabanı işlemlerini kontrol etmek için kullanılır. Bu komutlar, işlemlerin başlatılması, tamamlanması veya geri alınması için kullanılır.

Örnek komutlar:

  • COMMIT: İşlemi sonlandırır ve yapılan değişiklikleri kalıcı hale getirir.
  • ROLLBACK: İşlemi geri alır ve yapılan değişiklikleri iptal eder.
  • SAVEPOINT: İşlem içinde bir geri alma noktası belirler.
  • SET TRANSACTION: Yeni bir işlem başlatır ve işlem özelliklerini ayarlar.

--

--

Mustafa Yıldırım

Karadeniz Teknik Üniversitesi Yazılım Mühendisliği 4/4