web-dev-qa-db-fra.com

Stockage et interrogation de JSON à partir d'une base de données

J'ai entendu parler de MongoDB, mais je ne suis pas sûr de bien comprendre le concept. 

Si j'ai plusieurs objets JSON stockés dans MongoDB:

[{"id": "peter",
  "age": "12",
  "gender": "male"},
 {"id": "gemma",
  "age": "12",
  "gender": "female"},
 {"id": "paul",
  "age": "13",
  "gender": "male"}]

Comment pourrais-je interroger tous les objets JSON avec age >= 12?

35
Jakob

Tout d’abord, comprenez que JSON n’est qu’une technique de sérialisation. En soi, cette méthode de sérialisation ne devrait probablement pas déterminer votre support de persistance. En regardant votre question à la surface, il semble que ce que vous recherchez est une base de données de stockage relationnelle typique dans laquelle vous pouvez utiliser SQL pour interroger vos données de manière flexible.

La sérialisation/désérialisation des données JSON pour le stockage dans ou pour la présentation après la récupération d'une telle base de données relationnelle est triviale dans pratiquement tous les langages de programmation.

Désormais, si vous avez vraiment besoin de stocker divers extraits de documents JSON (ou tout autre type de document) qui n’ont pas vraiment de structure fixe, c’est à ce moment-là que vous commencerez généralement à rechercher un type de solution NoSQL tel que MongoDB. Un autre scénario possible pour l’utilisation des bases de données NoSQL les plus populaires est celui qui concerne des quantités énormes de données et une mise à l’échelle horizontale (c’est-à-dire que les données sont si volumineuses que vous devez redimensionner la base de données sur plusieurs serveurs). De nombreux systèmes NoSQL rendent cela beaucoup plus facile à faire que les bases de données relationnelles traditionnelles. Bien entendu, dans un tel scénario, vous devrez ensuite évaluer ces outils en fonction des fonctionnalités qu’ils fournissent en vous permettant de lire, d’écrire et d’interroger les données de la manière la plus utile pour vos cas d’utilisation.

43
Mike Brant

Depuis la version 5.7, MySQL a maintenant le type natif JSON . En supposant que votre table s'appelle students et que la colonne JSON s’appelle student, dans MySQL 5.7, votre sélection peut être écrite ainsi:

SELECT * FROM students WHERE JSON_EXTRACT(student, '$.age') = 12;
13
Sophia Feng

MongoDB stocke les données au format BSON, qui est similaire au JSON. Vous pouvez stocker des données au format JSON et effectuer une requête sur n’importe quel champ. Vous pouvez même indexer sur un champ particulier utilisé pour les requêtes principales. 

Vous n'êtes pas limité à MongoDB. En voyant votre question, je pense que le magasin de documents répondra à vos besoins. Vous en lisez plus ici: - http://fr.wikipedia.org/wiki/Document-oriented_database

13
Manu Viswam

Si tous vos objets ont les mêmes champs (id, âge, sexe, etc.), vous devez alors les stocker sous forme de lignes dans une base de données relationnelle (par exemple, MySQL).

6
tskuzzy

Une requête shell mongodb pour cela pourrait ressembler à ceci:

db.people.find({"age": {gt:12 }});
1
charles ross

Une requête Couchbase N1QL ressemblera à ceci:

SELECT * FROM people WHERE age >= 12;

Voir https://query.couchbase.com pour plus de détails.

0
Keshav Murthy