Hasan Tonguç Yılmaz bey’in Turkcell bloğunda yeralan yazılarını izniyle paylaşıyor olacağız.Öncelikle tanımayanlar için Tonguç Yılmaz kimdir kendi yazılarından tanıyalım.
Liseyi Muğla / Fethiye Lisesi‘nde, Lisans eğitimini İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü (1994), İstanbul Bilgi Üniversitesi İşletme Yönetimi (Yüksek Lisans – 1999) ve Işık Üniversitesi Sosyal Bilimler Fakültesinde (2003) almıştır. 1996′da TekstilBank Bilgi İşlem bölümünde Veritabanı ve Sistem Yöneticisi olarak görev almıştır. 2000 yılından bu yana Turkcell’de ORACLE geliştiricisi olarak birçok görev almıştır ve 2009 Eylül ayında Turkcell – Gelir Odaklı İş Zekası takımında göreve başlamıştır. 2008′den beri Turkcell Veri madenciliği departmanında Oracle ETL geliştiricisi olarak görevine devam etmektedir.
Şimdide Başarılı Veritabanı İpuçlarına bir bakalım..
İster iş zekâsı veya bir veri ambarı projesi, ister müşteri ilişkileri veya bir kaynak yönetimi projesi olsun, konunun ana fikri bence veridir. Hazırlanan uygulamalar verinin manalandırılması için gerekeni yapmak için birer araçtır.
Veriler ise veritabanında yaşar, dolayısı ile başarılı bir veritabanı uygulaması hayata geçirmek için çalıştığınız veritabanının mimarisini ve özelliklerini doğru anlamak önemlidir.
Günümüz veritabanları lisansları içinde birçok hazır paket ile birlikte geliyorlar, müşterilerinizin isteklerini ve ihtiyaçlarını rekabete karşı hızla gerçekleştirmek için parasını ödediğiniz bu seçeneklerin neler olduğunun farkında olmak ve bu özellikleri kullanmak size önemli rekabet avantajı sağlar.
Yukarıdaki tespitlerimden yola çıkarak çalıştığınız veritabanına ve o veritabanının SQL diline hâkim olmanın önemine dört konu başlığı altında değinmek istiyorum:
1. Piyasadaki veritabanlarının sadece fiyatlandırmalarında değil, temel özelliklerinde bile ciddi farklılıklar gösterebileceğinin farkında olmanız gerekir.
Bu nedenle başarılı bir “veritabanı uygulaması”, veritabanı bağımsız araçlar ve yaklaşımlar ile bence gerçeklenemez. Veritabanı bağımsız uygulama geliştirme yaklaşımı, uygulamayı geliştiren şirketlerin daha fazla satış yapma potansiyeli olmasını desteklerken, müşterilerinin ciddi lisans maliyetleri ile sahip oldukları veritabanı kabiliyetleri ile ilgilenmez.
2. Verilerinizi işlemek için veritabanının ana dili olan SQL dilini anlamak ve verimli kullanmak gerekir. Dolayısı ile öncelikle SQL dilinin okullarda öğretildiği gibi sadece SELECT, UPDATE, DELETE ve INSERT cümlelerinden ibaret olmadığının farkında olmalısınız.
Bu farkındalık için bir süre okuma, araştırma ve geliştirme yapmanız gerekecek, bağlantısını verdiğim bu Türkçe video eğitim sizin Oracle SQL dili kabiliyetlerini anlamanız için iyi bir başlangıç olacak (teknik kısımların başlaması için 6,5 dakika kadar sabretmelisiniz ).
http://vimeo.com/2444390
3. Uygulamalarınızı tasarlarken ve gerçeklerken, veriyi işleyen kısımların satır-satır çalışmak yerine kümeler üzerinden çalışmasını sağlamalısınız. Tek bir SQL cümlesinin küme mantığı ile yapabileceği bir işi, hiç bir üst katman aracında daha verimli gerçekleyemezsiniz.
-- PL/SQL imleç: satır-satır işleme örneği
begin
for x in (select * from t1)
loop
insert into t2 (c1,...) values (x.c1,...);
end loop;
end;
-- SQL: küme işlemi örneği
insert into t2 ( c1, ... )
select c1, ....
from t1
where ....;
4. Uygulamalarınızı geliştirirken sorunlar yaşadığınızda veya sorularınız olduğunda kime güvenmelisiniz? Günümüzde Google üzerinden aratma yaparak bulamayacağımız cevap yok diyebiliriz, ama dönen bilgiler çok okunur olsalar da cidden güvenilir içeriğe sahipler denebilir mi?
Bu noktada sayılarla desteklenmiş olsa bile, hiç bir “uzman”ın size önerisini hemen satın almamanızı öneririm. Canlı ortamı temsil edecek nitelikteki kendi deneme ortamınızda(işletim sistemi sürümü, Oracle veritabanı sürümü, parametreleriniz, tablo ve dizin seçimleriniz, veri dağılımınız vs. size özeldir) önerilenleri mutlaka önce denemeli ve sonuçlarını çözümlemelisiniz.
Bu yazıda özetlemeye çalıştığım duruşum çevrenizdeki birçok kişi J2EE, SOA vs. gibi yeni teknolojileri karizmatik esas amaçlarmış gibi pozisyonlarken size eski hatta garip gelmiş olabilir, dolayısı ile tartışma potansiyeli yüksek olduğunu düşündüğüm bu yazımı sonlandırmadan önce siz okuyucuların değerli yorum ve tecrübelerini merakla beklediğimi belirtmek istiyorum.
Not: Aman SQL diline balık çizdirecek kadar kendinizi kaptırmayın, bu kadarı da cidden fazla
SQL> set pagesize 0
SQL> set linesize 3000
SQL> select y "&_DATE" from dual model return updated rows
2 dimension by (999 x) measures (lpad('x',200) y, 0 z)
3 rules iterate (80)
4 (
5 y[for x from -10 to 10 increment 1] order by x=y[cv(x)]
6 ||case when iteration_number<2 then 'X' when iteration_number<12 then
7 case when abs(cv(x))between 10-iteration_number and 11-iteration_numb
er then 'X' else ' ' end
8 when -.1+sqrt(power(iteration_number/3-14,2)+power(cv(x),2)) between 8.
5 and 10 then 'X'
9 when iteration_number=55 and cv(x)=-3 then 'O'
10 when iteration_number between 35 and 40 and cv(x)=3 then '/'
11 else ' '
12 end
13 )
14 order by x;
old 1: select y "&_DATE" from dual model return updated rows
new 1: select y "03/09/2009" from dual model return updated rows
XX XXXXXXXXX
XXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX XXXXXXXXX XXXXXXXXX
XX XX XXXXXXX XXXXXXX
XX XX XXXXXX XXXXXX
XX XX XXXXXX XXXXXX
XX XX XXXXX XXXXX
XX XX XXXX O XXXX
XX XX XXXX XXXX
XX XX XXXXX XXXXX
XX XXXXXXX XXXXX
XX XX XXXXX XXXXX
XX XX XXXX XXXX
XX XX XXXX ////// XXXX
XX XX XXXXX XXXXX
XX XX XXXXXX XXXXXX
XX XX XXXXXX XXXXXX
XX XX XXXXXXX XXXXXXX
XXXX XXXXXXXXX XXXXXXXXX
XXX XXXXXXXXXXXXXXXXXXXXXXXXXXX
XX XXXXXXXXX
21 rows selected.
SQL>
Kullanılan Kaynaklar
Good SQL Practices, Stephane Faroult
http://www.roughsea.com/vids/SQL_Best_Practices.html
Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions, Thomas Kyte
http://asktom.oracle.com
The Burden of Proof, Jonathan Lewis
http://www.google.com.tr/url?sa=t&source=web&ct=res&cd=1&url=http%3A%2F%2Fnocoug.org%2Fdownload%2F2003-08%2Fburden_of_proof.ppt&ei=TKifSrr8DIr-mwOenKTqDw&usg=AFQjCNGpiFj1zI49P74qUAFuiQadPq-Q8g&sig2=DXTke412DfL0ySavQl5NBg
Obfuscated SQL contest, Oracle Community – Database Developers Group
http://www.oraclecommunity.net/forum/topic/show?id=1988559%3ATopic%3A3577
http://blog.turkcell.com.tr/2009/09/18/veri-veritabani-basarili-veritabani-uygulamalari-icin-dort-oneri/