web-dev-qa-db-fra.com

MySQL vs JSON - Pourquoi?

Je conçois une petite application web/jeu. Quoi de mieux: des tables MySQL ou des fichiers json? Ils stockent tous les deux des informations. Ils peuvent tous deux être analysés par PHP. Quels sont les avantages/inconvénients?

Voici ce que je veux dire:

username | password
-------------------
seefour  | abc123

vs.

{
  "username":"seefour",
  "password":"abc123"
}

EDIT: Wow, ça fait seulement 3 ans que j'ai posé cette question et c'est surprenant de voir combien j'ai mûri depuis quand j'ai posé cette question. D'un futur moi au passé moi, c'est pourquoi les deux ne fonctionnent pas. (Au cas où quelqu'un naïf comme moi à l'époque pourrait se référer à cela)

J'avais l'habitude de penser que les deux étaient interchangeables car ils étaient à la fois un moyen de stocker des informations, bien que le stockage et l'utilisation de fichiers JSON m'aient été plus faciles à l'époque. Les bases de données sont des logiciels distincts qui accélèrent la récupération des données et ne finissent pas par être gonflés au fil du temps. En outre, le fait de transporter toutes les données dans un ou deux fichiers facilite dangereusement la fin du vol ou de la perte de vos données, alors qu'une base de données est beaucoup plus sécurisée avec celles-ci. Fondamentalement, les données ne devraient pas faire partie de votre code; cela devrait être une chose distincte avec laquelle votre code fonctionne.

En outre, vous apprendrez à hacher et saler quelques années plus tard, alors ne stockez pas les mots de passe en texte brut!

51
avinashbot

Pour être franc, MySQL est une base de données alors que JSON ne l'est pas, donc la bonne réponse est MySQL, sans hésitation. JSON n'est qu'un langage, et à peine même cela. JSON n'a jamais été conçu pour gérer quoi que ce soit comme des connexions simultanées ou toute sorte de manipulation de données, car sa propre fonction est de représenter les données, pas de gérer les.

Allez donc avec MySQL pour stocker les données. Ensuite, vous devez utiliser un langage de programmation pour lire cette base de données et envoyer ces informations au format JSON, plutôt que de stocker quoi que ce soit dans JSON.

Si vous stockez les données dans des fichiers, que ce soit au format JSON ou autre, vous aurez toutes sortes de problèmes dont les gens ont cessé de s'inquiéter depuis que les bases de données ont commencé à être utilisées pour la même chose. Limitations de taille, verrous, nommez-le. C'est assez bien quand vous avez un utilisateur, mais au moment où vous en ajoutez d'autres, vous commencerez à résoudre tellement de problèmes que vous finirez probablement par écrire un moteur de base de données entier juste pour gérer les fichiers pour vous, tout au long de vous aurait pu simplement utiliser une base de données réelle.

32
Teekin

MySQL sera préférable pour de nombreuses raisons, dont la plus importante n'est pas que vous ne souhaitiez pas que votre processus de serveur Web ait un accès en écriture au système de fichiers (sauf éventuellement pour la journalisation) car c'est un moyen facile d'être exploité.

En outre, l'équipe MySQL a déployé beaucoup d'efforts d'ingénierie dans des domaines tels que la réplication, l'accès simultané aux données, la conformité ACID et l'intégrité des données.

Imaginez si, par exemple, vous ajoutez un nouveau champ qui est requis dans la structure de données que vous stockez. Si vous stockez dans des fichiers JSON, vous devrez avoir un processus qui ouvre chaque fichier, ajoute le champ, puis l'enregistre. Comparez cela à la difficulté d'utiliser ALTER TABLE avec une valeur PAR DÉFAUT pour le champ. (Un exemple un peu artificiel, mais combien de hacks souhaitez-vous laisser dans votre base de code pour traiter les anciennes données?)

17
Meleneth

Les 2 ne sont pas vraiment comparables.

MySQL stocke des données dans une base de données ou est en fait une base de données. JSON stocke les données dans un format à transmettre vers et depuis le serveur vers le client. Javascript/jquery peut utiliser JSON comme objets de données, mais ils n'existent que du côté client pour la durée de vie de la page.

Donc, si vous souhaitez stocker des données au format JSON (non recommandé), vous devrez probablement les stocker sous forme de fichiers texte pour enregistrer les données.

Vous devez stocker les données dans une base de données. Utilisez les fonctions pour le convertir au format JSON, puis passez-le à la page Web pour que javascript consomme et présente à l'utilisateur.

15
Yogurt The Wise