ASP.Net Core 3.1 Sosyal Medya Follow Yapımı

Caulfield

Kilopat
Katılım
19 Ocak 2018
Mesajlar
864
Çözümler
3
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar bir sosyal medya projesi yazıyorum lakin Follow,Unfollow kısmında nasıl bir algoritmik yapı kuracağımı bir türlü oturtamadım.Bununla ilgili bir kaynağı olan varsa atabilir mi? Ya da bir tavsiye verebilecek olan? Yanlış anlaşılmasın direkt kod bloğu istemiyorum sadece biraz ufkumu açmam lazım.
 
Şemayı bire çok olarak düşündüm ben. 1 kullanıcının birden fazla takip ettiği kişiler olabilir aynı şekilde 1 kullanıcının birden çok takipçisi de olabilir diye düşündüm.

Kullanici <--> Takipci OneToMany olursa takipci birden fazla kullaniciyi takip edemez.

Bu aslinda boolean bir flag oldugu icin follow/unfollow durumunu RDBMS de tutmak zorunda degilsin, daha hizli NoSQL cozumler kullanilabilir ama baslangic icin basit dusunup manyToMany ilerleyebilirsin.
 
Kullanici <--> Takipci OneToMany olursa takipci birden fazla kullaniciyi takip edemez.

Bu aslinda boolean bir flag oldugu icin follow/unfollow durumunu RDBMS de tutmak zorunda degilsin, daha hizli NoSQL cozumler kullanilabilir ama baslangic icin basit dusunup manyToMany ilerleyebilirsin.
İlk etapta aklıma dizilerde tutmak geldi. Followa bastığında karşıdakini kullanıcının follow dizisine eklensin. Unfollowa bastığında ise unfollow dizisine eklensin tabi bu unfollow dizisi görünmez olacak ama sonra şöyle bir şey doğacak bir kişinin takip etmediği tüm kullanıcılar o kişinin unfollow dizinine düşecek otomatiktan ve bu da projeyi şişirir diye düşünüyorum. Maalesef NoSQL hakkında bilgim yok..
 
İlk etapta aklıma dizilerde tutmak geldi. Followa bastığında karşıdakini kullanıcının follow dizisine eklensin. Unfollowa bastığında ise unfollow dizisine eklensin tabi bu unfollow dizisi görünmez olacak ama sonra şöyle bir şey doğacak bir kişinin takip etmediği tüm kullanıcılar o kişinin unfollow dizinine düşecek otomatiktan ve bu da projeyi şişirir diye düşünüyorum. Maalesef NoSQL hakkında bilgim yok..

DB de cell icinde dizi tutmak dogru bir practice degil. Atomic yapiyi bozuyorsun, ACID'e aykiri. (ACID Properties in DBMS - GeeksforGeeks )

Ayri bir 2 column'lu tablo yapip tutabilirsin, ki zaten ManyToMany bu isi yapiyor. FK indexi atarsin her birine.

Unfollow dizisi tutmak basli basina gereksiz bir yuk olur sistemde. Kullanici listesi arttikca dehset uzun unfollow listeleri olacak, bence o fikri kafandan bir an once cikar : )

Genel yapi olarak yazilim mimarisinde RDBMS yi cok fazla write yapan islemlerde kullanmaktan kaciniriz cunku write cok pahali bir islemdir. Follow / Unfollow islemleri de surekli write yaptigi icin bu isin icin ozellestirilmis farkli database cozumleri var. Dedigim gibi bu aklinin bir kenarinda bulunsun, ileride isler ciddilesirse bunlari dusunursun, simdilik gerek yok, herhangi bir RDBMS yeterince hizli sekilde isini gorecektir.

Follow edilebilecek seyleri abstrakt bir entity olarak "Followable" seklinde tutarsin, follow eder, follow edilen ve entity'nin tipini tutarsin. Ornegin bu yapiyi kullanarak bir konuya, bir yoruma ya da bir kisiye follow yapabilir herhangi bir user. Ornegin attigi yoruma biri cevap verdiginde de ayni yapi uzerinden notification gonderebilirsin.

Son 2 paragrafi basit bir proje icin gozardi edebilirsin. Person ve Person_Follow_List gibi 2 tabloyla halledilebilir basitce.
 
Son düzenleme:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı