Yapılan forum API nasıl?

@bitwise hocam merhaba transaction olayını anladım gibi şu an tam otursun diye bir proje yapıyorum sizce projelerde redis(cache) mekanizması kullanmak mantıklı mı?

Oncelikle Redis transaction garantisi vermez. Transaction dedigimiz zaman aslinda ACID kavramina referans veriyoruz. Buna bakarsan daha net anlasilir. Ben bu mesaji yazdigim sirada ilgili wiki sayfasinda transaction kelimesi 84 defa geciyordu :)

Mantik su kabaca, operasyonlar sirasinda olmasini istedigimiz ozellikler var ( atomicity, isolation vs ) ve bunlari kullandigimiz yapilar saglasin istiyoruz. Her projede atomik islem istemene gerek yok ama cogu orta+ olcekli projede kullanmak durumunda kalirsin.

Redis ve muadili yapilar in-memory key value saklarlar. ACID saglamasini istemezsin bunlarin cunku hizli olmalari gerekiyor.
 
Oncelikle redis transaction garantisi vermez. Transaction dedigimiz zaman aslinda ACID kavramina referans veriyoruz. Buna bakarsan daha net anlasilir. Ben bu mesaji yazdigim sirada ilgili wiki sayfasinda transaction kelimesi 84 defa geciyordu :)

Mantik su kabaca, operasyonlar sirasinda olmasini istedigimiz ozellikler var ( atomicity, isolation vs ) ve bunlari kullandigimiz yapilar saglasin istiyoruz. Her projede atomik islem istemene gerek yok ama cogu orta+ olcekli projede kullanmak durumunda kalirsin.

Redis ve muadili yapilar in-Memory key Value saklarlar. Acıd saglamasini istemezsin bunlarin cunku hizli olmalari gerekiyor.

Teşekkürler transaction ile redis aynı projede kullanılabilir mi? Sizin de bildiğiniz gibi genelde transaction anlatmak için çok yaygın olan şu örnek var hani bir banka uygulaması olur iki tane hesap olur a hesabı b hesabına transfer yapar ama X nedenden dolayı transfer olmayınca rollback olur benim bu örnekten ve araştırdığım kadarıyla transaction aslında gerçekleşmesi birbiriyle ilişkili olan durumların birlikte gerçekleşmesi ya da gerçekleşmemesi ben forum apisine bunu şuralarda entegre etmeyi düşünüyorum mesela bir konu açılınca konu sayısının güncellenmesi ya user register olunca user sayısının Update olması gibi ama konu veya user herhangi bir nedenden dolayı oluşmazsa veya oluşursa bu gibi durumlarda kullanmayı düşünüyorum, bu saçma bir yaklaşım mı? Ya da nerelerde kullanmalıyım her yerde kullanabilir miyim? Redisi de hız gerektiren yerlerde kullanmayı düşünüyorum konuları listeleme, kullanıcı profili detayı ya post detayı gibi?
 
Teşekkürler transaction ile redis aynı projede kullanılabilir mi? Sizin de bildiğiniz gibi genelde transaction anlatmak için çok yaygın olan şu örnek var hani bir banka uygulaması olur iki tane hesap olur a hesabı b hesabına transfer yapar ama X nedenden dolayı transfer olmayınca rollback olur benim bu örnekten ve araştırdığım kadarıyla transaction aslında gerçekleşmesi birbiriyle ilişkili olan durumların birlikte gerçekleşmesi ya da gerçekleşmemesi ben forum apisine bunu şuralarda entegre etmeyi düşünüyorum mesela bir konu açılınca konu sayısının güncellenmesi ya user register olunca user sayısının Update olması gibi ama konu veya user herhangi bir nedenden dolayı oluşmazsa veya oluşursa bu gibi durumlarda kullanmayı düşünüyorum, bu saçma bir yaklaşım mı? Ya da nerelerde kullanmalıyım her yerde kullanabilir miyim? Redisi de hız gerektiren yerlerde kullanmayı düşünüyorum konuları listeleme, kullanıcı profili detayı ya post detayı gibi?

Kullanilabilir tabi ki. Ikisi ayri amaca hizmet ediyor, birinden birisini tercih etmek durumunda degilsin.

Bahsettigin use-case cok yaygin bir kullanim. Belirli bir islem grubun ayni transaction icinde atomik olarak islemek isteyebilirsin. Zaten RDBMS bunun icin var.

Bu bahsetting konu katmanli cache mimarisi , ornegin AWS nin yazdigi guzel bir doc: Caching patterns - Database Caching Strategies Using Redis

Eger boyle bir yol izlersen, cozmen gereken problem veritabani guncellendiginde cache katmanininda uygun sekilde guncellenmesi ( invalidasyon ). Bunu yapan ORM'ler var kendin de implemente edebilirsin.

Sacma bir yaklasim degil, bolca kullanilan bir yaklasim. Yalnizca konfigure ederken ve implemente ederken dikkat etmen gerekiyor.

Ornegin birisi bir post'u guncellediginde, cache'i de guncellemen gerekecek. Her seyi cache'lemeye kalkarsan memory yetistiremeyeceksin. Hizli olmasini istedigim kisimlarin READ operasyonlari cache'ten okur; WRITE operasyonlari hem cache'i hem de DB yi update eder. Bu baslangic mantigi ile ilerleyebilirsin. Ayrica DB'den elle bir seyler degistirdiginde bu degisiklik READ operasyonlarinda goruntulenemeyecek ( hala cache'ten okuma yaptigi icin ) ; buna da cozum olarak basit bir invalidasyon mantigi eklersin, gg.
 
Kullanilabilir tabii ki. Ikisi ayri amaca hizmet ediyor, birinden birisini tercih etmek durumunda degilsin.

Bahsettigin use-case cok yaygin bir kullanim. Belirli bir islem grubun ayni transaction icinde atomik olarak islemek isteyebilirsin. Zaten rdbms bunun icin var.

Bu bahsetting konu katmanli cache mimarisi, ornegin AWS'nin yazdigi guzel bir doc: Caching patterns - Database Caching Strategies Using Redis

Eger boyle bir yol izlersen, cozmen gereken problem veri tabanı guncellendiginde cache katmanininda uygun sekilde guncellenmesi ( invalidasyon ). Bunu yapan Orm'ler var kendin de implemente edebilirsin.

Saçma bir yaklasim degil, bolca kullanilan bir yaklasim. Yalnizca konfigure ederken ve implemente ederken dikkat etmen gerekiyor.

Ornegin birisi bir Post'u guncellediginde, Cache'i de guncellemen gerekecek. Her seyi cache'lemeye kalkarsan Memory yetistiremeyeceksin. Hizli olmasini istedigim kisimlarin read operasyonlari cache'ten okur; wrıte operasyonlari hem Cache'i hem de DB'yi Update eder. Bu baslangic mantigi ile ilerleyebilirsin. Ayrica DB'den elle bir seyler degistirdiginde bu degisiklik read operasyonlarinda goruntulenemeyecek ( hala cache'ten okuma yaptigi icin ); buna da cozum olarak basit bir invalidasyon mantigi eklersin, gg.

Teşekkürler hocam bu kavramlarla yeni yeni tanışıyorum beni bir adım daha yükselteceklerini düşünüyorum onerebileceginiz video tutorial var mı bu olayları Node.js-mongo ikilisine uygulayan?
 
Teşekkürler hocam bu kavramlarla yeni yeni tanışıyorum beni bir adım daha yükselteceklerini düşünüyorum onerebileceginiz video tutorial var mı bu olayları Node.js-mongo ikilisine uygulayan?

Video zaman kaybi, tavsiye etmiyorum acikcasi.

Redis'in kendi dokumanlari cok iyi, tam da bu ornek uzerine:

Biraz kavradiktan sonra, evde ekipman da varsa Udemy'de ₺655.00 ₺24.99 fiyata "Sifirdan Zirveye MongoDB ve Redis ile Isik hizinda Mikroservis" kursu verebilirsin, ufak bir girisim olur. Eger video yoksa sektordeki o acigi da sen doldur, fikir benden :) (Catchy video basligi ve buyuk indirim yeterli tek basina)
 
Video zaman kaybi, tavsiye etmiyorum açıkçası.

Redis'in kendi dokümanlari cok iyi, tam da bu ornek uzerine:

Biraz kavradiktan sonra, evde ekipman da varsa Udemy'de ₺655.00 ₺24.99 fiyata "sifirdan zirveye MongoDB ve redis ile ısik hizinda mikroservis" kursu verebilirsin, ufak bir girisim olur. Eger video yoksa sektordeki o acigi da sen doldur, fikir benden :) (catchy video basligi ve buyuk indirim yeterli tek basina)

Zaten şu başlık ve fiyat yan yana gelince satilmama ihtimali yok.
 
Zaten şu başlık ve fiyat yan yana gelince satilmama ihtimali yok.

5K izlense laptop parasi cikti demektir. 10K izlenirse Linkedin'e "📈Entrepreneur | 👩‍💻 Egitmen | 🎓 High Academy" vs yazmaya baslar, ufaktan reklam verirsin. Bir de youtube kanali acarsan peeh.

Forum API'ini herkes yazar, eksigi firsata cevirmek daha onemli bir yetenek :)
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı