Archive

Archive for the ‘DATABASE’ Category

MÜŞTERİLERİNİZE KULAK VERİN !

Ocak 4, 2008 1 yorum

sccc.jpgÇoğu zaman bir yazılım projesini veya bir uygulamayı hata geçirmeden evvel aklımızda temel bir şablon olur. Bunu kağıda yada dijital bir ortama aktarınca hatlar belirginleşir. Bu sırada aklımıza yeni fikirler gelir ve bunu da şablonumuza ekleyip resmin son şekline iyice yaklaşırız. Bu yeni fikirlerin çoğu kullandığımız benzer ürünlerden esinlenmeler yada kopyalamalardır. (Düşünün: bir audio player yazacak olsanız uygulamanıza ne gibi özellikler eklerdiniz ? Ses ayarları, graphic equalizer, farklı dosya formatlarını destekleme, müzik kütüphanesi, internetten içerik getirme ,belki audio ripping, harici depolama birimleri için destek ve senkronizasyon vs vs. Muhtemelen çoğunuzun aklından bunlar geçti.) Bu süreci tamamlayınca artık development ‘a hazır hissederiz kendimizi ve uygulamamızı exception almadan çalıştırınca “bizden mutlusu olmaz 🙂” Güya çoğu ihtiyaca cevap verdik , hemen herşeyi hallettik. Kodlayan mumnun kullanan memnun. Acaba atladığımız bir ihtiyaç, aklımıza getirmediğimiz bir özellik olamaz mı?

Olur, olurmuş. Bunu Aqua Data Studio ‘nun e-posta grubuna gönderilen “New Feature” taleplerini okudukça daha belirgin bir şekilde görüyorum. Bakın bugün nasıl bir talep geldi:


I am a big fan of ADS. At this point there is only one feature lacking to make it perfect, for my needs at least.
As I type this, my licensed copy of ADS 6.5.0 has 25 servers registered into it: some Oracle, some MS SqlServer, and a some MySql.
My problem is that over time I lose the passwords to some of these databases. I can still connect through ADS because I entered the password correctly months or even years ago, but I can’t make a new connection because I have no idea what I typed back then into the password field.
What I would like to have is a field in each server registration where I could type some comments to remind me about salient features of each server. Putting the password into the comments is one example.
I can do that when I define a database connection into the IBM Webpshere 6.1 application server using that product’s administrative console– that’s the reason I thought to request this ability to add a comment for each registered server within ADS.


Açıkcası ben de hem Java hem de ASP.NET ile 2 adet database administration tool yazmıştım. (Basit ama ihtiyaçlarmı gören ve bana çok şey öğreten uygulamalardı) Amaç hem birşeyler öğrenmek hem de diğer araçlarla yaşadığım karmaşayı aşmaktı. Önce JDBC ile Java tabanlı minik bir uygulama geliştirdim. Sonra AsP.NET öğrenince ADO.NET+AJAX+ASP.NET kombinasyonuyla SQL SERVER 2005 üzerindeki tabloları ve bunlara ait bilgileri listeleyen web tabanlı bir uygulama yazmıştım. Son yazdığım uygulama AJAX sayesinde bağlandığım remote database server ‘ım üzerinde işlem yaparken kendimi daha az bekliyor gibi hissettirmiş ve beni SQL Server Management Stuido ‘nun kilitlenmelerinden bir dönem korumuştu.Bu tip uygulamaların en temel aşaması veritabanı ile bağlantı kurmaktır. Kullanıcıdan gerekli bilgileri (IP,Port,Username,Password) alıp, bağlantıyı kurduktan sonra, ilgili API ‘lerin getirdiği kolaylılara bir de bağlandığınız ürünün kendine has yeteneklerini ekleyip işinizi görebilirsiniz. Ama her iki uygulamamda da hiçbir şekilde yukarıdaki gibi bir PASSWORD HINT tarzı açıklama alanına yervermemiştim. (Açıkcası akıl edememiştim.)Bazılarınız için bu abartılası birşey değil. (Hatta güvenlik açığı diye düşünenler olabilir. Sonuçta sizin şifreyi hatırlamanızı kolaylaştıran birşeyler – eğer mesajı iyi gizlememişseniz- başkalarının da şifreyi daha kolay tahmin etmesine neden olabilir.) Fakat geçen gün aynı durumu enteresan yollarla çözmeye çalışmış birisi olarak ben faydalı bir istek olarak gördüm bu eklentiyi. Geçtiğimiz ay BETA database ‘inin şifresi lazım olmuştu ve DBA arkadaşlar diğer sunuculardakinden farklı bir şifre seçmişler. (Sağolsunlar) İlgili connection bilgileri ekibimizdeki bir arkadaşın kullandığı SQL Developer uygulamasında kayıtlıydı. Tabii password bilgisi asterix (*) karekterlerinin arkasına gizlenmişti. Bahsi geçen arkadaş da şifreyi hatırlayamayınca tahmin edin ben ne yaptım ?Asterix Revealer dediğimiz uygulamalar ile SQL Developer ‘dan şifreyi almaya çalıştım ama asıl işimi görecek uygulamaları bulunduğum şirketin güvenlik politikası gereği indirip kullanamadım. (Allahtan başka ekipteki arkadaşlardan şifreyi hatırlayanlar çıktı…)

