30 Kasım 2009 Pazartesi

Admission Control(Anlaşma Kontrolü)

Bu akşam coştum, üst üste üçüncü yazım. :)
Trafiği düzenleyen algoritmalardan Token Bucket ve Leaky Bucket'ı bir önceki yazımda anlatmıştım: http://gurkanalkan.blogspot.com/2009/11/leaky-bucket-vs-token-bucket.html

Şimdi de yine aynı amacı güden farklı bir yöntemden bahsedeyim. Bu yöntem connection oriented çalışmalıdır. Yani bir setup kurulur ve handshake yapılır. Adı üstünde, antlaşma esasına dayalı bir yöntem bu. Paketi gönderenin önerdiği bir antlaşmadır bu. Ben konuları bizim üniversitedeki slaytlardan sürdürüyorum. Orada açıklama yok bu arada, eğer bu konularla ilgiliyseniz, bence bir okuyun bunları. Anlaşmada belli parametreler belirlenir. Örneğin token bucket algoritması ile trafik idare edilecekse: token bucket oranı ve token bucket uzunluğu. Peak data rate olabilir. Yani, verinin en hızlı olabileceği oran. Maksimum paket uzunluğu ve minimum paket uzunluğu. Maksimumu anlamışsınızdır da, neden minimum da anlaşmada diye düşündünüz mü acaba? Sebepleri: Boşuna trafiğin işgal edilmek istenmemesi; kullanılan ortamın sinyal taşıma hızına uygun olmasının istenmesi; paket çok küçüldüğünde hissetme süresinin uzamasından mütevellit, bolca collision oluşması. En önemlisi de sonuncusu zaten. Bu sebepten Minimum paket uzunluğu da anlaşmada belirtilir.

Bu kısa bir konuydu arkadaşlar. Bu gece burada bitti. :) Burhan Altıntop başlamış, o yüzden: ben aslında yohuuuuuum. :D

Leaky Bucket vs. Token Bucket

Bir kez daha merhaba herkese. Az önce Avrupa Yakası'nın bomba bir bölümünün gösterileceğini öğrendim ve o gazla bir yazı daha yazayım dedim. :)

Leaky Bucket Algorithm(Sızdıran Kova Algoritması) ile başlayalım.
Leaky Bucket Algoritması
Resimde de gördüğünüz üzere ortada bir kova olduğunu düşünün. Su, kovanın altındaki delikten sabit bir hızla akmakta. Buradaki önemli nokta, ne kadar su olursa olsun, veya network diliyle konuşalım, ne kadar paket gelirse gelsin, sabit hızda paket aşağı geçer.
Sağdaki resme bakarsanız, istasayondan(host computer) gelen paketler son derece düzensiz bir şekilde akmakta. Ancak kovaya gelen paketler, yukarıda da belirttiğim üzere, sabit hızla akacağından, kovanın altındaki paketlerin akışının son derece düzenli olduğunu görmektesiniz.
Kova doluyken ne olacak peki? Evet, orada patlıyor bu algoritma. :) Kova dolu olduğunda paket gelirse, o gelen paketler eşekler cennetini boylar. :) Kaybolur o veriler artık.
Host computer, her bir saat vuruşunda [veya Ahmet Sertbaş hocamızın deyimiyle, her clock cycle'da :) ], ağa 1 paket gönderebilir. Ağda paketler kuyruk mantığındadır. Ancak paketin boyu büyükse örneğin, her saat vuruşunda belli miktarda veri gönderilir, komple paket gönderilemez.

Token Bucket Algorithm(Jeton[Halka] Tutan Kova Algoritması) ise daha farklı mantıktadır. Bunda hiç veri kaybı olmadan, akış miktarının arttırılması suretiyle işleyiş sağlanıyor. Resme bakın siz önce en iyisi. :)
Token Bucket Algoritması
Token nedir peki? Bunu anladığınızda olayın büyük kısmı bitiyor. :) Token'ı, kovanın içinde açılan bir alan gibi düşünün arkadaşlar. 1 token varsa, o kova 1 paketi alabilir demektir. Yani kova, token sayısı kadar paketi bünyesinde barındırabiliyor.
Her bir saat vuruşunda kovaya bir token ekleniyor. Yani bu sayede bir paket daha alabilecek kapasiteye geliyor. Resme bakın tekrar(sol tarafa). 4 paket geliyor kovaya. 3 token'ı var kovanın. Haliyle 1'ini alamayacak. Sağ tarafa dikkat buyurun şimdi de, 3 paket kovadan çıkmış ancak diğer paket hala kuyrukta bekliyor. Bu arada kova paketi atarken, token da yok ediliyor. Kullanılan token'ı yok ediyor yani. Bunda hız sabit falan olmadığından, host, birçok paketi aynı anda gönderebilir.
Token sıfır olursa ne olacak peki? Haliyle paket alamaz. Token'ı azalınca, kova host'a haber salar. Böylece gönderimi durdurmasını sağlar. Eğer bunu host'a değil de, router'a bildirseydi ne olurdu? Haber vermesinden evvel yola çıkan paketler kaybolurdu, pek tabidir ki.

Bu konu da burada bitti. Bugün yazmadığım günlerin acısını çıkarıyorum.
Bu arada Los Galacticos'a ne olduu? :D Top oynamadan 2. sıraya kadar çıktık. Haftaya da lideriz, yazın bir yere. :D Fena gaza geldik. :)
Görüşürüz..

Oracle Veritabanı Mimarisi - SGA&PGA

Merhaba herkese. Uzun zaman sonra yazma fırsatım oldu.

Siteye bir süredir elle tutulur bir şeyler yazamıyordum. İş yerinde zaten günler yorucu geçiyor ve üstüne teknik konularla uğraşmak istemedim açıkçası. :) Bir SQL Server'cı olarak bir süredir Oracle(Toad ile) kullanıyorum. Mimarisi hakkında bir yazı yazmak istedim. Uyguladıklarım ve öğrendiklerim ışığında hoş bir yazı olacak sanıyorum, çünkü gördüğüm kadarıyla netteki Türkçe yazılar genelde birbirlerinin aynısı ve anlamsız çevirilerden ibaret. Sıkmadan yazmak istiyorum her şeyden önce. :)

Oracle'ın aslında güçlü olmasını sağlayan en önemli konulardan birisi, belki de en önemlisi, memory management konusudur. Hafıza Yönetimi. Oracle'da iki temel hafıza bileşeni vardır:

  • SGA(System Global Area)

  • PGA(Program Global Area)


Anlatmaya SGA ile başlayalım isterseniz. Anlatımlardan sonra da kısa bir karşılaştırma yaparız.

SGA, alt alanlara bölünmüş bir yapıdır. Shared Pool(Library Cache-Data Dictionary Cache-Result Cache), Buffer Cache, Large Pool, Redo Log Buffer, Java Pool ve Stream Pool.

  • Library Cache: Her PL/SQL ifadesi çalıştığında bir çalışma planı(execution plan) oluşur. Exec planın tutulduğu yerdir burası. Plan kısmını şöyle anlatayım: Burdan işe gitmem için 6 farklı yol(plan) var. Bu planlar içinde en az masraflısını çıkartır bize Optimizer(bunun ne olduğuna takılmayın, sonraski yazılarda yazarım bunu da). Dikkat edin, en hızlı plan demedim, en masrafsız plan dedim. İşe helikopterle gidersem en hızlısı olur şüphesiz ama çok çok masraflı olur. Bu yüzden eğer kullandıysanız daha önce, indeks yaratsanız da bazen yarattığınız indeks kullanılmayabiliniyor. Ayrıca bu exec plan aşaması, bir SQL ifadesi çalıştığında en çok masraf yapılan aşamadır.

  • Data Dictionary Cache: Hak kontrolü, tablo kontrolü, istatistik kontrolü vs yapar. Hepsine bakar ve bilgileri cache'e atar.

  • Result Cache: Sadece sonuç tutulur bu alanda. Lookup tabloları içindir daha ziyade. 11g ile geldi.

  • Buffer Cache: Data file(veri dosyaları)'larından okunan data bloklarının kopyasını tutar. Yani bildiğiniz veri var bunda. :) İlk kez bir sql ifadesi çalıştığında, server process bir data bloğu ister ve bu bloğun buffer cache'de olup olmadığına bakar. Eğer varsa(cache hit), direkt olarak bellekten okur. Diske gitmez. Bellekten okumak mantıksal bir iştir; diske gitmek ise fiziksel bir iştir. Diske gitmek çok zaman kaybettirir. Eğer data bloğu buffer cache'te yoksa(cache miss), disteki data file'lardan data bloğunu alır, buffer cache'e koyar bir kopyasını.

  • Large Pool: Opsiyonel bir alandır. Paralel işlerde, RMAN(Recovery Manager) işlerinde, Oracle Mimarisinde değişiklik yapıldığında vs. kullanılabilir.

  • Redo Log Buffer: Veritabanına yapılan değişikliklerin bilgisini tutan buffer'dır. Bu bilgi Redo Entry'lerde tutulur. Veritabanının yeniden yapılandırılması, düzenlenmesi vs. gerektiğinde bu entry'lerdeki bilgi kullanılır. Redo entry'leri, server process'leri tarafından redo log buffer'a kopyalanır. Buffer'da sıralı bir şekilde tutulurlar. LGWR(log writer, I/O'dan sorumlu bir background process'i) de, redo log buffer'daki entry'leri, diskteki aktif redo log dosyasına yazar. Ne zaman yazacağı kısmı biraz farklı. Oracle'daki amcalar şöyle diyor: "Log Buffer'ın 3'te 1'i dolduğunda; LGWR'ye COMMIT veya ROLLBACK çakılırsa; DBWR, LGWR'ye yazmasını söylerse", LGWR de yazıyormuş. :) Makinenizdeki CPU sayısına bağlı olarak da, birden fazla redo log dosyanız olabilir.

  • Java Pool: Bunu hiç kullanmadım. Java'ya özel durumlarda kullanıldığını duymuştum.(Java Virtual Machine'de veriler olduğunda, Java kodları olduğunda vs.)

  • Stream Pool: Oracle streamleri tarafından kullanılır bu alan. Oracle'ın streamleri için bellekte yer açarlar. Replikasyon ürünüdür. Nerede lazım olur derseniz; işyerinizdeki sunucunuzun birebir kopyasını başka yere taşımak istediğinizde, Stream Pool ile işiniz var demektir. ;)


SGA'lar bitti arkadaşlar. Ufaktan PGA'lara dalalım artık. :)

PGA'da herkese özel bir bellek alanı verilir. Yani bir session kavramı söz konusu. Bunun yanında, Cursor bilgisi de mevcuttur. Örneğin siz bir silme(delete) işlemi yaptığınızda da cursor açılıyor. Ancak otomatik olarak açıldığı gibi, otomatik olarak da kapanıyor. Fakat siz kendi cursor'unuzu yazarsanız, kaydı bellekte tutulur. Ta ki siz onu kapatıncaya kadar. PGA'daki bir diğer kavram da SQL'lerin alanları. Bunlar: Sort alanı, Hash Join alanı, Bitmap Alanı. Sort'tan kastımız group by, order by gibi işlemler. Hash Join dediğim ise şu: 2 tane çok büyük tablonuz olduğunu düşünün. Bunları 50'şer 50'şer join etmenizdir. BitMap alanı ise, farklılığı az olan şeylerde kullanılan bir alandır. Bir select attığınızda kayıtların %50si gelebilmeli örneğin. Cinsiyet kavramı mesela BitMap'e çok uygun. 0,1 mantıksal işlemleri de aynı şekilde... PGA için toplam bellek alanı PGA_AGGREGATE_TARGET parametresi ile verilebilir.

