Cloudscape ?ncelemesi

advertisement
Tarih: 21/06/2004
Dokümanı Hazırlayan: Onur ÇOBANOĞLU
CLOUDSCAPE VERİTABANI YÖNETİM SİSTEMİ
ÜZERİNE TEKNİK İNCELEME
Özet: Bu doküman tamamı saf Java uygulaması olan Cloudscape adlı veritabanı
yönetim sisteminin performansı, güvenliği ve olanakları üzerine teknik bir rapordur.
Dokümanın hazırlandığı tarihte İnternet üzerindeki ana bilgi kaynağı olan
www.cloudscape .com bağlantısı çalışmadığı için, rapor IBM Cloudscape 5.1
dokümanları temel alınarak hazırlanmıştır.
1. CLOUDSCAPE: TEMEL MİMARİ
Cloudscape, tamamı Java sınıf kitaplıklarından oluşan bir veritabanı yönetim
sistemidir. IBM Cloudscape 5.1, nesne ilişkisel veritabanı yönetim sistemi özelliğine
sahipken, J2EE 1.3 ve daha üst sürümleriyle gelen Cloudscape 4.0 Sun
Microsystems’ın bilgi kaynaklarında ilişkisel veritabanı yönetim sistemi olarak
tanımlanmaktadır. Özette belirtildiği gibi, bu doküman IBM bilgi kaynakları temel
alınarak hazırlanmıştır. Cloudscape’in tamamı toplamı 2 MB tutan .jar dosyalarından
oluşmaktadır, ayrıca teknik dokümanda yalnızca 4 MB Java yığını kullanıldığı
yazmaktadır. Cloudscape tamamıyla standart JDBC çağrılarıyla kullanılmaktadır,
uygulamayla veritabanının aynı bilgisayarda olduğu durumlarda (klasik yerel sunucu
uygulamaları veya JSP/Servlet uygulamaları gibi) klasik JDBC sürücülerinin
yaptığının aksine, zaten Classpath’e dahil olan Java sınıflarına çağrı yollayan gömülü
Cloudscape JDBC sürücüsü kullanılmaktadır. Uygulama ile veritabanının aynı
bilgisayarda olmadığı ve ağ üzerinden haberleşmesi gerektiği durumlarda ise IBM
ürünü bir Sınıf IV JDBC sürücüsü olan “DB2 JDBC Universal Driver” kullanılarak
Cloudscape Ağ Sunucusu’na bağlanılabilir. Cloudscape JDBC 2.0, JDBC 3.0 ve JVM
1.2 ile çalışabilir.
2. OLANAKLAR






Cloudscape veritabanı yönetimini otomatik yaptığından herhangi bir
veritabanı yöneticisinin müdahalesine gerek duymaz.
Cloudscape, Java kullanılarak depolanmış yordam yazmaya izin verir, bu
sebeple herhangi bir depolanmış yordam dili kullanılmasını gerektirmez.
JNDI veri kaynakları kullanma ve bağlantı havuzu oluşturma gibi özellikleri
desteklemektedir.
Cloudscape birden fazla eşzamanlı bağlantıyı kabul eder.
Cloudscape çoklu görev usulünde çalışan birden fazla iş parçacığı ile
çalışabilir.
Cloudscape birden fazla süreçten gelen bağlantıları kabul edebilir.











Ağ Sunucusu kullanılarak birden fazla kullanıcının bağlantılarını kabul
edebilir. Fakat Ağ Sunucusu bazı Cloudscape işlevselliklerini
sağlayamayabilir.
Veritabanının sadece diskte olması gerekmez. Cloudscape herhangi bir
ortamdaki veritabanı ile çalışabilir.
Cloudscape’in çalışabilmesi için tek gereken Cloudscape .class dosyaları ile
JVM 1.2 veya daha yukarısıdır.
SQL92E standardını tamamen uygulamakta olup, bunun yanında bazı
SQL92T, SQL92F ve SQL99 standartlarını da sağlamaktadır.
Nesne ilişkisel veritabanı yönetim sistemi özelliğine uygun olarak, herhangi
bir Java sınıfının tablo alanı olarak kullanılabilmesini sağlar.
CHECK, CAST, TRIGGER ve VIEW mekanizmalarını desteklemektedir.
Sınırlanmamış uzunlukta satırları ve bir alan değerinden kullanıcıya akım
açılabilmesini destekler.
Çevrimiçi veritabanı yedeklemesini destekler.
Şema yönetimi için Cview adında bir grafik kullanıcı ara yüzü, aynı zamanda
ij adlı bir metin uçbirimi içerir.
Disk alanının verimli kullanımı için tablo sıkıştırmasını destekler.
Autoincrement özelliği sağlamaktadır.
3. PERFORMANS DEĞERLENDİRMESİ






Cloudscape’in performans açısından en büyük avantajı, tek kullanıcının
olduğu durumlarda uygulama ile aynı süreçte çalışabiliyor olmasıdır. Bu
şekilde, normalde uygulama ve veritabanı arasında oluşacak işletim sistemi
gecikmeleri bertaraf edilebilir.
Ağ üzerinden Sınıf IV sürücü kullandığı için, ağ üzerinden olabilecek JDBC
bağlantılarının en hızlısını sağlamaktadır. Ayrıca Ağ Sunucusu ile de aynı
süreçte çalıştığı için, sunucu tarafında da ilk maddede bahsettiğimiz
avantajdan faydalanmaktadır.
Hareket yalıtım (transaction isolation) seviyesi ayarlanabildiği için belli
durumlarda performans artışı sağlanabilir.
Teknik dokümandan anlaşıldığı kadarıyla en alt düzeyde satırların, bir üst
seviyede de tabloların veritabanı nesnesi olarak algılandıkları bir Çoklu
Ayrıştırma Kilitlemesi (Multiple Granularity Locking) kullanılmaktadır. Bu
kilitleme mekanizmasının genelde çok iyi performans verdiği bilinmektedir.
Nesne ilişkisel veritabanı yönetim sistemlerinin sorgu eniyileyicilerinin,
ilişkisel veritabanı yönetim sistemlerininkine göre daha yavaş çalıştığı
bilinmektedir. Bunun genellikle büyük bir dezavantaj olmasına rağmen,
sadece ilişkisel veritabanı yönetim sistemi özelliklerinin kullanılması
durumunda performans açısından büyük bir fark oluşmayabilir (Benzer bir
durum dillerde de vardır. Mesela C++’ın nesne kaynaklı bir dil olması
sebebiyle C++ programları genellikle C programlarına göre daha yavaş
çalışırken, bir C kodu C++ derleyicisinde derlendiğinde performans açısından
pek bir fark görülmez).
Cloudscape’in çok küçük bir alan kullandığı düşünülürse, sorgu
eniyileyicisinin ne kadar verimli çalışacağı şüphelidir.





Sorgu işleme sırasında gereksiz sıralamalardan kaçınıldığı teknik dokümanda
belirtilmiştir. Bu da performansı artırıcı bir etken olabilir.
Gereksiz istatistiksel yığılma yaratmayacak örnekleme teknikleri kullanıldığı
belirtilmiştir. Bu da sorgu eniyileme süresinin düşeceği anlamına gelir.
Teknik dokümanda kullanıldığı belirtilen birleştirme yöntemlerinin (‘nested
loop’ ve ‘hash’) kullanılan arabellek boyutuna oldukça duyarlı olduğu
bilinmektedir. Bu da, küçük veritabanları için çok iyi performans alınırken
veritabanı boyutu büyüdükçe performansın ciddi miktarda düşebileceği
anlamına gelir. Cloudscape’in sadece 4 MB Java yığını kullandığı
düşünülecek olursa bu durum özellikle dikkatlice incelenmelidir (Eğer
arabellek alanı bu 4 MB’ye dahil değilse bu madde çok büyük sorun
yaratmayabilir).
Veritabanı şifrelemesi çalışma zamanına %10 civarında bir ek yapmaktadır.
Kimlik denetimi listeleri veritabanında tutulmayıp dış servislere yaptırılması
bir performans artışı sağlayabilir.
4. GÜVENLİK


Bütün veritabanı fiziksel düzlemde (diskte) şifrelenmiş bir halde
bulunmaktadır. Bu şekilde, ne veritabanının içeriği ne de şeması hakkında bir
şey öğrenmek mümkün değildir. Veritabanının bulunduğu diskin taşınması
veya çalınması durumunda verinin fiziksel güvenliği bu şekilde sağlanır.
Şifreli bir veritabanının çalışabilmesi için veritabanı ilk başlatıldığında bir
önyükleme şifresi gereklidir. Veritabanı şifrelemesi JCE 1.2.1’e (Java
Cryptographic Extension) dayalıdır. Kullanıcı istediği şifreleme algoritmasını
seçebilir veya varsayılan algoritma DES’i kullanabilir.
Cloudscape kendi veritabanında yetkili kullanıcıların listesini tutmak yerine,
dışsal kullanıcı kimlik denetimi yöntemlerini benimseyebilir. Bunu sağlaması
için LDAP ve NIS+ desteği verilmiştir, ayrıca kullanıcı kendi tanımlayacağı
JNDI sınıfları ile de bunu sağlayabilir.
EK 1: KAYNAKÇA
1. Database Management Systems, Raghu Ramakrishnan/Johannes Gehrke, Third
Edition, McGrawHill 2003
2. IBM Cloudscape 5.1: A Technical Overview, Mart 2003,
ftp://ftp.software.ibm.com/software/data/cloudscape/pubs/whitepapers/cloudscapetechover.pdf
Download