Toparlamak gerekirse geliştirdiğiniz uygulamaları kolayca test edilebilir bir şekilde insanlara sunup 3., 4., 5. hatta N. şahısların görüşlerini mutlaka alın. Bu yazıdaki çok basit bir örnek. Ama emin olun bundan daha güzel istekler de geliyor ki bu sayede ADS bugün çok güçlü bür uygulama haline geldi. Bir de bu örneğin bir istisnası var. Uygulamayı kullananların çoğu ya uygulama geliştirici yada veritabanı yöneticisi yani işten anlayan insanlar. Bazen de müşterilerinizden uygulamanızın arka planda Kurtlar Vadisi ‘nin polifonik melodisini çalması yönünde talepler gelebilir. Bu gibi talepleri ve bu gibi şahıslardan gelen DİĞER TALEPLERİ sağlığınız açısından ciddiye almamakta fayda var. Şimdilik benden bu kadar… En kısa sürede daha farklı ve daha güzel yazılarla karşınızda olacağım…Sağlıcakla kalın…

ORACLE SEMİNERİNE DAVETLİSİNİZ

Kasım 13, 2007 Yorum bırakın

CETURK olarak seminer organizasyonlarımıza Oracle semineri ile devam ediyoruz. Uzun zamandan beri gerçekleştirmeyi hayal ettiğim bu seminer için kısmet bu haftasonunaymış ve nihayet Hasan Tonguç Yılmaz CETURK üyeleriyle buluşuyor. Seminer için yer olarak Yıldız Teknik Üniversite ‘sini seçtik. ( Benim için de okuluma gidecek olmak ayrı bir keyif.)

Seminerin basitten zora doğru giden bir içeriği var. Temel olarak Oracle DBMS ile başlayıp ,daha sonra performans dar boğazlarının aşılması için neler yapılması gerektiği üzerinde durulacak. Son noktada da Event 10046 bizlere ne gibi ipuçları verir bunlardan bahsedilecek.

Her zamanki gibi çekilişimiz ve kitap hediyemiz de var. Bir aksilik olmazsa ben de orada olacağım. Seminere katılmak isteyenler buradan kayıt yaptırabilirler. Seminer detayları aşağıdaki gibi. Seminerde görüşmek üzere hoşçakalın…

ETKİNLİK DETAYLARI
Etkinlik Konusu : Oracle Trace Utility’e Giriş Ve Temel Performans Denklemini Anlamak
Etkinlik Türü : Seminer
Hedef Kitle : Oracle DBMS üzerinde uygulama geliştirenler ve uygulamalarindan daha fazla performans almak isteyeneler.
Kontenjan : 100
Etkinlik Tarihi – Saati : 17.11.2007 — 10:30-13:00
Süre : 1 Gün
Eğitimi Veren : H.Tonguç Yılmaz
Etkinlik Yeri : Yıldız Teknik Üniversitesi Merkez Kampüsü Sergi Salonu Adres için TIKLAYINIZ
ETKINLIK IÇERİĞİ
1.Oracle veritabanına giriş
http://tonguc.yilmaz.googlepages.com/Oracle-introduction-for-newbies.htmhttp://tonguc.yilmaz.googlepages.com/Oracle-Quality-and-Performance-for-F.htm
2. Başarım temel kavramları
3. Bekleme olaylarına giriş


http://tonguc.wordpress.com/2007/09/12/oracle-waits-defined-by-kyle-hailey/
4. Olay 10046 ve çözümlemesi

Bilgi için tıklayınız
5. Kapanış
KONUŞMACI
Okullar Fethiye Lisesi, ITU Bilgisayar Müh., Bilgi MBA
İş Tecrübesi 1996-.. Finans ve Telco şirketleri, BT bölümleri
Uzmanlık Oracle ile sürüm 7.3 tanıştı,9+ sene,
Oracle ACE ve OCP,OracleTURK grubu yönetici(1999),Turkcell Akademi Oracle veritabanı ve ürünleri iç eğitmeni
Uyarı “Guru” veya bir başka pazarlamacı değil!
Daha fazlası http://tonguc.wordpress.com/about/
  H.Tonguç Yılmaz tonguc.yilmaz at gmail.comhttp://tonguc.yilmaz.googlepages.com
ETKİNLİK HEDİYEMİZ
Seminere katılan 3 üyemize çekilişle aşağıdaki kitaplardan hediye edilecektir.:

SQL SERVER JDBC DRIVER 1.2 CTP

Eylül 26, 2007 9 yorum

Geçtiğimiz ay Microsoft SQL Server için Type 4 özelliklerini sağlayan yeni JDBC sürücüsünün 1.2 sürümünü yayınladı. Yayınlanan bu sürücü hem SQL Server 2005 hem de 2000 sürümüyle uyumlu olarak çalışabilen bu yeni sürücü JDBC 3.0 spesifikasyonunyla tamamen uyumlu olarak hazırlanmış.

Sürücünün Type 4 özelliklerini sağlaması performans konusunda ciddi avantajlar getirecektir. Pure Java Driver yada Thin Driver denilen bu tipteki sürücüler istemcilerden (yazdığımız Java uygulamalarından) gelen JDBC çağrılarını DBMS ‘in anlayacağı şekilde network çağrılarına çevirerek veritabanına doğrudan erişim sağlar. Arada database middleware olmadığı için de diğer sürücülere göre daha hızlı çalışır. (Ne kadar az katman o kadar çok performans) Özellikle intranet uygulamalarında bu tip bir sürücüyü tercih etmek avantajlı olacaktır diye düşünüyorum.(Tabi ne kadar az katman o kadar az kontrol ?? Ondan ötürü kullanım öncesi iyi bir analiz şart.)

Bu sürücü ile uygulama geliştirmek için JDK 1.4 veya daha ileri bir sürümünün makinanızda kurulu olması gerekiyor. Yapılan açıklamalara göre BEA WebLogic, IBM WebSphere, JBoss, and SunBu gibi uygulama sunucuları ile sürücünün sorunsuzca çalıştığı görülmüş. Ama her Microsoft ürününe olduğu gibi bu sürücüye de şüpheyle yaklaşıp kendim de denedim ve ben de SQL Server 2005 Enterprise Edition üzerinde önceden yazdığım ufak uygulamayı sorunsuzca çalıştırdım . Fakat bu herşeyin yolunda olduğu anlamına gelmiyor elbette. Bu adresteki gibi stored proc. içerisinde geçici tablo kullandıklarında sorun yaşayanlar da var. (Final sürümüne ulaşmadan kritik uygulamalarda Mcirosoft ürünlerini kullanmayı Microsoft çalışanları da tavsiye etmiyorlar.)

Bu ücretsiz sürücü ile sağlanan Adaptive Buffering ve SSL Encription gibi özelliklerden uygulamalarınızda faydalanmak isterseniz mutlaka bir test sürüşü yapmalısınız. Adaptive Buffering özelliği sayesinde büyük boyutlu verilerle yaşadığınız performans darboğazlarını aşabilme şansınız var.

Aslında JDBC Type 4 sürücülere çoğumuz büyük umutlar bağlamıştık ama nedense DBMS üreticileri bu konuda beklenen çevikliği gösteremediler. Fakat Microsoft herkesten hızlı davranıp Type 4 sürücüsünü herkesten önce çıkarmıştı. Hatta JDBC-TR mail grubunda bunun önemli bir şirket stratejisi olduğunu daha doğru güzel bir Microsoft Uyanıklığı örneği olduğunu konuşmuştuk.

Yazının sonuna Type 4 sürücülerle ilgili iki tane kısa ve öz yazıyı ekledim. Özellikle de devx.com ‘daki yazıya göz atmanız sürücü seçimi sırasında doğru kararı almanızda faydalı olacaktır.

Şimdilik benden bu kadar. Yaşadığım bir dolu aksilikten sonra blogumu güncellemeye kaldığım yerden devam ediyorum. İlerleyen zamanlarda özellikle de üzerinde çalıştığım Test Driven Development ve Unit Testing konularında keyifli paylaşımlarda bulunmaya çalışacağım.

Types of JDBC technology drivers
JDBC Drivers: How Do You Know What You Need?
Microsoft SQL Server 2005 JDBC Driver 1.2 Community Technology Preview August 2007

KARİYERİNİZE TURKCELL ‘DE YÖN VERMEYE NE DERSİNİZ?

Ağustos 19, 2007 1 yorum

turkcell_oracle1.jpgDaha önce blogumda IBM ve Microsoft ‘taki yaz okulu ve staj çalışmalarından bahsetmiş ve bunların önemini vurgulamıştım. Bu sırada çok önemli bir çalışmayı atladığımı fark ettim ve geç de olsa yolun başındaki arkadaşlara yol göstermesi açısından bu konuyu bloguma taşımaya karar verdim.
Turkcell ‘de son senelerde yoğun bir emek harcanarak R&D Software Development ekibine stajyer arkadaşlar alınıp , eğitilerek kariyerlerinde önemli bir adım atmaları sağlanıyor.

Eğer bu süreci yeterince iyi bir şekilde değerlendirirseniz kariyerinize Turkcell ‘de devam etme şansınız da var. Şöyleki staj döneminden sonra part-time çalışma şansına ardından da okul bitiminde full-time çalışma şansına sahip olabilirsiniz.

Her yılın Temmuz ayında başlayan ve Eylül ayının sonunda biten 3 aylık bir süreci kapsıyor bu staj dönemi. Burada 3 ay staj yapmak zorunlu. Yani yoğun ve ciddi bir staj dönemine hazırlıklı olun. Elbette bu dönem sonunda da kolay kolay hiçbir yerde elde edemeyeceğiniz bir bilgi birikimine sahip oluyorsunuz.

Staj döneminiz Turkcell ‘in kullandığı teknolojilere bağlı olarak Oracle ve Java ağırlı bir çalışma dönemini kapsıyor. Bu konularda üç aylık bir dönemi kapsayan teori ve uygulamayı birarada bulabileceğiniz bir staj dönemi geçiriyorsunuz. Burada Turkcell ve Oracle kelimelerini yanyana görmek sizlere birisini çağrıştırdı mı?

Evet bildiniz Hasan Tonguç YILMAZ. Eğer bu staj sürecine dahil olursanız Hasan Tonguç YILMAZ ile birlikte çalışma ve kendisinin deneyimlerinden faydalanma şansına da sahip olacaksınız. Kendisini tanıyanlar ve blogunu takip edenler Tonguç Abi ‘nin engin Oracle bilgisini sadece kendi işi için kullanmayıp etrafındaki kişilere çeşitli yollarla (forumlar,e-mail grupları , blog yazıları vb. ) paylaştığını bilirler. (O nedenle benim gözümde pek çok Oracle uzmanından daha değerlidir.)

Burada en önemli nokta paylaşımın ve iletişimin staj döneminden sonra da devam etmesi. Açıkcası benim öğrenciyken en çok imrendiğim ve başımı taşlara vurmama sebep olan nokta bu olmuştu. (Tonuguç Abi ‘nin Oracle Cost-Based Optimization çalıştayında stajyerlerine ne kadar çok değer verdiğini ve ne kadar çok şey kattığını görünce kıskanmadım desem yalan olur.)

Yazının başında da belirttiğim gibi şu anda staj süreci sürüyor. Bir sonraki alımlar seneye yapılacak ama şimdiden hazırlık yapmakta fayda var. Bu blog yazısına özel bir kaç da tüyo vereyim. Eğer Turkcell ‘deki bu staj sürecine kabul edilmek istiyorsanız önünüzdeki bu eğitim öğretim yılını çok iyi değerlendirin ve SQL, PL/SQL, APEX, JAVA konularına ağrılık verin. Bu noktada yapabileceğiniz en faydalı şey ara projenizi veya diğer derslerden aldığınız projeleri bu teknolojileri kullanarak gerçekleştirmek olacaktır.

Bu teknolojilerle ilgili olarak Oracle ‘ın sitesinde fazlasıyla kaynak mevcut. Ama ben yine de APEX (Application Express) ile yeni tanışacak olanların bu yazıya ve Oracle ile yeni tanışacak olanların da bu yazıya bakmalarını önereceğim. Turkcell ‘deki bu staj süreci ile ilgili olarak Hasan Tonguç Yılmaz ‘ın blogunda yazdığı bu yazıya bakmak da faydalı olacaktır. Yine aynı şekilde staj süreci hakkında bilgi alabileceğiniz diğer bir kaynak da şu anda hala stajyer olarak Turkcell ‘de bulunan Bilal Hatipoğlu ‘nun Blogu. Bilal gerçekten de çok yalın ve anlaşılır bir dille bu süreci ve öğrendiklerini bloguna taşımış. (Bu güzel paylaşımından ötürü Bilal ‘i tebrik ediyorum.)

Umarım bu blog yazısı öğrenci arkadaşlar için motive edici ve yol gösterici olur. Bu yıl içerisinde gereken çabayı gösterip yazıda bahsi geçen teknolojilere odaklanarak seneye siz de Turkcell ‘de stajyer olmaya ve kariyerinize yön vermeye ne dersiniz?

ECLIPSE İÇİN QUANTUM DB

Ağustos 9, 2007 7 yorum

Hangi Java mail grubuna yada forumuna bakarsanız bakın konu dönüp dolaşıp IDE (Integrated Development Environment) konusuna gelmiştir. Hatta bir kısım Javacı arkdaşlar bu tartışmalardan ve belirsizlikten bunalıp kendilerini .NET platformunun dolayısıyla Visual Studio ‘nun sıcak kollarına atmışlardır. Her ne kadar Visual Studio gibi kur ve kullan başka da birşey yapma tarzında yada daha modern bir ifadeyle ALL-IN-ONE bir IDE ‘ye sahip olmasak da Javacılar için de vazgeçilmez hatta yavaş yavaş standart haline gelmeye başlayan Eclipse var. (Bir kere ayarla her yerde kullan.)

Aslında bu tip bir ihtiyaç her uygulama geliştiricinin hayatında var. Yani uygulama geliştirirken herşeyin bir arada olması en azından basitçe işinizi görecek araçların tek bir yerde toplanması önemlidir.(Ciddi durumlarda Aqua Data Studio, Rapid SQL yada TOAD gibi araçlara ihtiyaç olabiliyor.) Bu nedenle Visual Studio ‘nun hakkının verilmesi gerektiğine inanıyorum.

Eclipse ‘e dönecek olursak default olarak gelen eklentilerle zaten Javacıların işini fazlasıyla görecektir ama ihtiyaçlar değiştikçe yeni eklentiler kurarak daha da zenginelştirmek gerekebilir. Bu noktada en büyük sıkıntı doğru eklentiyi seçme konusunda yaşanır. (Eclipse için yüzlerce plugin -eklenti- mevcut)

quantum2.jpg  Bitirme projem sırasında Visual Studio ‘da en sevdiğim ve sıklıkla kullandığım özelliklerden bir  tanesi de Server Explorer idi. Hatta eğer bağlantı kuracağınız sunucu yerelinizde değilse SQL  Server 2005 Management Studio ‘dan daha hızlı çalıştığını da söyleyebilirim. Bu güzel özelliği Eclipse ‘e de kazandırmak gerekli diye düşünürken karşıma Quantum DB eklentisi çıktı. JDBC tabanlı bu güzel plugin ile hem veritabanı sunucunuzda ne var ne yok visual bir şekilde görebilirsiniz hem de SQL sorgularınızı çalıştırabilirsiniz.

Quantum DB ‘yi Eclipse dahil etmek çok kolay ama burada karşınıza bir GEF (Graphical Editing Framework) plugin sorunu çıkabilir.Öncelikle Eclipse GEF ‘in doğru sürümünü eklemeli , ardından da Quantum DB kurulumuna geçmelisiniz. ( Note: Quantum needs the GEF plugin to work, so you have to install it before installing Quantum)

Eclipse ‘e plugin eklemek için ben genellikle web update ‘i tercih etmiyorum. Onun yerine plugini bilgisayarıma indirip Eclipse ‘e ekliyorum , bu sayede ileride farklı bir Eclipse ‘e de kurma şansım oluyor. (Plugin dosyalarını kopyalayıp yapıştırmak her zaman olumlu sonuçlar doğurmuyor o nedenle bu yöntem daha sağlıklı !)

Kullandığınız Eclipse sürümü için uygun GEF pluginini buradan indirebilirsin. İndirdiğiniz zip dosyasını uygun bir yere extract ettikten sonra Help -> Software Updates ->Find and Install yolunu takip edin. Search For New Futures To Install seçeneğini seçtikten sonra ilerleyin ve bir sonraki adımda New Local Site butonuna tıklayın. Açılan pencereden az önce plugini extract ettiğiniz dizini seçin ve tamam diyerek bir sonraki adıma geçin. Kullanıcı sözleşmesini de onayladıktan sonra kurulum tamamlanacaktır ve pluginin düzgün bir şekilde çalışabilmesi için Eclipse ‘i baştan başlatın.

GEF eklentisini kurduktan sonra buradan Quantum DB ‘yi indirin ve GEF ‘i kurarken izlediğiniz adımların aynısını tekrarlayın. Eğer herhangi bir hata almadıysanız Eclipse ‘i yeniden başlattıktan sonra eklentiniz kullanımıma hazır.

Window -> Open Perspective -> Other -> Qunatum DB yolunu izleyerek Quantum DB perspektifine geçebilirsiniz. Sonra da Window -> Show View yolu ile bu perspektif içerisinde görülmesini istediğiniz Quantum DB bileşenlerini seçebilirsiniz.

quan.jpg  Artık Quantum DB ‘nin görsel ayarları tamam. Tek yapmanız gereken Veritabanı          sunucunuzun çalışır halde olup olmadığını kontrol etmek ve Database Bookmarks alanına New Bookmark ile eklemek. Burada en önemli nokta uygun sürücüyü Quantum DB ‘ye göstermek. Açılan JDBC Driver penceresinden Add Driver ile veritabanı yönetim sisteminize ait sürücüyü eklemeniz gerekir. (İlgili sürücüleri kullandığınız DBMS ‘in üreticisine ait web sitesinden indirebilirsiniz.) Bir sonraki adımda da ilgili DBMS için gerekli bağlantı bilgilerini verip, bu bookmark ‘a bir ad vererek işleminizi tamamlayabilirsiniz. ( MySql için yandaki resimde örnek bir bağlantı gerçekleştirdim.)

Quantum DB ile ilgili başlangıçta sizlere lazım olacak bilgileri bu yazıda aktarmaya çalıştım. Bu güzel aracın diğer özelliklerini keşfetmek sizlere kalıyor. Fırsat buldukça farklı Eclipse pluginlerini inceleyip , deneyimlerimi sizlerle paylaşamaya çalışacağım. Şimdilik benden bu kadar . Sağlıcakla kalın…

SQL SERVER 2005 ‘DE FILLFACTOR KAVRAMI

Temmuz 18, 2007 Yorum bırakın

sqlserver.jpgBlogumdaki SQL Server 2005 ile ilgili önceki yazılarımda SQL Server Storage Engine ‘in biraz sorunlu olduğundan bahsetmiştim. Hal böyle olunca verilerimizi SQL Server üzerinde tutarken daha da dikkatli olmamız gerekiyor. Ben de bu konuda dikkat etmeniz gereken noktalardan bir kaçına değinmeye karar verdim.

SQL Server verileri diskten EXTENT dediğimiz formatta okur ve yazar . (the smallest unit of data that SQL Server can allocate is 64 KB) Extent ise bünyesinde 8 tane Page barındırır. Windows işletim sistemi ortamında 8*Page_Size=64K eder (İşletim Sistemleri dersini alan arkdaşların kulaklarını da çınlatmış olduk) ki bu da diskten bir defada okunabilecek veri boyutuna denk gelir.

Fillfactor kavramı ise verilerin page üzerinde ne kadarlık bir alanı kaplayacağını belirler. Yani veritabanı yönetim sisteminiz bir page ‘in ne kadarlık kısmını (yüzde olarak 1..100 aralığında) dolduracak ne kadarlık kısmını boş bırakacak bunu belirleyen parametredir. Fillfactor değeri index oluşturulurken veya rebuild edilirken karar verilen bir değerdir. Mesela indeks oluştururken 70 ‘lik bir fillfactor değeri belirlediğinizde page üzerinde yüzde 30 ‘luk bir alan sonradan eklenecek veriler için ayrılmış olacaktır. Burada dikkat edilmesi gereken en önemli nokta fillfactor değerini 100 vermek ile 0 (sıfır) vermek arasında bir fark olmadığıdır. Fillfactor değerleri 1-100 arasındadır o nedenle 0(sıfır) verdiğinizde bu 100 olarak kabul edilir ve tüm page doldurulur.

Gelelim bu kavramların önemine: Eğer veritabanınızdaki okuma sayısı fazla ise bu değerin yüksek olması çok önemli yani 100 seviyesinde olması en ideali (Zaten server bazında default değer 100 ) ama okuma işlemlerinin yanı sıra sıklıkla veri ekleme ve güncelleme (yazma) da yapıyorsanız böyle zamanlarda PAGE SPLIT dediğimiz vakit kaybettirici bir durumla karşılaşmanıza neden olabilir.(Elbette kaybettiğiniz vakti anlamanız o kadar kolay değil) Nasıl ki multi-threading yapabilen bir işletim sistemi CPU ‘da processleri çalıştırırken context-switching yapıyorsa (İşletim Sistemleri dersini alan arkadaşların kulaklarını bir kez daha  çınlatmış oldum) aynı durum veriler okunurken ve yazılarken de geçerli. Tam dolu bir page’de sorgulama yaptığınızda aradığın verinin o page içerisinde olma olasılığı daha fazla olur. Öte yandan tam dolu bir page ‘e yazmaya kaltığınızda dolu olduğu için diğer page ‘e geçilir (Page Split) ve page split işlemi sırasındaki hesaplamalar vakit kaybına neden olur.

Tablolarınızın fillfactor bilgilerini incelemek için SQL Server üzerinde dbcc showcontig komutundan faydalanabilirsiniz. Aşağıdaki örnekte Northwind veritabanınki Categories tablosuna ait bilgiler çağırılmıştır:

use Northwind

go
dbcc showcontig (Categories) with tableresults  (tableresults parametresi seçimliktir)

*Pages Scanned:1 Extent ‘i aşıyor mu aşmıyor mu görmenizi sağlar
*Extent Switches: 1 ise switch var demektir (tehlikeli bir durum 🙂 )
*Scan Density: Düşükse indeksleri yeniden oluşturmak faydalı olabilir (ALTER INDEX REBUILD )
*Avg Page Density: Bu bilgi aracılığıyla pagelerin doluluk oranları hakında bilgi sahibi olabilirsiniz.

Fill factor kullanarak index oluşturmak isterseniz de aşağıdaki örnek size yol gösterebilir:

CREATE CLUSTERED INDEX deneme_indx ON my_table (col1, col2) WITH FILLFACTOR = 50 

Yazımı bitirmeden evvel neden bu konuyu bloguma taşığıma da değineyim. JDBC_TR mail grubumuzda arkadaşım Emrah Şeker yapacağı proje için performanslı bir DBMS arayışına girmişti ve ona cevap verirken Flickr ‘ın altyapısını anlatan bir sunumda bahsi geçen yazma ve okuma değerlerinin oranına değindim. (Kullanıcılar her 14 okumya (select) karşılık 1 yazma (insert,delete,update) yapılıyorlarmış) Yani aldığınız bir DBMS ‘i default değerlerle kullanmak her zaman akıllıca olmuyor. İşinizi ve kullanıcılarınızı iyi analiz etmek gerekir diye düşünüyorum. Yine aynı şekilde perfomans sorunlarını çözerken olayları donanım güncellemeleri ile ölçeklemeye kalkmak her zaman beklenen sonuçları doğurmayacaktır. Diyorsanız ki kim bu kadar detaylı şeylere dikkat ediyor? Ben de diyorum ki Dikkat Eden Kazanır!

Şimdilik benden bu kadar sağlıcakla kalın…

-Tavsiye-
Who Cares about FillFactor?
SQL Server 2005 Books On-Line
Understanding SQL Server’s DBCC SHOWCONTIG 

NOT: Yukarıda bahsi geçen konu diğer DBMS ‘leri kapsayacağı gibi kapsamaya da bilir. O nedenle bu yazıyı sadece bilgi sahibi olduğum SQL Server ‘i örnekleyerek yazdım.

PROJE KABUSU SÜRÜYOR

Haziran 2, 2007 12 yorum

proje-kabusu.pngGeçen hafta cuma günü başlayan proje kabusum hala sürüyor. Aksilikler, sorunlar bir türlü yakamı bırakmadı. Tüm bu sorunlardan kurtulup rahata ereceğim zamanda yenileri katılıyor aramıza. Ama yaşanan bu sorunlardan da kendime çok ders çıkardım.
(Keşke başka türlü çıkarsaydım o dersleri)

Önceki hafta bilgisayarları kapıp hocamızın asistanına bitirme projemizin son halini göstermeye gittik. Projeyi iki kişi yaptığımız için CETURK ‘ün kurucu Mehmet ACA bize database hosting sağladı. Aynı database üzerinde çalışmak hem senkronizasyon hem de tablolara veri girme derdinden bizi kurtaracaktı. Fakat okula gidince bunun böyle olmadığını gördük. (Çok geç oldu ama neyse) Okuldaki internet çıkışı üzerinden bizim verilerimizin bulunduğu hosta erişilemiyormuş. “muş” dedim çünkü bu problemi Mehmet ‘e anlatınca “ Evet abi doğru bizim okuldan ne yaptıysam ben de erişememiştim ” dedi. (Eeee be adam şunu baştan söylesene)

Şimdi aklınıza “Neden bu veritabanın aynısını kendi bilgisayarında oluşturmadın?” gibi bir soru gelir. Elbette oluşturdum. Fakat remote hostta bulunan verileri kendi bilgisayarıma transfer ederken oradaki schema ile aynı schema ismine taşımışım. (Ben de o schema tanımlı olmamasına rağmen) Sağolsun SQL Server Management Studio bu konuda beni hiç uyarmadı.

Verileri kendi bilgisayarıma aktardıktan sonra bu defa da yeni gelen schema üzerinden tablolara erişemedim. Güvenlik gerekçesiyle izin verilmeyen bu duruma kendimce remote hosttaki kullanıcının aynısını yerel sunucumda da tanımlayarak çözüm bulmak istedim ama nafile. (Microsoft benden uyanık çıktı anlayacağınız…) Bundan ötürü o gün nasılsa veriler remote hostta var ve okulda da internet bağlantısı var diyerek evden çıktım.

Okulda veritabanına erişemediğimizden dolayı projenin çalışır halini gösteremediğimiz için bu cuma bir kere daha gittik. (Yani dün) Verileri kendi bilgisayarıma bu defa aktarmıştım. (En azından aktardım sanıyordum) Fakat bu defa da tablolardaki constraint ‘ler aktarılmamıştı ve bundan ötürü çoğu veri ekleme işleminde hata oldu. Anlayacağınız rezillik dizboyuydu. Artık asistana bahane sunacak halim kalmamıştı.

Öte yandan proje arkadaşımın bilgisarındaki virüs yüzünden tüm gece boyunca yazdığı kodları Visual Studio kaydedememişti ve yaptığı değişiklikleri gösteremedik. (Muhtemelen şu anda bilgisayarını geri yüklemekle meşgüldür)

Bir de bütün bu olanların üstüne hocamızın asistanı benden saçma sapan şeyler isteyince (Burada şu da olsa burada bu da olsa şeklinde) bu haftasonumu da projeye feda etmek zorunda kaldım.

Tüm bunları yazmamın nedeni ise bloguma bir müddet yeni yazı ekleyemeyeceğim için şimdiden özür dilemek ve kendimi az da olsa haklı göstermek. Fakat proje sonlanınca (Yani 8 haziranda) hem proje sırasında öğrendiklerimi (SQL server ve proje gerçekleştirme sanatı ile ilgili) hem de Arden AGOPYAN tarafından davet edildiğim Bilişim Kongresi ‘nden izlenimlerimi paylaşacağım. Şimdilik benden bu kadar. Bir sonraki yazıya kadar sağlıcakla kalın…