Genel anlamda SGA ve PGA'ların ne oldukları konusunda artık fikriniz var tahmin ediyorum. Kıyaslama yapalım kısaca şimdi. OLETP çalışıyorsanız(örneğin bankacılık, para geldi-gitti vs. çok hareketli), memory'yi %80 SGA - %20 PGA olacak şekilde ayarlamalısınız. Datawarehouse çalışıyorsanız, PGA'ya yüklenmeniz gerekecektir. Keza bir raporlama yapıyorsanız bizim gibi, %50 SGA - %50 PGA uygun olabilir sisteminize. Yani işin özü; insert, update, delete önemliyse SGA çok önemlidir. Ancak select önemliyse, PGA baskındır.

10g'de SGA ve PGA için toplam bellek alanını veriyordun. Yani her ikisine de elinizle ayrı ayrı bellek alanı veriyorsunuz. Ancak kendi içlerinde Oracle onları otomatik olarak yönetiyordu.
11g'de ise, tek bir tane bellek alanı veriyorsunuz. SGA ve PGA'yı otomatik olarak arttırıp azaltabiliyorsunuz.

Bu yazı burada biter. Umarım açıklayıcı olmuştur. :) Sonra görüşürüz..

22 Kasım 2009 Pazar

Beşiktaşımız:3-0:Fener

Güzel bir pazar akşamından merhaba herkese. Dünük maç hakkında kısa bir yazı yazayım dedim. :)

Öncelikle ezeli rakip olmasından dolayı önem verilen bu maçın, aslında sıradan bir Anadolu takımıyla yaptığımız maçlardan farkı yoktu. En rahat maçımızı oynadık. Kötü bir kadromuz var, bunun farkındayım. Ama buna rağmen zirve yarışına ortak olduk yine. Ligin kalitesini siz düşünün artık. :)

Maçta uzaktan attıkları 2 şut dışında pozisyonu olmayan fenerli arkadaşlarım, bugün hakeme yüklendiler hep. :) Önce bir kendi oyunlarına baksalar daha iyi olacak. Üstelik hakemlik bir şey de yoktu pek. Son gol ofsayttı, kabul. 80 küsürde 3. golün ofsayt olması skora değiştirmezdi hiç şüphesiz. Skoru değiştiren hatalar Bünyamin Gezer, Yunus Yıldırım gibi hakemlerin(!), Kadıköy'de bizi 10 kişi bırakmaları, uydurma penaltılar vermeleridir. Bunlar direkt skora yöneliktir. Efendim deniyor ki Gökhan düşürülmüş... Yuh artık. O pozisyona penaltıyı çalın, sonra Avrupa'da niye başarısız diye ağlayın sürekli. Rıdvan Dilmen, sinirden, dün yorumlarında bayağı taraflıydı. Hakem bizi hoşgörmüşmüş. Yenilgiyi kabullenip, tebrik etmesini bilmek de büyüklüktür. Nerdeee...

Ama bu bizi aldatmasın. Berbat oynuyoruz, berbat yönetiliyoruz... Özellikle Y.D'nin bir an önce onurlu bir hareketle adaylıktan çekilmesini bekliyorum. Mazlumları oynamasın hiç. Şeref tribününde taraftara ettiği küfürleri unutmadık. Ama ne hikmetse küfür etmeyen insanlar da ceza yemiş. Tribün terörü bitirilecekmiş. Tribün terörü Diyarbakırda yaşandı, Bursa'da yaşandı, Kadıköy'de yaşandı... Irkçılık da dahil olmak üzere Samiyen'de yaşandı. Önce bir onları görün. Protesto edenlere saldırın; onlar kızıp laf etsin; siz de onlara ağır cevaplar verin. Gidin bir de tüm suçu onlara yükleyin. Ağır kelimeleri kendime saklıyorum ama bunu düşmanın yapmaz. Y.D'nin skandallarla dolu döneminin son bulmasını temenni ediyorum.

Yeter Demirören Yeter!!..

Az kalsın unutuyorduum. Şeref Yalçın'a da bir sözümüz var. Taraftarın yaptığı tutarlılıktır, kararlılıktır. Ucuzluk olan ise: Christiano Ronaldo transferini gölgede bırakacak transfer yapacağız deyip, Tabata'yı almaktır. Yüzsüzlük olan: Tabata'nın tüm bonservisini ben karşılayacağım deyip, sorumlu olduğu şubenin parasını vermemektir. Herkes haddini bilecek. Beşiktaş kimsenin babasının malı değil.

Forza Beşiktaş!!..

14 Kasım 2009 Cumartesi

Ordan Burdan

İyi akşamlar herkese.

Yorucu bir haftanın tam gaz ortasında bu yazıyı yazmam bir mucize olsa gerek. 3 günlük şirket eğitimini de yarın en nihayetinde tamamlıyoruz. Maalesef tatil yapamadan yoğun bir haftya girmiş olacağız. Ancak Tuning konusundaki müthiş anlatımını ve tavsiyelerini dinlemekten zevk aldığım Sayın Zekeriya Beşiroğlu'na çok teşekkür etmek istiyorum. Sorguların maliyetlerini bu denli hesaba katmak hiç bir zaman aklıma gelmezdi doğrusu.

Bunun dışında ilk kez yarın basket maçımıza gidemeyeceğim. Maalesef eğitimin süresi oldukça uzun, maç da bu zaman aralığının içinde kalıyor. Bu arada, haftaya Nefes filmine gitmek isteyen varsa, benimle irtibata geçsin. Ben gitmeyi düşünüyorum. :)

Sırf yazı yazmak için girdim. Bu ay pek uğrayamamışım. :) Yeni yazı da yakındır(!). Görüşmek üzere...

Dip Not: Tuğrul, şu siteni güncelle artık. :)

10 Kasım 2009 Salı

Sen Uyudun Asılanlar Dirildi...

Yine bir 10 Kasım geldi ve geçiyor. İlkokuldan beri, hatta daha öncesinde de, 10 Kasım geldiğinde hep bir hüzün kaplamıştır bedenimi. Anlamı çok fazlaydı. Ülkemi kurtaran kahramanımızı kaybettiğimiz gün idi. Hala da o günlerdeyim...

Sırf bu yazıyı yazmak için siteye girdim. Sabah gördüğüm manzara içimde tarifsiz bir öfkeye sebebiyet verdi. Sirenler çaldığında, Ulu Önder'imize saygı duruşunda bulunuruz normalinde. Ancak koskoca yolda 5 kişi saygı duruşuna katıldık. Ne arabalar durdu, ne diğer insanlar umursadı. Eşek kadar lise öğrencileri, kendilerine bu ülkeyi miras bırakan Önder'ini önemsemiyordu. Ellerinde cep telefonları, birbirlerine mesajlarını gösterip kişnediler. Orta yaşlı herifler, alabora olmuş gemiler gibi sallana sallana gittiler. Otobüs şoförleri tam gaz devam etti. Sanki sıradan bir salı günü gibi, kimse bir şey yapmadı.

Sürekli Atamızın devrimlerine laf edenleri koruyan, Atamızın direkt şahsına küfür eden densizleri basit bir özürle cezalandıran, resimlerini kaldırmaya çalışanlar olduğu sürece bunlar çok normal. Eğitim o kadar yerlerde ki... Tabi ya, çocuklar İngiltere'den gelen kitaplardan Mr&Mrs Brown'u öğrensin!!.. Tarih dersleri katledilmiş, kimin uğrunda... Türkçe yok olmuş, kültür eriyor adeta... Aman canım ne önemi var, How are you, I'm fine... Bunu biliyor mu çocuklar, tamamdır o zaman. Araç olması gereken şeyler, amaç oluvermiş. O zaman bunlara sebep olanlara, anladıkları dilde seslenelim: Fuck you!

Bunun hesabı sorulacaktır, emin olun sorulacak. Atilla İlhan çok güzel söylemiş:
Yaptıklarını yıkıyorlar Mustafa Kemal
Hani bir vakitler Kubilay'ı kestiler
Çün buyurdun kesenleri astılar
Sen uyudun asılanlar dirildi
Mustafa'm, Mustafa Kemal'im...

Atam, izindeyiM.