Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » ASP » Ağaç kategori sstemine tersten bakış


Yanıt
 
LinkBack Seçenekler
Old 15.03.2008   #11 (permalink)
BYK
 
BYK's Avatar
 
Üyelik Tarihi: 08.04.2003
Yer: Ankara
Yaş: 19
Mesaj: 535
Görsel: 8
Re: Ağaç kategori sstemine tersten bakış

Bakın, çok yanlış bir yerden yaklaşıyorsunuz olaya

ADODB Recordset'in tanım, özellik ve kullanım amaçlarını biliyor ve zaten kullanıyorum. Filter özelliği ile ilgili zaten belirli bir kayıttan sonra filter'ın daha yavaş olacağını da söyledim.

Bahsettiğim konu temelde yaklaşımın yanlış olması. Yaptığınız işlem filter kullanmadan, sorgu çalıştırılarak ve while döngüsüyle de yapılabilir ve aslında bu yaklaşım daha doğrudur diyorum.

Veritabanı kullanımı, filtreleme vs. gibi konularda beni bilgisiz yerine koymadan önce dikkat çekmek istediğim noktayı daha dikkatli inceleyin lütfen. Tekrar söylüyorum tartıştığım nokta filter/where ikilemi değil özyinelemeli kullanım ve while kullanımı VE while kullandığınız zaman filter kullanmalısınız gibi bir dayatmam/koşulum/söylemim zaten yok.

Not: Ayrıca filter yerine locate kullanmak belki daha hızlı olabilir. BELKİ diyorum bakın ve bu tamamen yukarıda bahsettiğim yaklaşımdan bağımsız bir durum
__________________
Hayata gülümse!

Fotoğraf Sergim - www.fototonik.com/madbyk@gmail.com/Denemeler
BYK şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 15.03.2008   #12 (permalink)
absconder
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,874
Re: Ağaç kategori sstemine tersten bakış



amacım birşeyler öğrenmek tamamen.

Alıntı:
Bir de öneri, her döngüde veritabanında bir sorgu çalıştırırsan yavaşlama ya da çok yüklenme olabilir, bunun yerine bir kerede tüm kategorileri alıp WHERE ile yaptığın filtrelemeyi dönen kayıtlar arasında gezip kendin yaparsan daha hızlı olacaktır muhtemelen. En azından ben Delphi - Access ikilisini kullandığımda öyleydi.
burdan, verdiğim örneklerden farklı bir sonuç çıkaramadım ben.

sanırım, tüm veriyi recordset'e alıp bu veriler üzerinde döngüsel dolaşmaktan bahsetmiyorsunuz. çünkü bunun hızdaki farkı çok daha fazla olacaktır.

bir başka yol, eğer bir döngü kurup bu döngü içerisinde sorgulama yapmaksa niyetiniz, şunun cevabını merak ediyorum o zaman, ha while döngüsü içerisinde, ha recursive olarak veriyi çektiniz, sonuçta yine katman sayısı kadar sorgu gerekmeyecek mi? bunun recursive fonksiyondan ne farkı olacaktır? yoksa ben mi kaçırıyorum birşeyler?

örnek kod görmek isterim.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 16.03.2008   #13 (permalink)
sinan3
 
Üyelik Tarihi: 09.03.2008
Yer: mersin
Yaş: 20
Mesaj: 12
Re: Ağaç kategori sstemine tersten bakış

örnek kodları ben de bekliyorum 4 gözle heheheh
sinan3 şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.03.2008   #14 (permalink)
BYK
 
BYK's Avatar
 
Üyelik Tarihi: 08.04.2003
Yer: Ankara
Yaş: 19
Mesaj: 535
Görsel: 8
Re: Ağaç kategori sstemine tersten bakış

