Je suis en œuvre le modèle suivant pour le stockage de l'utilisateur des données dans ma table j'ai 2 colonnes - uid
(clé primaire) et un meta
colonne qui stocke d'autres données concernant l'utilisateur dans le format JSON.
uid | meta
--------------------------------------------------
1 | {name:['foo'],
| emailid:['foo@bar.com','bar@foo.com']}
--------------------------------------------------
2 | {name:['sann'],
| emailid:['sann@bar.com','sann@foo.com']}
--------------------------------------------------
Est-ce une meilleure façon (en terme de performance, de conception-sage) de la colonne par propriété modèle, où la table a de nombreuses lignes comme uid
, name
, emailid
.
Ce que j'aime dans le premier modèle, vous pouvez ajouter autant de champs que possible, il n'y a pas de limitation.
Aussi, je me demandais, maintenant que j'ai mis en place le premier modèle. Comment dois-je effectuer une requête sur elle, comme, je veux récupérer tous les utilisateurs qui ont un nom comme 'foo'?
Question - quelle est la meilleure manière de stocker des données associées (en gardant à l'esprit que le nombre de champs n'est pas fixe) dans la base de données à l'aide de - JSON ou colonne-par-champ? Aussi, si le premier modèle est mis en œuvre, comment interroger la base de données comme décrit ci-dessus? Dois-je utiliser à la fois les modèles, en stockant toutes les données qui peuvent être recherchés par une requête dans une ligne distincte et d'autres données en JSON (est une ligne différente)?
Mise à jour
Depuis il n'y aura pas trop de colonnes sur lequel j'ai besoin d'effectuer de la recherche, est-il sage d'utiliser les deux modèles? Touche-par-colonne pour les données que j'ai besoin de rechercher et de JSON pour les autres (dans la même base de données MySQL)?