Veritabanında 300 bin kayıt olsun. Yada abartalım, 1 milyon kayıt. Bu kayıtların içinden sadece 1 tanesi geldiğinde bir kod yığını çalıştıracağız. Bu resmen hammallık. Sürekli ; if kayıt. id 'istenilen' şeklinde kontrol ettirmek gerekiyor. Kaba taslak ; 1 milyonda 1 şansımız var. Bunun için sürekli kotnroller gerek . bunun yerine sadece o olduğunda yapılacak birşey var mı? Daha rahat anlatmak için ; Veritabanına, programlama kodu ekleyebileceğinizi düşünün. Atıyorum mysql 'de 1 milyon veri arasında bir tanesine komutu gmdük ve bunu programda çektğimizde çalıştırıp ; ekrana hi çıktısını bastırdık. Olayın zü bu. Bunun gibi birşey var mı? . NE için lazım? Hiçbirşey için lazım değil, sadece kafamı kurcalıyor, fantazi olsun dedim. Ki byle birşey varsa bir çok yerde işime yarar. Kodları veritabanına eklemek gibi birşey aslında.

zumsuk hacım eğer yanlış anlamadıysam sen bizim c# da kullandıımız object oriented mantığını sql için uyarlamak istiyorsun:) Ama byle bir şey var mı bilmiyorum :) Paslanmış bir uygulama geliştirici.. #AnalistŞart

Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. hocam try-catch olur ; başka birşey olur mantığı anlatıyorum. Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için syledim. tek if, tek try-catch daha direkt sonuç sağlıyor. Burada nemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak.

