Veri Tabanı Yönetim Sistemi’ni (DBMS) anlamak için veri tabanı ve hatta ondan önce Veri hakkında bilgi sahibi olmak gerekir. Veri, kaydedilebilen ve gizli bir anlamı olan herhangi bir gerçek veya rakamdır. Veri tabanı, bu tür verilerin bir koleksiyonudur, daha doğrusu ilgili verilerin bir koleksiyonudur. Örneğin dünya ülkelerinin ve arama kodlarının bir veri tabanı. Burada ülkeler ve arama kodu birbiriyle ilişkilidir ve veri tabanı, kullanıcıya doğru arama kodunu sağlamak için bir amaca hizmet eder. Verilerin birbiriyle ilişkili olmadığı veya bir amaca hizmet etmediği rastgele bir koleksiyona veri tabanı denilemez. Özet olarak, bir veri tabanı belirli bir amaca hizmet etmek için bir araya gelen ve gerçek dünyanın bazı yönlerini taklit eden mantıksal olarak tutarlı veriler topluluğudur.
Bu tür veri tabanlarını yönetmek için kullanılan yazılımlara DBMS (Database Management System) denir. Örneğin Oracle, IBM DB2, Microsoft Access, Microsoft SQL Sunucusu ve Sybase. DBMS yazılımı, kullanıcıları veya diğer uygulamalar arasında veri tabanına erişimini, geri alınmasını, güvenliğini, oluşturulmasını ve paylaşılmasını kolaylaştıran bir programlar topluluğudur. DBMS yazılımının birincil hedefi, verileri depolamak ve almak için verimli ve uygun bir yol sağlamaktır.
DBMS, bankacılık, demiryolları, havayolları, üniversiteler, sağlık kurumları, kobiler ve diğer birçok sektör gibi farklı sektörlerde yaygın olarak kullanılan bir yazılımdır. Veri tabanı sistemi çok büyük miktarda veriyi işlemek için tasarlanmıştır ve birkaç Terabayta kadar uzayabilir. Ayrıca, sistem çökmesi durumunda verileri kurtarmak ve verileri herhangi bir yetkisiz erişim ve manipülasyona karşı korumak için dahili bir mekanizmaya sahip olmalıdır.
Hepimizin gün içinde birkaç kez veri tabanıyla karşılaştığını bilmek ilginçtir, e-posta hesabına giriş yaparken kullanıcı kimliği ve bununla ilişkili şifrelenmiş şifre alınır. ATM işlemi sırasında bankanın veri tabanı sisteminde para borçlandırılır ve hesap aynı ile güncellenir, bu tür kullanımlar bizi son kullanıcı yapar. Nihai kullanıcılar temelde bir ürünü kullanan tüketicilerdir; aylık raporlar oluşturmak, bankadan para çekmek veya gelecek sezonun satışlarını tahmin etmek gibi özel ve karmaşık kullanımlar için kullanabilirler.
Veri tabanının kullanımını yönetmek ve izlemek için veri tabanı yöneticilerine ihtiyaç vardır. Performans sorunları için veri tabanını ayarlamaktan, kullanıcılara DB erişimi vermekten, sistem çökmesi durumunda kurtarmayı başlatmaktan ve güvenlik sorunları durumunda sistemi korumaktan sorumludurlar.
Veri tabanı tasarımcıları, bir veri tabanı oluşturulmadan önce ortaya çıkar. Tüm potansiyel kullanıcılardan gereksinimleri toplayarak her kullanıcı veya grup için gereken erişim düzeyi ve gereksinimi karşılayan DB’yi tasarlar. Doldurulacak verilerin ve veri tabanı için uygun veri kısıtlamalarının belirlenmesinden sorumludurlar. Genellikle veri tabanı yöneticilerinin parçasıdırlar.
Uygulama programcıları, son kullanıcıların ihtiyaçlarını karşılamak için kullanıcı arayüzleri ve uygulamaları oluşturmak için gereklidir. Veri alımını, raporların oluşturulmasını kolaylaştıran uygulamalar geliştirirler. DB’nin tüm işlevlerinin tamamen farkındadırlar ve bunu kendi avantajlarına kullanırlar.
Bilgisayar sistemlerinin geliştirilmesindeki en önemli amaçlardan biri, üzerlerinde kullanılabilecek veri tabanı uygulamasıdır. Veri işleme, bilgisayar işlemci hızının büyümesini sağladı.
Aslında veri işleme, bilgisayarlardan önce gelir; ABD’de 20. yüzyılın başlarında nüfus sayımlarında veri toplamak için delikli kartlar kullanıldı. İlk veri işleme, mekanik cihazlarda delikli kartlarla yapılıyordu. Veri işleme hızı, verilerin depolanması ve DB uygulamalarının geliştirilmesindeki gerçek gelişme çok daha sonra, yani 1950’lerden itibaren başladı.
Verileri depolamak ve ondan okunmak için manyetik bantlar kullanıldı. Bu veri tabanı uygulamaları hiyerarşik bir yapıya sahipti ve ağ sistemlerini kullanıyordu. Tam olarak onlar için geliştirilmiş orijinal sorguyla birlikte kullanıldığında son derece verimliydiler, ancak DB yeni sorguları veya işlemleri işlemek için tasarlanmamıştı. Ayrıca, orijinal verileri elde etmek için manyetik bantların aynı sıralama düzeninde olması gerekir.
Daha sonra 60’larda sabit diskler ortaya çıktı ve veri alımı daha hızlıydı ve sıralı olarak saklanması gerekmiyordu. Bu dönem, DB Sistemlerindeki ilerleme açısından da dikkat çekiciydi. Daha sonra 1970 yılında, baba veya İlişkisel veri tabanı modeli olan Edgar Codd, veri tabanı inşası için yeni bir yapı kavramsallaştırdı ve ‘Büyük Paylaşılan Veri Bankaları için Bir İlişkisel Veri Modeli’ başlıklı, çığır açan bir makale yazdı. Veri tabanını prosedürel sorgulama yollarından kurtardı ve veri soyutlamanın başlangıcını işaret etti. Yani veri tabanının uygulama programcılarına ve son kullanıcılara nasıl uygulandığının ayrıntılarını sakladı. Codd’un konseptine dayanan System R, IBM tarafından geliştirildi ve SQL veya “Yapılandırılmış Sorgu Dili” adı verilen bir sorgulama diline sahip olan ilk kişi oldu. Daha sonra System R, DB2 olarak bilinen ana akım bir ticari DBMS ürünü olarak daha da geliştirildi.
Nesneye yönelik programlama 80’lerde hızla gelişiyordu ve aynı zamanda nesneye yönelik veri tabanları olarak bildiğimiz şeye girmeye de yardımcı oldu. Fikir, verileri nesneler olarak ele almaktı ve bu fikri kullanarak kavramsallaştırmak ve programlamak daha kolay hale geldi. Diğer bir büyük gelişme de işlemcilerin işlem hızları ve veri erişim sürelerini ve DB performanslarını büyük ölçüde artıran indekslemenin kavramsallaştırılmasıydı.
90’lar, dünyanın daha önce hiç görmediği benzeri görülmemiş bir World Wide Web zamanıydı. Buradaki veriler internetteydi. Bağlantıların iletildiği veri tabanları oldukça çeşitliydi ve verileri efektif şekilde değiş tokuş etmek için bir tekniğe ihtiyaç duyuyordu. Ayrıca veri tabanının 7/24 çalışan çok yüksek kullanılabilirliğe sahip olması gerekiyordu. XML veya Genişletilmiş İşaretleme Dili, farklı veri tabanları ve web sayfaları arasında veri alışverişi sağlamak için bir standarttır.
Daha yakın zamanlarda, NoSQL veri tabanında artan bir eğilim olmuştur. Bunlar sözde klasik veri tabanlarından farklıdır ve yapıları için ilişkisel modele dayanmazlar. Yapılandırılmış sorgu dili kullanarak veri sorgulamazlar, ancak henüz geliştirme aşamasında olan yapılandırılmamış sorgu dili (XQuery’ye benzer) kullanarak sorgularlar. Bu veri tabanları genellikle büyük miktarda veriyle çalışırken kullanılır. Bazı örnekler, Facebook tarafından kullanılan Mongo DB, CouchBase, HBase, Google tarafından kullanılan Big Table ve Amazon tarafından kullanılan Dynamo DB’dir.
DBMS bugün, bir kuruluşun tüm BT Yapısı perspektif içinde tutulduğunda en önemli konumlardan birine sahiptir. Bu konumun yıllar içinde nasıl elde edildiğini bilmemiz ve anlamamız için, bu yazılımın bir kuruluşa sağladığı avantajlara bakmamız gerekiyor.
Yedekli Alt Yapı: Farklı lokasyonlarda birden çok kez saklanan bir veri, bir yedekli veridir. Yedeklilik, daha fazla disk alanı kullanımına, yol açar. Verilerin birden fazla konumda güncellenmesi gerektiğinde ideal olarak yalnızca bir güncellemenin yeterli olması gereken yerde, yedeklemenin tekrarlanmasına neden olur. Bir yerdeki veriler güncellenmezse, hangisinin en son veri olduğunu bilmenin hiçbir yolu olmadan tüm verilerin tutarsız olmasına yol açabilir. DBMS bundan kaçınır ve yalnızca bir kayıt oluşturur.
Güvenlik: Kullanıcılara yalnızca özellikle ihtiyaç duydukları veri ve raporlara erişim hakkı verilmelidir. Kullanıcıların kendi kapsamlarında olmayan verileri görüntülemelerini veya güncellemelerini kısıtlar. Tipik olarak, kullanıcılara bir DBA tarafından parola ile korunan bir hesap verilir ve hesap kısıtlamaları DBMS Yazılımı tarafından uygulanır. Bir DBA hesabında olduğu gibi, herhangi bir kısıtlama yoktur, DB oluşturabilir, değiştirebilir, kapatabilir ve başlatabilirler.
Verilerin Verimli Alınması: Verilerin saklanmasının tek amacı, istendiği gibi geri alınmasıdır. Böylece bir DBMS, kullanıcıların sorguları verimli bir şekilde yürütmesine olanak tanır.
Yedekleme ve Kurtarma: Sistem çökmesi durumunda bir DBMS’nin geri yükleme özelliği vardır. Sistem karmaşık bir sorgu arasında çökerse, sistemi tutarlı durumuna geri getirmesi gerekir. Bu özellikle doğru zamanda yedek alarak yapılır.
Çoklu Kullanıcı Arabirimi: Nihai kullanıcıların sayısı, atamalarına uyması için değişen derecelerde rollerle daha fazla olabileceğinden, DBMS her biri için farklı kullanıcı arabirimleri sağlamalıdır.
Program nesneleri için depolama: Sınıflar, kayıt türleri ve program değişkenlerinin değerleri vb. işlemede daha önceki DBMS yeterince donanımlı değildi.
Kısıtlamalar: DBMS, bazı bütünlük kısıtlamalarını uygulamalı ve tanımlamalıdır. Örneğin bir DBA, bir üniversitenin DB’sinde öğrencilerin adının en az 3 karakterden oluşması gerektiğini veya sınavlarda aldıkları notun A, B, C, D veya E olması gerektiğini belirtebilir. Yani bir isim sadece 2 karakterden oluşamadığı gibi öğrenci Y notu da alamaz.
Standartları uygulama potansiyeli: DBA’lar, şirketin BT politikasına bağlı olarak standartları uygulayabilir. Örneğin adlar, raporlar, veri öğeleri vb. için standartlar.
Esneklik: DBMS ölçeklenebilir olmalıdır, böylece yeni kullanıcılar veya veri grupları eklenirse bunu yapmak daha kolay olur. Ayrıca gerektiğinde tablo alanı boyutunu genişletebilmelidir.
Hızlı yanıt süresi: Bir DBMS, kayıtları güncelleyebilmeli veya verileri değiştirebilmelidir. Bu güncellemeler ve değişiklikler kullanıcıya neredeyse anında sunulmalıdır. Bu, kullanıcıların eski ve tutarsız veriler üzerinde çalışmasını engelleyecektir.