Mega Code Archive

 
Categories / Delphi / Strings
 

Interbase zaafları ve vtys sistemleri hakkında söyleşi [3]

Tabloya 255 alan ekleme sınırı - Genellikle yazılan programlarda, ortalama olarak bir tabloda bulunan alan sınırı 100 sayısını geçmez. Fakat yazdığınız programlarda; ayrıntılı formlardaki bilgiler gibi yüzlerce alanı barındıran tablolara sahipseniz, bu durumda karşılaşacağınız bir sorun var. Interbase tablolarında 255 alan sınırı bulunmaktadır. 255 alandan fazla alan eklemek istediğinizde hata ile karşılaşacaksınız. Verileri işlediğinizde bir kısmının kaydedildiğini, düzensiz çalıştığını fark edeceksiniz. Borland bu sorun için delphi içerisinden datasetin kayıt güncelleme modunu "her kaydı güncelle" özelliği içeren seçeneği seçmeniz gerektiğini söylese de, bu BDE tablolarında tutarlı çalışıyor. Her IBX dataset bileşeninde zaten bu mod bulunmamakta. Varsayılan alan değerleri - Tüm veritabanı sistemleri içerisinde alanlar oluşturulurken varsayılan (default) alan değeri verebilirsiniz. Sunucu konsolu üzerinde işlem yapıyorsanız sorun yok fakat istemci program üzerinden tablolara veri işleyecekseniz, bu varsayılan değerler istemci programa gönderilmez. Örneğin işlem tarihi gibi bir alana sahip olduğunuzu varsayalım. Bu alanın değeri doğal olarak o günün tarihi verilir. İstemci üzerinde, kayıt ekleme yaptığınızda bu değer sunucudan gönderilmez. Daha doğrusu delphi bileşenleri bu varsayılan değerleri sunucudan okumazlar. Interbase kullanıcı sorunları - Eğer Interbase i ağ içerisinde kullanacaksanız, ağ üzerinden bağlanacağınız bilgisayarda (interbase sunucusunda) interbase kullanıcıların tanımlı olması gerekir. Yani interbase üzerinden ağ üzerindeki başka bir bilgisayara "misafir" kullanıcısı ile bağlandığımızı varsayalım. "misafir" isimli kullanıcı hem sizin bilgisayarınızda hem de bağlanacağınız interbase sunucusu bulunan bilgisayarda tanımlı olaması ve parolalarının aynı olması gerekmektedir. IBX bileşenleri üzerinden bağlanacağınız sürece her iki tarafta da tanımlı olması gerekiyor. Fakat Interbase konsolu üzerinden veritabanını uzak(remote) olarak tanımlayıp bağlanacağız zaman bunun aynı şekilde olmadığını, kullanıcının sadece sunucuda olmasının yeterli olduğunu göreceksiniz. Çifte standart gibi görünüyor, aynı AB' nin Türkiye politikasında olduğu gibi Eğer programınız, kullanıcı haklarını düzenleme rutinleri içeren eklentiye sahipse, bu konuda sorun yaşayacağınız aşikar. Sunucuda Türkçe karakter sorunu - Sunucu üzerinden kayıtlar üzerinde düzenleme veya ekleme yapacağınız zaman Türkçe karakterlerde sorunlar yaşayacaksınız. Bu veritabanını oluştururken Türkçe karakter kümesini seçseniz dahi (win1254 Türkçe karakter kümesidir) Türkçe karakterler konusunda sorun yaşayacak değeri düzenleme veya ekleme yaptığınızda size hata mesajı üretecektir. İstemci programlarda karakter kümesini Türkçe belirttiğiniz sürece herhangi bir sorun yaşamazsınız. IBX Dataset lerinin ISQL komut kümesini tanımaması - Tüm veritabanı sistemler kendi SQL sürümlerini geliştirmişlerdir. Örneğin Microsoft SQL Server için MSSQL, Interbase ise ISQL komutlarını geliştirmiştir. Fakat hepsi standart olan SQL komutlarını tanıyıp işleyebilirler. Interbase konsolu içerisinde ISQL komutlarını rahatlıkla kullanabilirsiniz. Fakat IBX bileşenleri ile bu ISQL komutlarını işletemezsiniz. Bunun için standart SQL komut kümesini kullanmanız gerekiyor. Hareket (Transaction) yönetimi zorluğu - Hareket (Transaction) yönetimi, yaptığınız tüm işlemleri veritabanı üzerinde uygular fakat siz transaction u onayladığınızda veritabanına gerçek anlamda yansıtılır. Böylece olası hataların önüne geçilmiş olur. Yani çökme, elektrik kesintisi, veri kaybı gibi olası sorunlara karşı veritabanı güvenliğini ve tutarlılığını sağlar. Interbase transaction işlemlerini destekler. IBX bileşenleri içersinde transaction yönetimini sağlayan bileşen mevcuttur. Fakat kullanım tutarsızlığı göze çarpıyor. Siz IbTransaction.CommitRetaining komutunu vermediğiniz sürece program açıkken ağ üzerindeki kullanıcılar işlediğiniz verileri göremezler. Bu işlem ise her kayıt düzenleme, ekleme işleminden sonra CommitReatining komutunu kod yordamıyla vermenizi gerektirir. İşin daha zor tarafı, bazı ilişkili tablolarda bunu yaptığınızda kayıt sırasının kaybolarak ilk kayda dönülmesi. Bu ise kullanım zorluğu oluşturarak programcıları harici kodlar yazmasına yol açıyor. Sunucudaki veritabanı düzenleme arayüz yapısı - Interbase 7.x serisinde diğer veritabanı yönetim konsollarında olduğu gibi, ara yüz kullanarak tabloları düzenleme imkanı vermesi yeni gelen bir özellik. Fakat bu o son derece kullanışsız tasarlanmış. Örneğin bu ara yüzü kullanarak tablo tasarlayacağınızı varsayalım. Konsol içerisinde yönetim ağacından Tables kısmına geldiğinizde sağ tuş yaparak "create table" seçeneğine tıklayın. Ekrana gelen pencerede üst kısma tablo ismini verin ve alt kısımda sağ tuş ile "add field" seçeneğini seçin. Burada sadece tanımlı alan domain lerinden ekleme yapabileceksiniz. Yani ekleyeceğiniz alan türünü seçerken domain in mutlaka tanımlı olması, domain olmadan ekleme imkanına izin vermemesi. Bu index, tetikleyici ve diğer türlerde de aynı. Create ve alter seçenekleri kullanışsız. Umarım ki gelecek sürümlerde bu konuda bir çalışma yapılır. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Gördüğünüz gibi Interbase içersinde tutarsız ve iyi tasarlanmamış bölümler mevcut. Şahsen kullanırken yukarıdaki saydığım hatalara birçok zaman maruz kalmışımdır. Yukarıdaki hataların haricinde karşılaştığımız birçok hata mevcut fakat hepsini burada açıklamak mümkün değil. Programlarınızı tasarlarken bunları göze alarak tasarlarsanız hem siz memnun kalacak hem de kullanıcılardan bu konuda bir şikayet almayacaksınız. Hatasız çalışan büyük yazılımların olması maalesef mümkün olamıyor Makale umarım faydalı olmuştur. Başka bir zaman, başka paylaşımlarda görüşmek üzere çalışmalarınızda başarılar. Sinan ERGİN.