yada şyle anlatayım bu mantık daha kolay olacak ; 4 modul olsun ; blog, istatistik, hakkında, iletişim site.com/?module=istatistik diyordum nceden. switch Şeklinde ekleme yapıyordum. Teker teker byle uğraşmak yerine ; $file = './modul/'. $_GET .'. php'; if(file_exists require $file; else echo 'yok byle modul'; yazarak tonla uğraştan kurtuldum. Modul klasrüne moduladı. php ekliyorum, modul adı neyse. php hali ve class adı o oluyor ve sorunu çzüyorum. Yani 40 modül için 40 if/else, switch/case ve her seferinde kod düzeltmesine son verdim. Tek if/else'te olayı hallediyorum. Bir nevi bunun gibi birşey.

hocam kayıtın hepsini indirmiyorum ; 300 farklı işlemim olsun, 5 bin kayıtım olsun. kullanıcı bir sayfaya tıklayacak ve 5 bin kayıt arasından 1 kayıdı çekecek. Fakat bu 1 kayıt için 300 if/else yada duruma gre switch/case ile kontrol edecek. Bunun yerine o kayıt geldiğinde birşeyler olmalı. Bunun en net açıklanabilir şekli : kayıdın içinde kod çalıştırabildiğimizi düşünelim. Kayıtın içinde zel kod bloğu olsun yani. Bu şekilde düşün. Db de kod saklayıp çağırmak çok ilginç bir düşünce, byle bir ihtiyaç sana yanlış düşünmenden kaynaklanıyor işte. Normalde byle bir duruma hiç bir ihtiyacın olmaz. Object-oriented programming ve Object-relational mapping olaylarını incelemelisin. -- Yazılım içinde 300 farklı işlem yapacaksan o 300 farklı işlemi de yazacaksın zaten bir şekilde, bunun validationu var error loggingi var exception handlingi var, var da var yani eğer profesyonel bir iş yapıyorsan o kodlar yazılacak. Koddan o şekilde kaçman senin için yararlı değil zararlı olur, oldu hiç kod yazmayalım, sayfadan javascriptle sql servera bağlanıp istek yapalım o da içinden kod çalıştırıp bize sonuç versin :D Bu kadar olmasa da buna yakın mevzulara olanak tanıyan patternlar var yine de, ama onun için de full oop bir yapıya girişmen gerekli tabii ki. Ehl-i Byte

mssql de trigger var da bu şekilde kullanabilir misin bilmiyorum Kasnak yuvarlandı elek oldu, eski orospular melek oldu...

Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. Ehl-i Byte

yada şyle anlatayım bu mantık daha kolay olacak ; 4 modul olsun ; blog, istatistik, hakkında, iletişim site.com/?module=istatistik diyordum nceden. switch Şeklinde ekleme yapıyordum. Teker teker byle uğraşmak yerine ; $file = './modul/'. $_GET .'. php'; if(file_exists require $file; else echo 'yok byle modul'; yazarak tonla uğraştan kurtuldum. Modul klasrüne moduladı. php ekliyorum, modul adı neyse. php hali ve class adı o oluyor ve sorunu çzüyorum. Yani 40 modül için 40 if/else, switch/case ve her seferinde kod düzeltmesine son verdim. Tek if/else'te olayı hallediyorum. Bir nevi bunun gibi birşey. file_exists ile tekrar kontrol ediyorsun bütün dosyaları senine dediğin tabirle if kullanarak. onun yerine direk import edip try/catch bloklarıyla hata yakalayabilirsin. . . .. . ... .

Yanlış anlamadıysam senin düşüncen: "300 tane if komutu çalıştırmak server'ı yorar. Bu yüzden farklı bir sistem olabilir mi?" Çok fazla yormayacağını düşündüğüm halde yinede farklı bir neri getireyim: Database'de 2-3 kolon daha açarak gereken bilgileri oraya al. rnek: İnsanlar tablosundan sadece cinsiyet="kadın" olarak çekip gz, saç, ten renklerini if ile karşılaştırmak yerine db'ye gz, saç, ten olarak kolon ekle. cinsiyet="kadin" AND gz="mavi" AND saç="sarı" diye sorgu yap. Eğer 300tane if ile server yorulcaksa bile byle bir sorgu ile daha az yorulur. Seninde kullanman gerekn if'ler 3 kat azalır, server 3 kat daha az yorulur. If my calculations are correct, when this baby hits eighty-eight miles per hour... you"re gonna see some serious shit.

şu şekilde bir rnekte mantık aramamak lazım bence. Neden diye soracak olursan hangi işlemde byle bir yapı kullanılabilinir ki? 3 milyon veri içerisinde tek tek if ile kontrol eden bir yapı olmaz yani, mantığa bu ters gelir gibime geliyor byle bir yapıda atıyorum adam girişde idyi sessiona atar if $_SESSION 537 der 3 milyon veri içerisinde tek tek ifden kurtulmuş olur yani sql de where ile nokta atışı yapıp session ile değerler saklandıkdan sonra ne diye kastırmanın anlamı var ki Yoksa ben mi yanlış anladım? id - name 40 - zumsuk537 - sandman80435 - craft2987765 - SpArk - Şimdi normalde veritabanında code bloğu olmadığını varsayarsak ; // gerekli işlemlerle veri çektik $person değişkenine atadık if( $person '40' ) exit;elseif( $person '537' ) elseif( $person '80435' ) $language ;elseif( $person '2987765' )

View ya da Stored Procedure ya da Function üçlüsünden herhangi biriyle her türlü işini halledebilirsin, yazılım tarafında data ayıklamaya uğraşmak mantıksız zaten. Bu üçüyle de olmayacak birşey düşünüyorsan ilk yapman gereken şey algoritmanı gzden geçirmen olur. Kaldı ki yazılım içersinde sql cümleciği yazan kaldı mı hala? Ehl-i Byte

soru çok mantıksız olmuş hiçbir şey anlaşılmıyor, iki stringi veya integer'ı karşılaştırmak zannettiğin kadar zor bir işlem değil cpu için. nosql dediğin şey neredeyse rdbms kadar eski. anlattığından anladığım kadarıyla da map/reduce sistemlerine bi bak, mongodb'de var sanırım o ayarda birşey, bütün satırları verdiğin fonksiyon ile map etmene sonra da reduce fonksiyonuyla map'dan dnen sonuçlardan toplam bir değer elde etmene yarıyor. . . .. . ... .

http://en. wikipedia. org/wiki/Relational_database bunu mu demek istedin? ayrıca neden if kullandığını anlamadım veritabanından where ile çekebilirsin diye düşünüyorum. Hocam elde olan bir sorun değil. Sadece fantazi yapıyorum. Başıma falan gelmedi. sql sorgusuyla bir sürü şey hallediliyor yada condition hallediyor. Dediğim gibi sadece aklıma soru takıldı ; fantazi yapıyorum. Byle birşey olur mu, olursa nasıl çzülür falan. Fakat ; mantıken olmaz gibi . yani rnek falan bulsam zaten paylaşıcam. yani rnekte yok ; muhtemelen byle birşeyde yok. Sadece mantık kısmından bahsediyorum. Olur mu, olursa nasıl olur vs..

trampfd bunu yazdı zumsuk bunu yazdı trampfd bunu yazdı Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. hocam try-catch olur ; başka birşey olur mantığı anlatıyorum. Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için syledim. tek if, tek try-catch daha direkt sonuç sağlıyor. Burada nemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak. Bir sürü sorgu ve milyon kere dnen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun. Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer. server-side diller konusunda uzman olmayan biri olarak zumsuk şyle dedi diye anladım : "Bir koşul çalıştırdığımız zaman sistem bu koşula uyuyor mu diye tüm verilere bakacak, bu da yorucu bir işlem". Mantıken byle, eşleşen kayıt bulmak için aramak gerek, arama buradaki sıkıntı. Onun yerine kolayca ulaşmak istiyor.trampfd senin yazını okurken aklıma gelen ise "Veritabanı motorları zaten kaybı nleyen bir algoritmaya sahip sen bunu aşıyorsan yanlış birşey yapıyorsun" mu? Yeah man. Database serverların amacı zaten o işlerle ilgilenmek, verini saklayıp sana istediğin zaman istediğin kadarını istediğin şekilde vermek. Tüm datayı çekip içinde ifle forla dnecek olsak dataları filesystem da bir file içinde saklıyor olurduk ve database serverlar olmazdı. Ehl-i Byte

http://en. wikipedia. org/wiki/Relational_database bunu mu demek istedin? ayrıca neden if kullandığını anlamadım veritabanından where ile çekebilirsin diye düşünüyorum. Si vis pacem para bellum.

hacılar konuyla alakasız olacak ama nosql olayını paylaşmış bir arkadaş. Benim sunucuya müdahalem sz konusu değil. Çok fazla kullanılan verileri xml de tutsam acaba o başka kişiler tarafından değiştirilebilirmi bunu merak ediyorum?

Çok büyük sayıda veri veya karmaşık veri ilişkilerinde verinin türüne gre artık NoSQL çzümlerine gidiliyor veya rol bazlı database kullanabilirsiniz. Mühendis kahveyi projeye dnüştüren bir insan evladıdır.

Anlattığını anlamak çok güç bence, DB deki trigger mantığını sezdim biraz fakat Select komutuna bildiğim kadarıyla yazılmıyor trigger ancak before/after inserttür delete update filan galiba sadece. Belki DB den veri okumayı "store procedure" üzerinden yaparsan, yine IF lerle olacak ama DB tarafında yaparsın galiba?

şerefsizim aklıma geldiydi (: FAcebook'ta Mark Zückerberg'in like olayından gelmişti. Bu herif id'lere bakıp if diyerek yapıyor olamaz demiştim. ARa ara düşünüyordum. Şimdiki proje için ; xml tarzında birşey yapayım dedim ama kod güvenliği için nasıl birşey olur karar veremedim. Bugün data structure dersinde, structure yapılarına bakarken aklıma javascript ile yapılabilir diye düşündüm. MErak edenlere ; http://www.ermantaylan.com/blog/2011/07/nosql-nedir-ne-zaman-kullanilmali-nasil-calisiyor/ http://devveri.com/nosql-nedir http://www.erenguvercin.com/2012/11/nosql-nedir.html

trampfd bunu yazdı Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. hocam try-catch olur ; başka birşey olur mantığı anlatıyorum. Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için syledim. tek if, tek try-catch daha direkt sonuç sağlıyor. Burada nemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak. Bir sürü sorgu ve milyon kere dnen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun. Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer. Ehl-i Byte

zumsuk hacım eğer yanlış anlamadıysam sen bizim c# da kullandıımız object oriented mantığını sql için uyarlamak istiyorsun:) Ama byle bir şey var mı bilmiyorum :) benim de anladığım bu. c# tarafında linq to sql ve entity framework yapıları, tek bir query içerisinde bunları yapmayı sağlıyor. rnek : http://b1302.hizliresim.com/16/v/kk7hh. png Bylece onlarca parametre alan ve o parametrelere gre farklı sonuçlar dndüren bir sorguyu bir kez de yazabilirsin. Yukarı da ki sorgu da 13 parametrenin hiçbirini de almayabilir, bir blümüne gre de şekillenebilir, hepsine gre de şekillenebilir. attackatak tarafından 27/Şub/13 10:47 tarihinde düzenlenmiştir

zumsuk bunu yazdı trampfd bunu yazdı Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. hocam try-catch olur ; başka birşey olur mantığı anlatıyorum. Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için syledim. tek if, tek try-catch daha direkt sonuç sağlıyor. Burada nemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak. Bir sürü sorgu ve milyon kere dnen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun. Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer. server-side diller konusunda uzman olmayan biri olarak zumsuk şyle dedi diye anladım : "Bir koşul çalıştırdığımız zaman sistem bu koşula uyuyor mu diye tüm verilere bakacak, bu da yorucu bir işlem". Mantıken byle, eşleşen kayıt bulmak için aramak gerek, arama buradaki sıkıntı. Onun yerine kolayca ulaşmak istiyor.trampfd senin yazını okurken aklıma gelen ise "Veritabanı motorları zaten kaybı nleyen bir algoritmaya sahip sen bunu aşıyorsan yanlış birşey yapıyorsun" mu?

300 farklı işlemin hepsi fonksiyon olsa tabloda fonksiyon isimleri ve parametreleri tutulsa yle çağırılsa if elseden daha pratik olmuş olur başka bi yol gelemedi aklıma Bittik biz bittik

var, specification pattern. http://devlicio.us/blogs/jeff_perrin/archive/2006/12/13/the-specification-pattern.aspx burdan bak güzel anlatmış. adamın yaptığı rnek senn verdiğin rneğe benzemior ama kafanı çalıştırıp uyarlıyabilirsin.

Anlattığını anlamak çok güç bence, DB deki trigger mantığını sezdim biraz fakat Select komutuna bildiğim kadarıyla yazılmıyor trigger ancak before/after inserttür delete update filan galiba sadece. Belki DB den veri okumayı "store procedure" üzerinden yaparsan, yine IF lerle olacak ama DB tarafında yaparsın galiba? anlatması zor. Maalesef daha nce araştırdım ama uygun keywordleri bile bulamadım. şyle anlatayım Veritabanı(3 milyon veir var diyelim, 4 tanesi için işlem yaptırıcaz) ; id - name 40 - zumsuk537 - sandman80435 - craft2987765 - SpArk - Şimdi normalde veritabanında code bloğu olmadığını varsayarsak ; // gerekli işlemlerle veri çektik $person değişkenine atadık if( $person '40' ) exit;elseif( $person '537' ) elseif( $person '80435' ) $language ;elseif( $person '2987765' ) Şimdi 3 milyon kayıt için her defasında sorgulamak yerine şyle birşey olsa ; veritabanında birde code kısmı olsa ; orada kodlar olsa; kodlar otomatik olarak çekilip, çekildikten sonra sanki kod bloğunun parçasıymış gibi çalışsa? Bylece bir sürü if-else olayından yırtarız. Bir sürü hammallıktan yırtarız. Her biri için zel olur fakat kod temizlenir. id - name - code 40 - zumsuk - exit;537 - sandman - require_once 'db. php'; db::show ;80435 - craft - $language ;2987765 - SpArk - require_once 'theme. php'; theme::blue ; $person dediğimizde ; diyelim zumsuk ise direkt olarak programı durdurur. Evet veritabanına yükleme, byle birşey olmaz fakat mantık olarak anlatabileceğim en yakın şey budur. 3 milyon veriyi if-else süzgecinden geçirmek yerine ; sadece 4 sonuç için zel birşey yaptıracaksak byle daha basit olurdu. FAkat xml ve json ile deneyeceğim. Bununla ilgili ne birşeye denk geldim, ne keywordleri biliyorum. Sadece aklımda olan bir fantazi. Bugün data structure dersinde json ile birşeyler yapabileceğimi düşündüm. Olmazsa birkaç şey denerim kendim.

hocam kayıtın hepsini indirmiyorum ; 300 farklı işlemim olsun, 5 bin kayıtım olsun. kullanıcı bir sayfaya tıklayacak ve 5 bin kayıt arasından 1 kayıdı çekecek. Fakat bu 1 kayıt için 300 if/else yada duruma gre switch/case ile kontrol edecek. Bunun yerine o kayıt geldiğinde birşeyler olmalı. Bunun en net açıklanabilir şekli : kayıdın içinde kod çalıştırabildiğimizi düşünelim. Kayıtın içinde zel kod bloğu olsun yani. Bu şekilde düşün.

zumsuk bunu yazdı trampfd bunu yazdı Tam olarak aklındaki senaryoyu anlat ben sana bir code reviewer olarak en doğru nasıl yazman gerektiğini açıklayayım. Yazdığın kodlar korkunç derecede yanlış ve thread safety açısından sakıncalı, her seferinde dosya sistemine bakıp bir dosyanın olup olmadığını check edip ardından bir koşula gre include yapan bir kod bloğuna profesyonel bir web uygulamasında rastladın mı? İşte bu yüzden algoritma mantığın da yanlış büyük ihtimalle. hocam try-catch olur ; başka birşey olur mantığı anlatıyorum. Yani bir sürü sorgudan kurtuluyor. Mantığı anlatmak için syledim. tek if, tek try-catch daha direkt sonuç sağlıyor. Burada nemli kısım ; tek veri için 3 milyon'a birden if-else yaptırtmamak. Bir sürü sorgu ve milyon kere dnen if-else / while / for / try-catch yani kısaca alayı zaten yanlış, 3 milyon kayıdı bir anda dbden alman zaten yanlışlığın başlangıcı oluyor, sonrasında ne yaparsan yap zaten hatalı mantıkla ilerliyorsun. Db den gereken veriyi gereken koşulla alırsın işlemini yaparsın. 1 byte bile fazladan veri alman hatalı yaklaşıma girer. Hocam sorun şu zaten ; ortada algoritma, olay, sorun yok. Dediğim gibi fantazi. Olayın temeli bir kaç sene nce facebook'ta Mark Zückerberg'in profilinin like olmasıyla aklıma takıldı. Dedim milyonlarca kullanıcı var. Sürekli aktif. Her seferinde if markzückerberg diye sorgutlatmıyordur. Sonra fantaziye kaçtı işte. Elimde bir rnek, bir sorun birşey olsa ; zaten keyword ile aratıcam. Bir nevi beyin fırtınası, benzer birşey var mı, bu tarz birşey var mı diye bakmak. Yukarıdaki modül rneğine benziyor. 3 milyon modül olsa ; bunu switch-case ile yada if-else ile denemek yerine ; bu şekilde yapmak zaman kazandıracak. Performans kazandıracak. Buunla ilgili bir sorunum, takıldığım konu yok. Hatta tam olarak rnek bile yok elimde. Olayın zü şu ; 3 milyon kayıt için (ki 5 milyon yada 8 bin fark etmez, 3 milyon sadece sayı) ; 3 milyon kayıt için farklı 3 milyon şey yaptıracak olsam bunu if/else harici nasıl yaparım . Dediğim gibi tamamen fantazi.