Aylık arşivler: Nisan 2007

Evleniyorum :D

Evleniyorum :D

Nikah: 5 Mayıs 2007 Cumartesi Saat 16:00’da
Fatih Belediyesi
Zübeyde Hanım Kültür Merkezi
Oğuzhan Cad. Oğuzhan İş Hanı.
No: 19/1 Giriş Fındıkzade / İstanbul
(Vatan caddesi Migros’dan Fındıkzade’ye doÄŸru çıkarken solda, Fındıkzade Tramvay durağından Vatan caddesine inerken saÄŸda.)

ÅžiÅŸirme Veri GiriÅŸi / Bulk Data Creation

Merhaba arkadaÅŸlar,

Bugün sizlerle acayip, acayip olduÄŸu kadar da zor bir konuyu paylaÅŸacaÄŸum. Son bir haftadır çalıştığım firmada ‘ÅžiÅŸirme Veri GiriÅŸi’ (Bulk Data Creation) ile uÄŸraÅŸmaktayım. Uzun bir süre deÄŸil mi ? evet uzun :) ama yapacak birÅŸey yok uzun sürüyor iÅŸte :)

Aklınızda hemen, bu konu neden önemli, üzerinde neden çalışıyoruz şeklinde sorular oluşabilir, oluşmalıdır da :) bu nedenle sizlere öncelikle müşterilerin şişirme veri girişini neden istediklerini izah etmeye çalışayım;
– Ä°lk örneÄŸimiz Microsoft’un Windows iÅŸletim sisteminden; iÅŸletim sistemine çok fazla program ekleyip kaldırdığımızda sistemin yavaÅŸladığını Registery dosyasının ÅŸiÅŸmesine baÄŸlarız. Zamanında Microsoft’da çalışan arkadaÅŸlar, bu durumu test etmemiÅŸ veya test etmiÅŸ fakat sonuçlarını dikkate almamışlar ki biz halen ‘Windows’u nasıl hızlı kurarım’ gibi iÅŸlerle uÄŸraşıyoruz.
– 3~5 yıldır kullanılan yazılımlarınızda, çok uyduruk iÅŸlemlerin bile artık çok fazla zaman aldığına ÅŸahit olabilirsiniz. Bunun nedeni baÅŸlangıç verinin çok küçük olacağını düşünüp, veri tabanında uygun indeksleri kullanmamız veya yazdığımız algoritmaların p = n^2 (buradaki ‘n’ veri adedi, ‘p’ performans) veya buna benzer bir ÅŸekilde çalışması olabilir. Örnek vermek gerekir ise; n = 1 ise, p = 1, n = 2 ise p = 4, n = 3 ise p = 9, n = 4 ise p = 16 olur… bu durumda 3~5 sene sonra n = 100 olduÄŸunda p = 10.000 olur ki… sistem artık çalışmıyor demektir. Elbetteki örnekler daha da arttırılabilir.

Akıllı yazılım müşterilerinin artık bu soruyu sormaya baÅŸlamalarının nedeni iÅŸte bunun gibi nedenler arkadaÅŸlar. Peki biz yazılımcılar bu durumda neler yapabiliriz. Aklınıza ‘Veri boyutu 2 katına çıkarsa sistemin bunu iÅŸleme süresi de 2 katına çıkar.’ gibi bir yaklaşım gelebilir. Bu yanlıştır, bu ÅŸekilde olmamalıdır. Günümüzdeki veri tabanı uygulamalarını akılcı kullanmak ve eÄŸer bu da yetmiyor ise, yazılıma arviÅŸleme yeteneÄŸi eklemek gerekir.

Veri tabanı performansı günümüzde çok büyük problemler teşkil etmemektedir. Asıl problem, programın yazıldığı algoritmanın ve yapılan dizaynın getirdiği kısıtlamalardır. İşte bu tür kısıtlamaları ve bunlara bağlı performans düşüşlerini daha rahat yakalamak için uzun vadeli çalışacak olan sistemlerde şişirme veri girişi(bulk data creation) işlemi ile beraber performans sınaması gerçekleştirilmelidir.

Evet tanımı yaptıktan sonra aklınızda oluşan bazı karışıklıkları gidermek gerekir. Öncelikle Örnek Veri Girişi ile Şişirme Veri Girişi arasındaki farkı sizlere tarif etmem gerekiyor. Örnek veri girişi; sistemin olanaklarını çok zorlamayacak şekilde, örnek teşkil edecek çoklukta veri girmektir. En fazla sistemde oluşabilecek bir aylık verinin oluşturulmasıdır. Şişirme Veri Girişi ise; Sistemde stres test yapmak ve data boyutlarının hangi sevilere doğru çıktığını, en kötü koşullarda veri tabanı üzerinde yapılacak işlemlerin veya yazılmış algoritmaların ne kadar süreceklerini görebilmek için yapılan işlemdir. Tahmini 2 veya 3 seneden daha az olmamak kaydı ile veri giriş yapılmalıdır. Diğer bir deyişle Örnek Veri Girişinin 30 veya 40 katı kadar veri girilmesi gerekir. Girilen bilgiler en az örnek veri girişinde olduğu kadar mantıklı ve kendi içerisinde tutarlı olmalıdır.

