Aylık arşivler: Mart 2011

OLTP ve OLAP veri tabanı sistemleri


Bilgisayarla iş yapılan yerlerde yoğun olarak kullanılan veritabanları; iki amaçla kullanılır.  Kullanım amaçlarından birisi, optimize edilmiş sistemler için OLTP ( Online Transaction Processing)dir. İkincisi ise, üretilen verilerin anlık olarak saklanması ( Online Analiytical Processing)’dir. Veriler üzerinde sürekli olarak değişiklikler, eklemeler ve silinmeler oluyorsa OLTP sistemlerinin kullanılması daha iyi bir tercihtir. Veriler daha çok raporlama ve karar destek amacı ile kullanılacaksa OLAP sistemlerinin kullanılması mantıklı bir seçim olacaktır. OLAP sistemler aracılığı ile veri ambarları ve datamark gibi yapılar kullanılarak yoğun bir şekilde üretilmiş verilerin analizleri ve raporları oluşturulur. Böylece tüketici, satış eğilimleri, üretim maliyetleri, müşteri profili … vs konularda kullanılacak veriler elde edilir. Eğer veriler OLTP ve OLAP sistemlerinin ikisine de uygunluk gösteriyorsa, bu iki sistemi bir arada barından bir veritabanı sistemi kullanılabilir.

Reklamlar

SQL nedir, ne değildir


SQL, açılımı “Structured Query Language” yani Türkçe karşılığı ile “Yapısal Sorgulama Dili” olan veritabanı işlemleri ve komutlarından oluşan bir dildir. SQL, kullanıcıların isteklerini veritabanı sistemine anladığı dilden anlatan bir söz dizimidir, yani bir dildir. Bu dil sayesinde veritabanında var olan kayıtlar görüntülenebilir, değiştirilebilir ve yeni kayıtlar eklenebilir. SQL bir dildir ,ancak bir programlama dili değildir. Yani, program geliştirme işlemlerinde kullanılır ama tek başına yeterli değildir. Program geliştir iken SQL bilmek programcıya esneklik ve üretkenlik sağlar. SQL her ne kadar iyi bilinirse bilinsin, aynı zamanda iyi bir yapısal programlama dilini de bilmek iyi bir program yazmak için gereklidir.

SQL, 1983 yılında IBM laboratuarlarında çalışmalarla tamamlanmış ve 1987 yılında ISO ve ardında da ANSI tarafından standart olarak kabul edilmiştir. Daha sonra bu standartları kullanarak veritabanı yönetim sistemleri geliştirilmiştir. Bu veritabanı yönetim sistemlerinden en çok bilenen ve kullanılanları ise; Oracle, MS SQL Server, Sysbase, Informix, Progcess ve MySQL (MySQL’in üretirici ve geliştiricisi olan Sun, Oracle tarafından geçtiğimiz yıllarda satın alınmıştır. MySQL’in artık geliştirme çalışmaları Oracle çatısı altında devam edilmektedir. Durumun ne olacağını sonraki makalelerimde tahmin etmeye çalışacağım.) ‘dir. Bütün bu veritabanı yönetim sistemlerinde, temel SQL kodları çalışır. Aynı tablolarda aynı sonuçları verir. Veritabanı yönetim sisteminlerinde kullanılan SQL ifadelerinin farklılaşması ise veritabanı yönetim sistemlerinin SQL’e yapısal sorgulama dillerinden bazı özellikleri eklemelerinden kaynaklanmaktadır. Örneğin temel olarak SQL’den if, case, next, do gibi şartlı ifadeler, döngüler ve karşılaştırmalar bulunmaz. SQL’de bulunmayan bu prosedür, fonksiyon, şartlı ifadeler ve karşılaştırmaların yokluğunu gidermek için; Oracle PL/SQL ( Programming Language /SQL), Microsoft firması SQL Server de T-SQL, Sysbase yine T-SQL dilini geliştirmiştir.

SQL dilinin; karar yapıları, döngüler ve benzeri yapısal programlama dillerindeki özelliklerden yoksul olduğunu yukarda belirttik. Veritabanı yönetim sistemi bu eksikleri PL/SQL yada T-SQL gibi dil tanımlamalarını kullanarak giderir. Ancak veritabanında verilerin hacmi artıkça daha gelişmiş bir veritabanı yönetim sistemine ihtiyaç ise kaçınılmazdır.

Kullanıcı herhangi bir veritabanına bağlandığında SQL (PL/SQL yada T-SQL) komutlarını kullanarak veritabanı yönetim sistemine istekte bulunur. Bu isteklerde kullanılan komutlar 5 kategoride toplanabilir;

a) Veri sorgulama komutları

b) Tabloya veri ekleme, değiştirme ve silme komutları

c) Veritabanı nesnelerini oluşturma, değiştirme ve silme komutları

d) Veritabanına ve nesnelerine erişimi kontrol etme komutları

e) Veritabanın tutarlığını ve bütünlülüğünü kontrol etme komutları

SQL, bir programlama dili olmadığına göre; sadece SQL kullanılarak bir kullanıcı arayüzü tanımlanamaz ya da bir dosya yönetimi yapılamaz. SQL, temelde 3 ifade grubundan oluşur.

1. Veri Tanımlama Dili: (Data Defination Language = DLL) Tablo, trigger, view gibi veri tabanı nesnelerini tanımlayan komutlar bu grupta yer alır. Nesne CREATE komutu ile oluşturulur, ALTER komutu ile değiştirilir ve DROP komutu ile silinir.

2. Veri İşleme Dili: (Data Manuplation Language = DML ) Veri seçme, ekleme, silme ve sorgu sonuçlarında sıralama veya filtreleme gibi komutlar bu grupta yer alır.  INSERT ile veri eklenir, DELETE ile veri silinir, UPDATE ile veri güncellenir, SELECT ile veri seçilir, WHERE ile filtrelenir, ORDER ile sıralama yapılır. Ayrıca INTO, FROM, LIKE, GROUP BY, HAVING… gibi yan söz deyimleri de bu grupta yer alır.

3. Veri Kontrol Dili: Veritabanı yönetim sisteminde roller ve kullanıcılar için ifade ve nesne kullanım izinlerini tanımlar. Erişim ve erişim kaldırma ifadeleri ile bu haklar ayarlanır. Ayrıca, erişim engelleme de kullanılan veritabanı yönetim sistemine (Oracle, MS SQL Server) göre bu grupta yer alabilir.

İlişkisel Veritabanı Yönetim Sistemleri


Günümüzde kullanımı en yaygın veritabanı ilişkisel veritabanı ve en yaygın veri tabanı yönetim sistemleri de ilişkisel veritabanı yönetim sistemleridir. İlişkisel veritabanının en önemli yanı, oluşturulan tabloların birbiri ile ilişkilerinin olmasıdır. Bu nedenle veritabanı yönetim sistemlerine “ilişkisel” denilmektedir.

En basit anlamda bir veritabanından bahsetmek için bir veritabanında en az iki tablo olmalıdır. Ve oluşturulan veritabanı ilişkisel bir veritabanı ise, bu iki tablo birbiri ile bir şekilde ilişkilendirilebilir olması gerektedir. Eğer veritabanımız ilişkisel veri ilişkisel veritabanı mantığı üzerine bina edilecekse, temel olarak tablolar aşağıdaki 3 temel işlevi yerine getirmek zorundadır.

  1. Seçme: Herhangi bir tabloda yer alan bilgilerin tümü yada istenen kriterlere göre sıralı bir şekilde gösterilebilmelidir.
  2. İzdüşürme: Herhangi bir tabloda yer alan bilgilerin belli kolonları görüntülenebilmelidir.
  3. Birleştirme: İki yada fazla tabloda yer alan bilgiler tek bir tablo gibi sunulabilmelidir.

Bir veritabanı yönetim sistemi yukarıdaki 3 temel işlevi yerine getirmek zorundadır. Bu 3 kriterlerden her biri tek tek kullanılabildiği gibi, 3 bir arada kullanılabilir veya ikili kombinasyonlar halinde de kullanılabilir. Burada önemli olan veritabanın bir veritabanı yönetim sistemi tarafından SQL ile yönetilebilir olmasıdır. Böylece kullanıcı veritabanın bilgisayar ortamında fiziksel olarak dosyalama işlemleri bilme zorunluluğundan kurtulmuş olacaktır. Tüm bu süreç SQL ile izole edilmiş olur.