Asıl değindiğim nokta aynı sizin yaptığınız gibi her döngüde sorgu çalıştıran bir sistemdi ancak bu while döngüsüne dayanıyordu. Bunun daha doğru olmasının 2 sebebi var. Birinci sebep döngüsel bir mantığı kurup fonksiyonunu yazmanın özyinelemeli olanlara göre daha kolay olması ama asıl sebep olan ikinci sebep özyinelemeli yapıldığında bu işlemin fazladan bellek tüketmesi. Bu da şöyle oluyor, özyinelemeli sistemde birinci çağrı sonlanmadan hemen önce kendisine yeni bir çağrı yapıyor, ve bu çağrı da aynı işlemi en tepedeki düğüme gidene kadar yapıyor, en tepedeki düğüme ulaşıldığında aynı anda aktif olan n tane işlev örneği oluyor(instance). Yani çağrılan her işlevin değişkenleri bellekte ayrı ayrı yer kaplıyor çünkü bir işlevin içinde yapılan işlev çağrıları sonlanmadan o çağrıları yapan işlev de sonlanmaz. Halbuki döngüsel sistemde sadece 1 işlevin haracayacağı normal bellek miktarı harcanıyor.

Bir diğer yaklaşımım da düğüm bağlantı sayısı/kayıt sayısı oranı fazla olduğunda tüm kayıtları WHERE ifadesi kullanmadan çekip sonra onlar içinde locate metodu ile gezmenin daha hızlı olacğaıydı ki bunu da deneyerek gördüm zaten. İkincisi tecrübeye dayanıyor zaten Ama sizin de belirttiğiniz gibi 1000 kayıt ve üzerinde, hele ki en fazla 3-4 kademelik bir bağlanma varsa bu sistem daha yavaş olacaktır muhtemelen.
__________________
Hayata gülümse!

Fotoğraf Sergim - www.fototonik.com/madbyk@gmail.com/Denemeler
BYK şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.03.2008   #15 (permalink)
kuduk
 
Üyelik Tarihi: 28.04.2007
Yer: Ankara
Mesaj: 273
Re: Ağaç kategori sstemine tersten bakış

garip olsa da; veriyi oluştururken, her node için node seviyesini belirleyip, bunu veri tabanında ilişki ile birlikte tutmaya ne dersiniz?
kuduk şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.03.2008   #16 (permalink)
darkfaceofmoon
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Yaş: 24
Mesaj: 33
Re: Ağaç kategori sstemine tersten bakış

Konuyu yazdıktan sonra ben özyineleme yapıp her defasında execute ile geçici olarak sorunu çözdüm ancak buradaki tartışmayı da geç de olsa takip edip araya girmek istedim.

Fonsiyonun son halini bu şekle getirdim ve linksiz bir şekilde kullanıyorum ancak özyinelemelli fonksiyonlara olan yabanclığım nedeniyle while ve filter özelliklerinin nasıl olduğunu da öğrenmek isterim açıkçası.
Bu konudan bahseden arkadşalar örnek kod verebilirse çok sevinirim ve hakeza diğer arkadaşlar da öyle galiba.

Kod:
function CreateCatChain_2(strId)
	set rs=dbconn.execute("select ParentId,CatId from Categories where CatId='"&strId&"'")
	if not rs.eof then
		strChain=rs("CatId")
		if rs("ParentId")<>"0" then 
	 		strChain = CreateCatChain_2(rs("ParentId"))&"/"& strChain
		end if
	end if

	set rs = nothing 
	CreateCatChain_2 = strChain 
end function
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.03.2008   #17 (permalink)
absconder
 
absconder's Avatar
 
Üyelik Tarihi: 09.12.2000
Yer: istanbul
Yaş: 30
Mesaj: 1,874
Re: Ağaç kategori sstemine tersten bakış

Alıntı:
kuduk tarafından gönderilen mesaj: Mesajı Görüntüle
garip olsa da; veriyi oluştururken, her node için node seviyesini belirleyip, bunu veri tabanında ilişki ile birlikte tutmaya ne dersiniz?
bu, veritabanı normalizasyonu ile alakalı bir durum. kurduğunuz yapıya göre hızlı da sonuç verebilir yavaşta. elbette bir çözümdür.

