json_object - MySQL vs. JSON-¿Por qué?
save json in mysql (3)
Los 2 no son realmente comparables.
MySQL almacena datos en una base de datos o en realidad es una base de datos. JSON almacena datos en un formato para pasar al servidor y desde él al cliente. JavaScript / jquery puede usar JSON como objetos de datos, pero solo existen en el lado del cliente durante la vida de la página.
Por lo tanto, si desea almacenar datos como JSON (no recomendado), probablemente tenga que almacenarlos como archivos de texto para guardar los datos.
Debería almacenar datos en una base de datos. Use funciones para convertirlo a formato JSON, luego páselo a la página web para que javascript lo consuma y lo presente al usuario.
Estoy diseñando una pequeña aplicación web / juego. ¿Qué sería mejor: tablas MySQL o archivos json? Ambos almacenan información. Ambos pueden ser analizados por PHP. ¿Cuáles son las ventajas / desventajas?
Esto es lo que quiero decir:
username | password
-------------------
seefour | abc123
vs.
{
"username":"seefour",
"password":"abc123"
}
EDITAR: Wow, han pasado solo 3 años desde que hice esta pregunta y es sorprendente ver cuánto he madurado desde que hice esta pregunta. Desde un futuro yo hasta el pasado yo, esta es la razón por la cual los dos no funcionan. (En caso de que alguien ingenuo como yo en ese momento pueda referirse a esto)
Solía pensar que los dos eran intercambiables, ya que ambos eran prácticamente formas de almacenar información, aunque almacenar y usar archivos JSON era más fácil para mí en ese momento. Las bases de datos son piezas separadas de software que hacen que la recuperación de datos sea mucho más rápida y que no termine siendo inflada con el tiempo. Además, transportar todos los datos en uno o dos archivos hace que sea peligrosamente fácil terminar robándole o perdiendo sus datos, mientras que una base de datos es mucho más segura con ellos. Fundamentalmente, los datos no deberían ser parte de su código; debería ser algo separado con lo que tu código funciona.
Además, aprenderá sobre hash y salazón un par de años más adelante, así que no almacene contraseñas en texto sin formato.
MySQL será preferible por muchas razones, una de las cuales es que no desea que su proceso de servidor web tenga acceso de escritura al sistema de archivos (excepto el posible registro) porque es una forma fácil de ser explotado.
Además, el equipo de MySQL ha puesto mucho esfuerzo de ingeniería en cosas tales como la replicación, el acceso simultáneo a los datos, el cumplimiento de ACID y la integridad de los datos.
Imagínese si, por ejemplo, agrega un nuevo campo que se requiere en cualquier estructura de datos que esté almacenando. Si almacena en archivos JSON, tendrá que tener algún proceso que abra cada archivo, agregue el campo y luego lo guarde. Compare esto con la dificultad de usar ALTER TABLE con un valor DEFAULT para el campo. (Un poco de un ejemplo artificial, pero ¿cuántos hacks quieres dejar en tu base de código para tratar con datos antiguos?)
Para ser francos, MySQL es una base de datos, mientras que JSON no lo es, por lo que la respuesta correcta es MySQL, sin dudarlo. JSON es solo un lenguaje, y apenas eso. JSON nunca fue diseñado para manejar conexiones simultáneas o cualquier tipo de manipulación de datos, ya que su propia función es representar datos, no administrarlos .
Así que vaya con MySQL para almacenar los datos. Luego debe usar algún lenguaje de programación para leer esa base de datos y enviar esa información como JSON, en lugar de almacenar algo en JSON.
Si almacena los datos en archivos, ya sea en formato JSON o en cualquier otra cosa, tendrá toda clase de problemas de los que la gente ha dejado de preocuparse desde que las bases de datos comenzaron a usarse para lo mismo. Limitaciones de tamaño, bloqueos, nómbrelo. Es lo suficientemente bueno cuando tiene un usuario, pero en el momento en que agrega más de ellos, comenzará a resolver tantos problemas que probablemente termine escribiendo un motor de base de datos completo solo para manejar los archivos por usted, mientras todo el tiempo podría simplemente haber usado una base de datos real.