web-dev-qa-db-fra.com

pouvons-nous utiliser JSON comme base de données?

Je recherche un stockage de données rapide et efficace pour construire mon site Web basé sur PHP. Je suis au courant de MySql. Puis-je utiliser un fichier JSON dans le répertoire racine de mon serveur au lieu d'une base de données MySQL? Si oui, quelle est la meilleure façon de le faire?

17
sami

Vous pouvez utiliser n'importe quel fichier, y compris un fichier JSON, comme ceci:

  • Verrouillez-le d'une certaine manière (verrouillage de fichier google PHP, c'est aussi simple que d'ajouter un paramètre à une fonction d'ouverture de fichier ou de changer le nom de la fonction en version verrouillée).

  • Lire les données du fichier et les analyser dans la structure de données interne.

  • Vous pouvez éventuellement modifier les données dans la structure de données interne.

  • Si vous avez modifié les données, tronquez le fichier à une longueur égale à 0 et écrivez-lui de nouvelles données.

  • Déverrouillez le fichier dès que vous le pouvez, d’autres demandes sont peut-être en attente ...

  • Vous pouvez continuer à utiliser les données dans les structures internes pour rendre la page, mais n'oubliez pas qu'elle peut être obsolète dès que vous libérez le verrou de fichier et qu'une autre requête HTTP peut le modifier.

De même, si vous modifiez les données à partir du formulaire Web de l'utilisateur, rappelez-vous qu'il peut avoir été modifié entre les deux. Par exemple, chargez la page avec les détails de l'utilisateur pour modification, puis un autre utilisateur supprime cet utilisateur, puis l'éditeur tente de sauvegarder les détails modifiés et devrait obtenir probablement une erreur au lieu de recréer un utilisateur supprimé.

Note : Ceci est très inefficace. Si vous construisez un site où vous attendez plus de 10 utilisateurs simultanés, vous devez utiliser un schéma plus sophistiqué, ou simplement utiliser une base de données existante ... De plus, vous ne pouvez pas avoir trop de données, car l'analyse JSON et la génération de modifications JSON prend du temps.

Tant que vous avez un seul utilisateur à la fois, le temps presse et ralentit à mesure que le nombre de données augmente, mais plus le nombre d'utilisateurs augmente, et plus le nombre d'utilisateurs augmente, plus le nombre de demandes et de données augmente, plus le nombre de données augmente. obtenez exponentiellement plus lentement et vous atteindrez très vite la limite où les demandes HTTP commencent à expirer avant que le fichier ne soit disponible pour le traitement de la demande ...

À ce stade, n'essayez pas de le pirater pour le rendre plus rapide, mais choisissez plutôt un framework de base de données existant (SQL ou nosql ou basé sur des fichiers). Si vous commencez à vous débrouiller vous-même, vous finissez par réinventer la roue, généralement mal :-). Eh bien, à moins que ce ne soit juste un exercice de programmation, mais même dans ce cas, il serait peut-être préférable d'apprendre à utiliser un cadre existant.

23
hyde

J'ai écrit un Object Document Mapper à utiliser avec des fichiers JSON appelés JSON ODM peut-être un peu tard, mais s'il le faut toujours, il est open source sous MIT License.

Il fournit une langue de requête et quelques outils GeoJSON

2
Richard Burkhardt

La nouvelle version d'IBM Informix 12.10 xC2 prend désormais en charge JSON.
vérifiez le lien: http://pic.dhe.ibm.com/infocenter/informix/v121/topic/com.ibm.json.doc/ids_json_007.htm

Le manuel dit qu'il est compatible avec les pilotes MongoDB.

À propos de la compatibilité Informix JSON

Applications qui utilisent le langage de requête orienté JSON, créé par MongoDB, peut interagir avec les données stockées dans les bases de données Informix. Le Le serveur de base de données Informix fournit également des types de données JSON et BSON (binaires JSON) intégrés.

Vous pouvez utiliser les pilotes de la communauté MongoDB pour insérer, mettre à jour et interroger Documents JSON dans Informix.

Pas sûr, mais je pense que vous pouvez utiliser l'édition Innovator-C (gratuite pour la production) pour la tester et l'utiliser sans aucun coût pour l'environnement de production.

1
ceinmart