Bu aÅŸamadan sonra sizlere nasıl hızlı ve mantıklı ÅŸiÅŸirme veya örnek veri giriÅŸi nasıl yaparsınız onları tarif etmeye çalışacağım. Bu iÅŸlem için elbetteki Ruby’yi :) kullanacağız(.NET veya Java’yı da kullanabilirdik ama henüz onlarda bu iÅŸlemler kolaylaÅŸmadı.).

Bu iÅŸlemi Microsoft SQL Server için gerçekleÅŸtireceÄŸiz. Böylece Microsoft SQL Server için ActiveRecord baÄŸlantısını da incele fırsatı bulmuÅŸ oluruz. Öncelikle sizlere neden ActiveRecord kullandığımızı açıklamam gerekir, daha önceki ODBC yazılarımda (1,2,3,4) belirtiÄŸim kütüphane ile deÄŸilde, neden ActiveRecord ile gerçekleÅŸtiriyoruz. Çünkü ODBC düşük seviyeli bir baÄŸlantı prokolüdür. Fakat ActiveRecord yüksek seviyeli bir veri tabanı ile Ruby arasında bir eÅŸleme kütüphanesidir. Yani ActiveRecord’da veri tabanında bulunan tablolardan Ruby sınıfları oluÅŸturulabilir, bu sınıflar üzerinde ‘Insert’, ‘Delete’, ‘Update’ ve ‘Select’ gibi SQL iÅŸlemleri birkaç küçük hareket ile gerçekleÅŸtirilebiliriz. Fakat ODBC bize bu ÅŸekilde bir yardımda bulunmaz, aynı iÅŸlemleri ODBC kullanarak bizlerde gerçekleÅŸtirebiliriz, ama bunun için kod yazmamız gerekir ki :) tembel adamın istiyeceÄŸi en son ÅŸeydir :). Hazırı var iÅŸte ActiveRecord :). EÄŸer ActiveRecord üzerinde hoÅŸumuza gitmeyen bölümler olursa Ruby’nin esnekliÄŸinden faydalanarak bunları deÄŸiÅŸtirebiliriz. Ayrıca ActiveRecord, ODBC gibi bir baÄŸlantı kütüphanesi deÄŸildir, tek başına herhangi bir veri tabanına baÄŸlanamaz fakat ODBC, ADO, DBI, OCI gibi birçok baÄŸlantı kütüphanesini kullanabilir.
ÅžiÅŸirme Veri GiriÅŸi / Bulk Data Creation yazısına devam et

Ruby Bucak Semineri

Merhabalar,

GeçtiÄŸimiz hafta sonu çok güzel bir organizasyona katıldık. Bu güzel anı bizlerle paylaÅŸtıkları için organizasyonu düzenleyen çok deÄŸerli öğretim üyelerime ve katılımcılara çok teÅŸekkür ederim. Burdur-Bucak’ta gerçekten çok güzel, organize ve istekli insanlarla karşılaÅŸtık. Umarım bu istekleri devamlı olur, eÄŸitimlerini baÅŸarı ile tamamlar ve sektörde önemli yerlere gelirler. Tüm ihtiyaçlarının kendi ellerinde olduÄŸunu anladıklarını tahmin ediyorum.

Hüseyin GömleksizoÄŸlu ile beraber çıktığımız bu yolculukta, Hüseyin’in bazı çekinceleri ve şüpheleri vardı, ama sorunsuz bir yolculuktan sonra Bucak’a vardır.

Merak edenler olabilir hemen anlatayım; İstanbul-Bucak arası, uçak ve otobüs macerası :)
Ä°stanbul’dan 19:10’da kalkan Pegasus’a ait uçağımız saat 20:10’da Antalya havaalanına indi. Daha sonrasında HavaÅŸ’ın servisi ile Antalya’nın diÄŸer ucunda bulunan otobüs terminaline gittik, vardığımızda saat 21:15 idi. Ä°stanbul’dan yaptığımız telefon görüşmelerinde 20:00’dan sonra Bucak’a gidemeyeceÄŸimizi kesin bir dille söylemiÅŸlerdi. Ama benim gazımla beraber Hüseyin’de ikna olunca biz ÅŸansımızı denemeye karar vermiÅŸtik, terminale gittiÄŸimizde, 2. sorduÄŸumuz kiÅŸiden 18 ytl karşılığında saat 22:00 otobüsünde Bucak için bilet almıştık. Bu kadar kolay bulmamıza ÅŸaşırarak bileti hemen aldığımız için kendimize kızdık, hiç araÅŸtırmamıştık belki baÅŸka bir firmada 21:30 otobüsünde yer vardı :) neyse almıştık iÅŸte biletleri; saat 22:00’da otobüs kalktı ve saat 23:00’da Bucak’taydık.

Kısadan hisse durumuna indirecek olursak; tüm tur yetkililerinin veya otobüs iÅŸletmecilerinin o saatte gidemezsiniz dediÄŸi Ä°stanbul – Bucak arasını uçak + otobüs ile 4 saat gibi bir sürede katettik :) mutluyuz, gururluyuz :)