Pessoal estou com um projeto que contém um chat em tempo real, tipo o do facebook, e gostaria de saber qual o melhor jeito de armazenar as mensagem trocadas entre os usuários, já tentei armazenar no banco de dados só que teve algumas coisas que me deixaram descontente
O que te deixou descontente com sua implementação?
Olhando de forma simples, você precisaria guardar o id de usuário (num int), data e hora da mensagem e o texto da mensagem (que pode ser um blob/text).
É complicado se basear no Facebook porque a demanda deles é bem específica, principalmente volume de dados, disponibilidade e recursos que precisam ser suportados (ex: internacionalização, emojis, etc).
Abraço.
o que me deixou descontente, exemplo: estou conversando com uma pessoa, guardei o id de destinatário e o meu id e a nossas mensagens em um banco de dados, porem um de nos quer apagar a conversa entre nos 2 e o outro não quer apagar, quer deixar la de lembrança, e se um de nos apagar a mensagem tbm some para o outro pois só vai ter uma copia no banco de dados, quando eu fiz deu tudo certo, mas teve esse detalhe que não consegui resolver… pensei em criar um banco uma copia mas isso deixaria meu banco de dados muito cheio…
Não acho que precisa de uma tabela/banco de cópia, para essas situações usamos um conceito de “flags”…
No banco você pode adicionar uma coluna de nome excluido por exemplo do tipo boolean, tinyint(1) ou bit (veja o que seu banco suporta), podendo conter o valor 1 ou true como verdadeiro e 0 ou false para falso, dessa forma no chat você só mostra conversas com excluido = 0 por exemplo…
Entenda que a exclusão para o usuário não necessariamente quer dizer que o registro foi realmente apagado do banco pegou?
E para refletir: você realmente acha que o facebook/whatsapp/instagram/twitter e afins apagam as informações quando pedimos?
Essa situação de um querer apagar e outro não é regra de negócio, ou seja, você precisa decidir se permite isso ou não, ou permitir configurar se é possível ou não uma mensagem ser apagada se apenas um dos usuários.
Do lado técnico, como explicou ou rodevops acima, você não precisa necessariamente dar delete no registro da mensagem, apenas ter alguma flag de “apagado sim/não” já resolve em boa parte dos casos.
Abraço.
vlw pessoal vou tentar dessa forma! obrigado gente