Veri Tabanı Yönetim Sistemleri – Giriş
Veri tabanı bilişimde çoğu yerde kullanılmaktadır. Verinin işlendiği her yerde veri tabanından bahsedebiliriz. Herhangi bir verinin dosyada profesyonel olarak tutulması veri tabanının temeli denebilir.
Veritabanı, veriyi belirli kategorilere ayırma, kataloglama, bölümleme ve ilişkilendirme amacı taşıyan bir sistemdir. Bu sistemin temel amacı, veriye hızlı ve etkili bir şekilde erişim sağlamaktır. Veritabanları, yapılan değişikliklerin veriyi nasıl etkileyebileceğini doğru bir şekilde analiz etme, veri erişim yetkilerini ve güvenlik haklarını belirleme, ve veriyi en verimli şekilde depolama ve yönetme gibi işlevlere sahiptir. Bu sayede, verilerin güvenli, organize ve kolay erişilebilir bir şekilde saklanması sağlanır.
Son zamanlarda, veri kavramı yerine “Büyük Veri” (Big Data) kavramı daha fazla önem kazanmıştır. Artık veriyi daha az yer kaplayacak şekilde saklamaktan ziyade, veriye daha hızlı erişim sağlama konusu ön plana çıkmaktadır. Bu doğrultuda, NoSQL veritabanları, veriyi denormalize bir biçimde saklama yaklaşımıyla öne çıkmaktadır. Ancak, bu gelişmelerden önce de en önemli problemlerden biri, veriyi verimli bir şekilde ve en az yer kaplayacak şekilde depolamaktı. Büyük veri çağında da bu sorunlar önemini korurken, veri yönetiminde hız, erişilebilirlik ve esneklik daha kritik hale gelmiştir.
Veritabanı Problemleri
- Redundancy / Inconsistency
– Redundancy : Gereksiz veriyi tutmamak, yani tuttuğumuz her verinin gerekli olmasıdır.
– Inconsistency : Tutarlı veri tutmak, yani tüm verilerin aynı özelliğe sahip olmasıdır.
- Accessing: Veriye erişim. Her seferinde dosyalara erişirken yeni bir program yazmak yerine, veritabanı hafızada program olarak çalışır ve ihtiyaç duyulduğunda hızlı bir şekilde veri sağlar.
- Verinin İzole Edilmesi : Verinin çok sayıda dosya ve formatta tutuluyor olması, eğer veride bir sorun olursa doğrudan veritabanında da sorun yaratabilir. Veritabanı yönetim sistemleri aslında birer işletim sistemi gibi çalışırlar; kendi hafıza yönetim mekanizmaları ve disk yönetim sistemleri vardır.
- Integrity : Koşulların bağlanması. Belirlenen kurallara göre verinin düzenlenmesi. Bu sayede problemler daha merkezi bir şekilde çözülebilir.
- Atomicity : Yapılacak işin atomik, yani bölünmeden takip edilmesi.
- Concurrency : Birden fazla iş birlikte çalışıyorsa bu işlerin senkronize olması gerekmektedir.
- Security : Güvenlik ile ilgili problemlerdir. Veriye kimin, nasıl erişebileceği ve bunların hakları nelerdir konularını ele alır.
Abstraction (Soyutlama)
Her katman kendi problemini çözüp üst katmana problemsiz, temiz bir şekilde devreder. Diğer katmanlar da bu şekilde problemi çözmeye devam eder.
1. Katman -> Physical: Verinin diskte nasıl tutulduğu.
2. Katman -> Logical: Veritabanının insanların anlayabileceği şekilde tasarlanması.
3. Katman -> View: Veriye nasıl erişileceği, kimlerin nasıl erişeceği ve veri tipleri.
Instance & Schema:
– Schema: Physical (Fiziksel) ya da Logical (Mantıksal) şema oluşturmaktan bahsedilmektedir.
– Fiziksel katmandaki şemamız, veritabanının diski, RAM’i, kaynakları nasıl kullanacağı konularını içerir.
– Mantıksal katmanda ise veritabanındaki tabloların nasıl ilişkilendirilmesi gerektiği hakkındaki konuları içerir.
– Instance: Veritabanının içindeki tüm verilerle olan anlık görüntüsüdür. Şemaların gerçek verilerle doldurulmuş haline denir.
– Physical Data Independence: Veritabanında en üstte tanımladığımız mantıksal katmanı sabit tutarak, alt taraftaki fiziksel veriyi başka bir veri tabanı sistemine aktarabilme özelliğini anlatır.
Relation Model (İlişkisel Model):
İki boyutlu basit bir veritabanı tablosu, satır (row) ve sütun (column) içerir. Sütunlarda özellikler tutulurken, satırlarda o özelliğe ait veriler tutulur.
Database Languages (Veritabanı Dilleri):
– DML (Data Manipulation Language = Veri İşleme Dili): Veriye erişebilmek ve veri üzerinde değişiklik yapabilmek için kullanılır (Sorgular, SQL).
– DDL (Data Definition Language = Veri Tanımlama Dili): Veritabanı yapısını tanımlamak ve yönetmek için kullanılan SQL komutlarını ifade eder.
– Data Dictionary (Veri Sözlükleri): Aynı kelimelerin aynı şeyleri ifade edebilmesi için, her bir kelimenin ve varlığın veritabanında tanımlandığı sözlüklerdir. Bu sözlüklere dayanılarak tablolar oluşturulur ve bu tablolara DML ile işlemler yapılır.
Bir Sorgu Çalıştırıldığında Veritabanında Neler Olur?
– Query: Sorgu
– Parser and Translator: Sorguyu alır, kelime kelime parçalara ayırır ve kendi anlayacağı dile çevirir.
– Relational Algebra Expression: Veritabanında kullanılan matematiksel bir dil ya da formalizmdir. Veritabanı sorgularını sembolik olarak ifade eder ve SQL gibi sorgu dilleri için bir temel oluşturur.
– Optimizer: Sorgular matematiksel bir dile çevrildikten sonra optimize edilir. Veritabanı ile ilgili istatistikler de tutulur.
– Execution Plan: Sorguların nasıl çalıştırılacağı hakkında planlama yapar.
– Evaluation Engine: Sorguları değerlendiren ve sonuçlarını üreten bir sorgu değerlendirme motorudur. Relational algebra veya başka mantıksal işlemler kullanarak veritabanındaki verileri işler ve sonuçları kullanıcıya döndürür.
– Query Output: Yapılan sorgunun ekranda alınan çıktısıdır.
Veritabanı Kullanıcıları ve Erişim Yöntemleri:
Veritabanının yapısına baktığımızda, birden fazla kullanıcı tipi ve kullanıcı vardır. Program üzerinden erişenler, konsoldan sorgu araçları ile erişenler, veya yönetimsel araçlar ile erişenler olabilir. Kısaca, bir veritabanına anlık olarak birden fazla kullanıcı farklı kaynaklardan ve kanallardan erişebilir. Burada önemli olan, veritabanı kullanıcılarını doğru bir şekilde yönetmektir.
Veritabanı Anatomisi:
Sorguların işlendiği bir kısım vardır. Bu bölüm, gelen sorguları işler ve bir alt katmanda verinin tutulduğu tarafa (diskte nerede tutulduğu vb.) geçer.
Veritabanı Mimarileri:
– Centralized: Merkezi veritabanı mimarileri, kendi bilgisayarımızda kurup kendi bilgisayarımızdan sorguladıklarımızdır.
– Client-Server: Uzaktaki veritabanı sunucusuna bir client üzerinden erişip sorguladıklarımızdır. Two-tier ve three-tier mimarisi olarak da karşımıza çıkabilir.
– Parallel (Multi-Processor): Çok işlemcili bir sunucu üzerinde veritabanı çalıştırılır ve bu sunucuda yüklerin o işlemcilere dağılması sağlanır. Çoğu işletmede bu mimari kullanılır.
– Distributed: Dağıtık veritabanlarıdır. Veritabanları parçalara bölünür ve farklı coğrafyalarda, farklı yerlerde bulunur.