Stocker JSON dans la base de données MySQL? [dupliquer]

Cette question a déjà une réponse ici:

est-il acceptable de stocker des données JSON dans une rangée de tables MySQL? J'ai besoin de stocker des tableaux dans une base de données mysql. Le problème est, je ne sais pas combien de colonnes, j'ai besoin de chaque utilisateur. Donc j'ai pensé à stocker JSON dans une rangée nommée array par exemple. Est-ce la meilleure façon de faire?

Edit:

Aussi, je suis en utilisant text comme type de colonne de tableau.

8
demandé sur user1947561 2013-03-14 00:00:45

4 réponses

Oui, c'est une très bonne idée d'utiliser mysql comme une valeur-clé magasin, en fait, facebook n'a, pour certaines utilisations.

CREATE TABLE `json` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `data` blob NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

la structure de table ci-dessus vous mènera loin. Il est très facile de se détacher ou de se regrouper.

Edit: le but ici est D'utiliser PHP, Ruby etc pour gérer le json/data. Vous n' SELECT ..., effectuez vos modifications, puis INSERT ... ON DUPLICATE KEY UPDATE ....

12
répondu Gustav 2013-03-13 20:04:52

stocker plus d'une donnée dans un champ de base de données relationnelle est généralement erroné. Il est possible de penser à des cas où il serait acceptable, mais pas pour stocker un utilisateur entier.

si une structure de base de données relationnelle n'est pas suffisante, vous pouvez regarder une base de données NoSQL au lieu de MySQL.

2
répondu jonixj 2013-03-13 20:06:49

Ce n'est pas un problème. mySQL peut déjà gérer la plupart des parenthèses et des caractères funky dans leur champ de texte.

0
répondu ApolloSoftware 2013-03-13 20:03:23

je pense qu'il ne l'est pas. Qu'en est quatre mois plus tard, vous décidez d'ajouter un nouvel attribut à votre entité ou de supprimer certains attributs de votre entité? Comment allez-vous analyser votre ancien contenu json? Si vous ne savez pas combien de colonnes vous aurez besoin dans votre table, vous devriez penser d'une manière différente et peut-être créer une structure dynamique comme l'utilisation de user_column table

0
répondu sedat sevgili 2013-03-13 20:05:30