daha önce bahsi geçen yöntemler de çözümdür tabii ki. ancak bu algorimanıza, alışkanlıklarınıza göre değişkenlik gösterebilir. kullandığınız dilin esnekliği de bu yöntemleri çoklayabilir.

özyinelemeli -recursive, türkçe kullanımını hala garipsiyorum - daha fazla kaynak kullanacağı ortadadır. ancak toplam performans açısından, hız, bellek kullanımına tercih edilebilir diye düşünüyorum. kaldı ki, ortalama bir server bu bellek kullanımını çok rahat kaldıracakken, hızı tercih etmek -bence- daha mantıklı olacaktır. özyinelemeli fonksiyonun kendini çağırmadan önce kullandığı kaynakları minimum seviyeye düşürerek kod optimizasyonu yapılabilir. -benim verdiğim kodda, recordset'i, fonksiyon kendini çağırmadan yoketmek kaynak kullanımını düşüreceği gibi.-

bunun yanında, kod optimizasyonu da maliyet içerisinde yer alır. çok uç noktalarda olmadıkça, donanım maliyeti yazılım optimizasyonu maliyetinden daha ucuzdur

sonuç olarak, programcı yöntemini kendi belirler ve uygular.
__________________
"oturduğum mahallenin yolları çamurluydu, boyalı ayakkabı giysem bile, o yollardan geçtikten sonra çamurlanmamaları mümkün değildi. hayatım da böyle." yılmaz güney
http://www.sipidik.com
absconder şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 17.03.2008   #18 (permalink)
BYK
 
BYK's Avatar
 
Üyelik Tarihi: 08.04.2003
Yer: Ankara
Yaş: 19
Mesaj: 535
Görsel: 8
Re: Ağaç kategori sstemine tersten bakış

Alıntı:
kuduk tarafından gönderilen mesaj: Mesajı Görüntüle
garip olsa da; veriyi oluştururken, her node için node seviyesini belirleyip, bunu veri tabanında ilişki ile birlikte tutmaya ne dersiniz?
İnan mesajımı yazdıktan sonra bunu düşünüp sonra da seviye sayısına göre aynı tabloyu farklı takma adlarla(alias) FROM kısmına ekleyerek dinamik sorgu oluşturan bir sistem düşündüm.

Alıntı:
absconder tarafından gönderilen mesaj: Mesajı Görüntüle
ancak toplam performans açısından, hız, bellek kullanımına tercih edilebilir diye düşünüyorum.
Düşünceniz doğru ancak bir kaç mesajdır anlatmaya çalıştığım şey, şu an üzerinde tartıştığımız yöntemde özyinelemeli yaklaşımın bir hız avantajı getirmemesi. Ama örneğin bir sıralama algoritması tasarladığınızda "merge sort" algoritması özyinelemeli bir şekilde diğer bir çok algoritmadan daha hızlı çalışıyor çünkü işlem sayısını azaltıyor. Halbuki şu anki örneğimizde derinlik n'se özyinelemeli algoritma da n işlem yapacak döngüsel algoritma da n işlem yapacak. Bu durumda elbette az bellek tüketen algoritmayı seçmek daha mantıklı

Alıntı:
darkfaceofmoon tarafından gönderilen mesaj: Mesajı Görüntüle
Fonsiyonun son halini bu şekle getirdim ve linksiz bir şekilde kullanıyorum ancak özyinelemelli fonksiyonlara olan yabanclığım nedeniyle while ve filter özelliklerinin nasıl olduğunu da öğrenmek isterim açıkçası.
Bu konudan bahseden arkadşalar örnek kod verebilirse çok sevinirim ve hakeza diğer arkadaşlar da öyle galiba.
absconder'in bir önceki sayfada verdiği karşılaştırmalı örnek kodlarda döngüsel olan içerisinde filter kullanmak yerine sorgu çalıştırdığınızda döngüsel algoritmaya geçmiş olacaksınız Tercihinize göre filter yerine locate işlevini kullanarak sonucun hızlanıp hızlanmadığına bakıp locate işlevli hale de getirebilirsiniz.

