Eveeeettt... sıradaki:

Sıradaki sorun mantık sorunu. Online gösterme olayıyla başladık değişik yerlere uzandı konu. Üyeler arası anlık mesajlajma da kodladım, şu an üyeler yazışabiliyor ama veritabanında sohbetle ilgili tutulan herhangi bir kayıt yok.

Bu mesajın özeti: En az sorgu, en az cpu için nasıl bir tablo yapısı kurulmalı, sorgular nerde ve nasıl yapılmalı.


Mevcut yapıdan kısaca bahsedeyim.
Resimde sağdaki browserda, konuyu açan üye online ise üyeyle konuşmayı başlatacak link oluşturuluyor. Sol browserdaki üye de konuyu açan üye. Konuşmayı başlatan üye herhangi bir şey yazdığı zaman ileti konunun sahibine gidiyor, o da cevap yazabiliyor. Tabi veritabanı işlemi olmayınca sayfa değişince sohbet tekleyecek.

Olmasını istediğim yapı şu:
-arkadaşlık mantığı yok, diğer üyeleri herhangi bir listeye ekleme falan yok, bir üye, başka bir üeyeye ancak ulaşmak istediği üyenin açtığı bir konunun sayfasından, ya da ilgili üyenin profil sayfasından ulaşabilecek (sohbet başlatabilecek).
- İki üye arasındaki konuşmalar tabloda her mesaj ayrı satırda değil de, o iki üye arasındaki konuşmaların tamamı tek satırda json olarak (veritabanı nosql {mongo}) tutulacak. Önceden belirlediğim mesaj sayısı limitiyle, örneğin limit 50 ise, 51. mesaj yazıldığında en eski yani 1. mesaj silinecek. Yani hep son 50 mesaj tutulacak ilgili satırda.
-Resimde konuşma penceresinin sağındaki alanda üyenin yakın zamanda iletişime geçtiği üyeler listelenecek. Bunun için de önceden belirlediğim limit kadar kayıt tutulacak. Örneğin bu limit 30 ise ve bir üyenin son iletişime geçilen üyele listesinde 30 kayıt varsa, yeni bir kouşma başlatıldığında, listedeki 30 üyeden hangisiyle son etkileşim en eski ise o üye listeden kaldırılacak.

Daha da özetle: Anlık iletiler tek tabloda tutulacak. A üyesinin B üyesiyle konuşmaları tek satırda tutulacak (son 50 post), ve her bir üye için anlık ileti tablosunda max 30 satır, yani en son etkileşimde bulunulan 30 üye tutulacak. Bu 30 üye de en son ileitşim kurulanlar listesinde yer alacak.

Hem php tarafında, hem node tarafında veritabanına erişebiliyorum. Veriler veritabanına hangi aşamada yazılmalı || güncellenmeli || listelenmeli?

Bu konuda çok çok bilgili arkadaşlar var forumda biliyorum, aslında etiketleyecektim bikaç tanesini ama yüzsüzlük etmek istemedim.

Yardımcı olan arkadaşlara çok çok teşekkürler, saygılar, sevgiler.