Sunday, July 13, 2008

DB2 ve PureXML'e Genel Bakış

IBM yazılımlarında en büyük avantajlardan biri çok iyi ingilizce kaynaklar barındırması. Özellikle developerWorks üzerinde aradığınızı bulamamanız neredeyse imkansız. Ama ne yazık ki türkçe kaynaklar yetersiz. Bu yüzden ben de size DB2 ve PureXML'i kısaca tanıtmak isterim.


DB2, IBM tarafından kullanıcılara sunulan ilişkisel bir veritabanı yönetim sistemidir(RDBMS).


Neden DB2? Nerede ve nasıl kullanılabilir?

DB2 9 ve sonrasında gelen versiyonlar, PureXML teknolojisi ile dikkatleri üzerine çekmektedir.

İş yerleri, geliştiriciler, öğrenciler, programcılar tarafından tercih edilmektedir.

DB2'nun başlıca özellikleri şöyledir:


  1. Kurulumu ve kullanımı kolaydır.

  2. Platform bağımsızdır.

  3. Bağıntısal veriler ve XML bir arada bulunabilir.

  4. DB2 Express-C ücretsizdir.

  5. Java, .NET, PHP gibi geliştirme platformları ile uyumludur.

  6. Veritabanı konusunda çok bilgili olmasanız dahi DB2 kendi kendini yönetebilmekte, bilgilendirici sihirbazları sayesinde kullanıcıları yönlendirmektedir. Sistem yedeklemeleri de sihirbaz yardımıyla birkaç dakika içerisinde yapılabilmektedir.

  7. PureXML ile, Web 2.0 ve SOA tabanlı çalışmalar daha verimli hale gelmiştir.

DB2'nun sahip olduğu özellikleri alt başlıklarda inceleyebiliriz.


DB2 ve XML

DB2, kullandığı veri tipleri arasında XML'i de bulundurmaktadır. Böylece XML dokümanlarının zorunlu olarak ilişkisel veritabanları üzerine aktarılması ortadan kalkmıştır. İster XML dokümanı olduğu gibi DB2 üzerinde saklanabilmekte, istenirse de tablolar biçiminde XML verileri saklanabilmektedir.


DB2 V9.5 ile gelen en büyük yenilik XML dokümanlarının UPDATE edilmesinde sağladığı kolaylıktır.


DB2 9 üzerinde UPDATE işlemi:


Şekilde görüldüğü gibi, kullanıcı tarafından öncelikle UPDATE isteği gönderilir. DB2 üzerinde ilgili XML dokümanı serileştirildikten sonra tekrar kullanıcı tarafına gönderilir. UPDATE işlemi kullanıcı tarafında gerçekleşir. Değişikliğe uğrayan XML dokümanı yeniden serileştirilerek oluşturulur. Değişiklik yapılmış olan XML dokümanı, DB2'ya gönderilir ve DB2 bu yeni dokümanı eski doküman yerine yerleştirir.


Görüldüğü gibi bir XML dokümanı bozulup, kullanıcıya aktarılıp, değiştirilip ve yeniden inşa edildikten sonra DB2 üzerine kaydedilebilmektedir. Kullanıcıya gidip gelmeler de UPDATE işleminin yavaş gerçekleşmesine sebep olur.


DB2 9.5 üzerinde UPDATE işlemi:


Oysaki DB2 9.5 üzerinde, DB2 üzerinde saklanan bir XML dokümanı bozulmadan ilgili düğüme, elemana vb müdahele edilebilmektedir. Ve müdahale kullanıcı tarafında değil de, DB2 üzerinde serileştirme işlemi yapılmadan gerçekleştiği için, UPDATE isteği zaman kaybetmeden yerine getirilir.


DB2 üzerinde XML formatı tüm veriler ile bir arada durabilmektedir. Böylece XQUERY, SQL/XML sorguları kullanılarak tek sorgu ile tüm verilere ulaşılabilmektedir. DB2 ile birlikte, XML dokümanından ilişkisel veritabanı elemanlarına dönüşüm veya ilişkisel veritabanı elemanlarından XML dokümanına dönüşüm (örn. XMLELEMENT ile) kolaydır. XML ile ilgili işlemlerin bu kadar kolay yapılabiliyor olması, DB2'nun tercih edilme sebeplerinden biridir. Gerek SOA'da, gerek Web Uygulamalarında gerekse Web Servisleri'nde yaygın olarak kullanılan XML, DB2 ile veritabanlarına da esneklik kazandırabileceğini göstermiştir.




XML verileri iki farklı şekilde saklanabilmekte ve farklı dezavantajlara sahiptirler.

  1. CLOB/Varchar olarak saklanabilir. XML verileri büyük bir string olarak saklanır. Herhangi bir elemana ulaşmak için tüm string ele alınıp parçalanarak, istenilen veriye ulaşılmaya çalışılır. Uzun bir yoldur.

  2. XML dokümanının içerdiği elemanlar ilişkisel veritabanı tablolarına dönüştürülür. Eğer az veri varsa bu bir çözüm olabilir. Fakat yüzlerce sütundan oluşan bir XML dokümanını tablolara taşımaya kalkışmak binlerce tablo anlamına gelebilir. En büyük dezavantajı ise XML dokümanını tekrar oluşturmak istediğimizde, yazacağımız sorgunun binlerce JOIN'lerden oluşması gerektiğidir. Bir kere XML dokümanı parçalandı mı, JOIN'lerle elde edilecek XML dokümanının orjinalinden farklı olacağı da unutulmamalıdır. Eğer XML dokümanı elektronik imza taşıyorsa, doküman tekrar oluşturulduğunda yapının bozulması istenmeyecek bir durumdur.


DB2 9.5 ve PureXML:


DB2 9.1 ile gelen PureXML teknolojisi bir ilk olmuştur. IBM tarafından üretilen yeni saklama modülü sayesinde, XML dokümanlarının hiyerarşik yapısı bozulmadan saklanması sağlanmıştır. Bu hiyerarşik yapı bozulmadığı ve dokümanın yapısına müdahale edilmediği için "Pure"dur. Bu da performansı arttırarak kısa sürede işlemleri gerçekleştirmeyi kolaylaştırmıştır.


PureXML'in sağladığı kolaylıklar:

  1. PureXML ile gelen fonksiyonların kullanımı sayesinde yazılan kodlar daha okunabilir ve kısa olabilmektedir.

  2. Her tür veri ile XML verileri bir arada durabilmektedir.

  3. Veriler esnek bir yapıda durabilmektedir. Normalizasyon kurallarına uyarak veriyi doğru modellemek istiyorsak, eklenmesi gereken bir veride yeni tabloların oluşturulması ve mevcut yapının bozulması gerekebilir. Oysaki XML formatında tutulan veriye bilgi eklemek, bir XML tagi eklemek kadar kolaydır.

  4. Performansı arttırır.

  5. XML verileri üzerinde tanımlanabilen INDEX'ler sayesinde veriye hızlı erişim sağlar.


SQL bir veritabanı için neyse, XQUERY de XML için aynı önemi teşkil etmektedir. XQUERY içinde dolaşmamızı sağlayan ise XPATH yapısıdır. DB2 üzerinde dört farklı yolla sorgu yapılabilmektedir.

  1. SQL ile bağıntısal verilere ulaşım

  2. XQUERY ile XML verilerine ulaşım

  3. SQL/XML ile XML verilerine ulaşım

  4. XQUERY ile bağıntısal verilere ulaşım


DB2 9.5 ve Trusted Context:


Üç katmanlı mimari örneği:


Üç katmanlı mimari örneğine bakacak olursak, kullanıcının kimlik denetimi uygulama sunucusu üzerinde gerçeklenir ve bu katmanda onaylanan kullanıcı son katman olan veri katmanına yönlendirilir. Kullanıcının DB2 üzerindeki yetkileri doğrultusunda işlem yapması sağlanır. Bu şekildeki bir yapı güvenli bir yapıdır. Çünkü kullanıcı yetkisi dışında DB2 üzerine müdahale edemez.


DB2'nun Trusted Context yapısı üç yapıyı denetim altına alır.

  1. Kullanıcının DB2 ile bağlantı kurduğu kullanıcı adı

  2. Kullanıcının DB2'ya bağlandığı IP adresi

  3. Kullanıcının DB2 ile veri alışverişi sırasında kullandığı şifreleme metotu (seçimli)

Bir kullanıcı DB2'ya bağlandığı zaman, DB2 bu üç yapıyı kontrol eder. Eğer DB2 üzerinde tanımlı olan Trusted Context objelerinden herhangi biriyle eşleşme sağlanırsa, bu bağlantının bir güvenilir bağlantı(Trusted Connection) olduğuna karar verilir.

Trusted Context'ler yerel veritabanı üzerinde oluşturulmaz ve tek bir kullanıcı için, yalnızca bir tane Trusted Context tanımlanabilir.

CREATE TRUSTED CONTEXT scripti kullanılarak bir kullanıcı için Trusted Context tanımlanabilir. Kullanıcı denetiminin yapılıp, yapılmayacağı da bu scriptin kapsamı içinde belirlenebilmektedir.

DB2 9.5 ve Sıkıştırma:

DB2 9.5 ile gelen “Otomatik Sıkıştırma” seçeneği, kullanıcıyı XML'i sıkıştırmak için yeni komutlar kullanmaya zorlamadan bu işi gerçekleştirmektedir. Bir tablo oluşturulduğu zaman ya da değiştirildiği zaman ekrandaki COMPRESS seçeneğini Yes olarak belirlemek kafidir. Sıkıştırılan veriler bir Compression Table (Sıkıştırma Tablosu) üzerinde durmaktadır. Tabloya yeni veri eklendiği zaman, ilgili veriler bu tablo üzerine otomatik aktarılmaktadır.

DB2 9.5 ve XML Sıkıştırma:

PureXML teknolojisi sayesinde, XML dokümanları tablolardan ayrı durmak zorunda değildir. DB2 üzerinde, XML formatında veriler ve bu format dışındaki veriler bir arada yer alabilmektedir. Hatta bir tablonun aynı satırı üzerinde tüm bilgilere erişmek mümkündür. Aynı satır üzerinde XML dokümanı, 32K'dan küçük büyüklükler için geçerlidir. Tablo oluştururken ya da varolan bir tablo yapısı değiştirilirken INLINE LENGTH komutu ile saklamak istenilen XML büyüklüğü belirlenebilir. Belirlenen büyüklük kapsamında eklenen XML verisi bu büyüklükten küçükse satıriçinde bu bilgi tutulur. Eğer eklenmek istenen XML verisi belirlenen büyüklükten çoksa, DB2 üzerinde bir XML nesnesi olarak saklanır.

Tablo oluşturulduğunda veya varolan tablo değiştirildiğinde “Otomatik Sıkıştırma” seçeneği etkin ise, bu sıkıştırma XML sütunları üzerinde de geçerlidir. XML sıkıştırması sayesinde performans artmaktadır.


No comments: