Estoy haciendo un programa de chat, y necesito un lugar para almacenar mensajes. El cliente se comunicaría con el servidor cada x segundos con el último ID de mensaje recibido, y el servidor encontraría todos los mensajes con un ID más alto que ese, en las salas a las que el cliente se ha unido.Archivo plano vs base de datos: ¿velocidad?
Como no voy a guardar cosas para siempre, estoy pensando en usar archivos planos (uno por habitación, así como mensajes directos) con solo los últimos 40 o más mensajes. Sin embargo, creo que con la comparación de números una base de datos sería más rápida.
¿Qué método de almacenamiento de datos debo usar?
Ok, definitivamente voy a ir con una base de datos. En cuanto a múltiples usuarios hablando a la vez, dado que estoy usando php, ¿no se colocaría el segundo mensaje en una cola para que se ejecute después de que se complete el primero? – apscience
PHP no creará mágicamente transacciones en simples escrituras de archivos. Siempre existe la posibilidad de obtener medio disco en el disco y otro trabajador agregar su propio registro antes de que se escriba su segunda mitad. Hay algunas formas no tan complejas a su alrededor, pero son mucho menos eficientes que una base de datos real. – Javier
Una última pregunta: cuantas más entradas tenga en una tabla, más lenta será la selección, ¿verdad? Entonces, ¿no debería crear una tabla para cada habitación? – apscience