2008-08-30 10 views
5

Quiero mantener registros de algunas cosas que las personas hacen en mi aplicación, en algunos casos para que puedan deshacerse si es necesario.Iniciar sesión en una aplicación web de PHP

¿Es mejor almacenar dichos registros en un archivo o una base de datos? Estoy completamente perdido sobre cuáles son los pros y los contras, excepto que es otra tabla para configurar.

¿Existe una tercera (o cuarta) opción que no conozco que deba investigar y conocer?

Respuesta

5

Es casi seguro que querrá utilizar una base de datos para un acceso flexible basado en registros y para aprovechar la capacidad de la base de datos para manejar el acceso a datos simultáneos. Si necesita hacer un seguimiento de la información que puede necesitar deshacerse, tenerla en un formato estructurado es un beneficio, ya que tiene la capacidad de actualizar una fila que indica cuándo y quién ha cancelado una transacción determinada.

Es probable que solo desee escribir en un archivo si el rendimiento es muy alto o si tiene grandes cantidades desestructuradas o datos por registro que podrían almacenarse sin tener en cuenta en una base de datos. Tenga en cuenta que a menos que su aplicación tenga una gran cantidad de transacciones, es poco probable que la velocidad de la base de datos sea un problema. También tenga en cuenta que si está trabajando con un archivo necesitará manejar el acceso concurrente (lectura/escritura/bloqueo) con mucho cuidado, lo que probablemente no sea algo con lo que quiera tener que lidiar.

2

Utilizaría una base de datos simplemente para la mantenibilidad; también múltiples ediciones en un archivo pueden causar que algunas se pierdan.

1

Voy a secundar las dos sugerencias anteriores y agrego que el bloqueo de archivos en un archivo sin formato puede causar problemas cuando hay muchos usuarios.

9

Hay al menos un motivo definido para almacenar en la base de datos. Puede usar INSERT DELAYED en MySQL (o construcciones similares en otras bases de datos), que devuelve inmediatamente. No obtendrá ningún dato de retorno de la base de datos con este tipo de consultas y no se garantiza su aplicación.

Al utilizar INSERT DELAYED, no ralentizará mucho su aplicación debido al registro. La base de datos puede escribir libremente los INSERT en el disco en cualquier momento, por lo que puede agrupar un conjunto de insertos.

Debe tener cuidado con el uso de la función de indicación de fecha y hora incorporada de MySQL (como CURRENT_TIMESTAMP o CUR_DATE()), ya que se llamarán siempre que la consulta se ejecute realmente. Por lo tanto, debe asegurarse de que los datos en cualquier momento se generen en su lenguaje de programación, y no en la base de datos. (Este párrafo podría ser específico de MySQL)

+2

Eso es nuevo para mí. Muy resbaladizo –

+1

no garantizado? eso suena como no tan buena idea. podrías explicar eso? –

3

Soy un gran fan de log4php. Le proporciona una interfaz estándar para acciones de registro. Está basado en log4j. La biblioteca carga un archivo de configuración central, por lo que nunca necesitará cambiar su código para cambiar el registro. También ofrece varios destinos de registro, como archivos, syslog, bases de datos, etc.

Cuestiones relacionadas