Not: "Özyinelemeli" terimini nereden duyduğumu hatırlamıyorum ancak "recursive" kavramını tam ve güzel olarak açıkladığını düşündüğüm için kullanmaya özen gösteriyorum. Uzun zaman "recursive" diyen kişilerin alışması elbette zaman alacaktır ancak daha anlaşılır olan dilimizdeki karşılığı dururken yabancı sözcük kullanmak hoşuma gitmiyor
__________________
Hayata gülümse!

Fotoğraf Sergim - www.fototonik.com/madbyk@gmail.com/Denemeler
BYK şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.03.2008   #19 (permalink)
darkfaceofmoon
 
Üyelik Tarihi: 11.02.2007
Yer: Ankara
Yaş: 24
Mesaj: 33
Re: Ağaç kategori sstemine tersten bakış

Alıntı:
absconder'in bir önceki sayfada verdiği karşılaştırmalı örnek kodlarda döngüsel olan içerisinde filter kullanmak yerine sorgu çalıştırdığınızda döngüsel algoritmaya geçmiş olacaksınız Tercihinize göre filter yerine locate işlevini kullanarak sonucun hızlanıp hızlanmadığına bakıp locate işlevli hale de getirebilirsiniz.
Ben mesajları okuduğumda aradan 2. sayfaya geçtiği için absconder'ın mesajını görmemişim, sonra diyorum ki kodlar nerede. Buradaki while ve filter ile yaklaşmak gerçekten çok mantıklı olmuş ama performns olarak ne getirir henüz inceleyemedim. Aslında hız olarak çok aşırı bir fark getirmeyeceği aşikar ancak hem fazla verinin olduğu hem de aynı sorgunun sayfanın hem solunda hem üstünde gibi farklı yerlerde birkaç kez çalışması gerekitği düşünülürse çok performans verimliliği sağlayacağı kesin.
Deneyip geri dönüş yapacağım buraya.

İlgi gösteren ve bu faydalı tartışmaya iştirak eden herkese teşekkürler
darkfaceofmoon şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.03.2008   #20 (permalink)
BYK
 
BYK's Avatar
 
Üyelik Tarihi: 08.04.2003
Yer: Ankara
Yaş: 19
Mesaj: 535
Görsel: 8
Re: Ağaç kategori sstemine tersten bakış

Madem deneyeceksin, filter yerine locate kullan. Onun daha hızlı olacağını düşünüyorum

Bir de daha önce belirttiğim gibi bu yöntemin getirisi toplamda az kategori ama çok kategori derinliği olduğunda ortaya çıkıyor. Mesela en fazla 2 ya da 3 seviye derinleşen ama toplamda 1000 kategoriye sahip bir sistemde daha yavaş çalışması muhtemel.
__________________
Hayata gülümse!

Fotoğraf Sergim - www.fototonik.com/madbyk@gmail.com/Denemeler
BYK şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Yanıt

Etiketler
agac , asp , kategori



 
Zoque'a hoşgeldiniz!
Zoque 27.02.1999 tarihinde yayın hayatına başlamış, paylaşıma dayalı bir oluşumdur. Tasarım, teknoloji, web, kültür ve sanat ana başlıkları altında bilgi paylaşımı ve benzer değerlere sahip katılımcıların birbirleriyle iletişime girmelerine imkan sağlar. "Az ama Öz" sloganından yola çıkarak, kaliteli ve nitelikli katılımı temel alır.

Saygın ve ciddi bir ortamda yardımlaşmak, haberleşmek, kendi bildiklerini diğer katılımcılarla paylaşmak isteyen, oluşumumuza düzenli katılımda bulunacağı inancını taşıyan konuklarımızı üye olmaya davet ediyoruz. [ » ]


Üye Girişi:

UslanmaM baktabul.com

En popüler ilk 100 etiket
Tag Cloud
acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css dijital div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online photoshop php problemi program programi reklam