para organizar organizador hacer grupo fotos duplicar contactos como clasificar carpetas app agrupar mysql scalability chat

mysql - organizar - ¿La mejor manera de almacenar mensajes de chat en una base de datos?



organizar fotos iphone whatsapp (3)

No hay nada de malo en guardar todo el historial en la base de datos, están preparados para ese tipo de tareas.

De hecho, aquí puede encontrar en Stack Overflow un enlace a un esquema de ejemplo para un chat: example

Si aún te preocupa el tamaño, puedes aplicar algunas optimizaciones para agrupar mensajes, como agregar un búfer a tu aplicación que solo presionas después de un tiempo (como 1 minuto más o menos); de esa manera evitaría tener solo 1 línea de mensajes

Estoy construyendo una aplicación de chat y quiero un historial completo de todos los mensajes enviados en la conversación de chat. En este momento estoy almacenando cada mensaje como una sola fila en una tabla llamada ''mensajes''. Soy consciente de que esta tabla podría crecer enorme ya que incluso pequeños mensajes como ''Hola'' tendrían su propio registro de base de datos.

¿Alguien puede recomendar una solución mysql más escalable? No necesito que los mensajes individuales sean buscables, editables o eliminables. ¿Podría toda la conversación ser almacenada en un gran campo?

Me encantaría escuchar tus ideas!


Puede crear una base de datos para x conversaciones que contenga todos los mensajes de estas conversaciones. Esto le permitiría agregar una nueva base de datos (o servidor) cada vez que x exceda. X es el número de conversaciones que admite su infraestructura (según su hardware, ...).

El problema sigue siendo que puede haber grandes conversaciones (con muchos mensajes) en la misma base de datos. por ejemplo, usted tiene la base de datos A y la base de datos B y cada uno almacena, por ejemplo, 1000 conversaciones. Es posible que haya muchas más conversaciones "grandes" en el servidor A que en el servidor B (ya que este es contenido creado por el usuario). Podría agregar una base de datos "maestra" que contenga una búsqueda, en qué base de datos / servidor se pueden encontrar las conversaciones individuales (o si tiene un esquema para asignar una base de datos a partir de hash / módulo o algo así).

Tal vez puedas encontrar arquitecturas del mundo real que lidien con los mismos problemas (puede que no seas el primero), y eso ya se ha resuelto.


Si puede evitar la necesidad de escribir simultáneamente en un solo archivo, parece que no necesita una base de datos para almacenar los mensajes de chat.

Simplemente agregue la conversación a un archivo de texto (1 archivo por usuario / conversación). y tener una estructura de directorio / archivo

Aquí hay una vista simplificada de la estructura de archivos:

chat-1-bob.txt 201101011029, hi 201101011030, fine thanks. chat-1-jen.txt 201101011030, how are you? 201101011035, have you spoken to bill recently? chat-2-bob.txt 201101021200, hi 201101021222, about 12:22 chat-2-bill.txt 201101021201, Hey Bob, 201101021203, what time do you call this?

Entonces, solo necesitaría almacenar el ID de usuario, ID de conversación (¿guía?) Y una referencia al nombre del archivo.

Creo que le resultará difícil obtener una solución escalable más simple.

Puede usar LOAD_FILE para ver los datos: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

Si necesita reconstruir una conversación, deberá agregar un valor (fecha y hora) junto con su mensaje de chat enviado (en el archivo) para permitirle fusionar y ordenar los archivos, pero en este punto probablemente sea una buena idea. considerar usar una base de datos.