2017-08-21 3 views
2

J'ai un capteur envoie les valeurs x, y et z, je veux enregistrer ces données dans une ligne/cellule dans la base de données MySQL. Parce que le capteur envoie des milliers de données (x, y, z) en une minute et je sais que si j'insère chaque donnée x, y et z dans une nouvelle ligne, cela prendra du temps pour récupérer toutes ces données et cela prendra du temps. Je sais que c'est possible dans Neo4j mais je ne suis pas sûr que ce soit possible dans MySQL. Si c'est le cas, quelqu'un peut-il m'aider s'il vous plaît en montrant un exemple?Est-il possible d'ajouter un ensemble d'éléments dans une cellule dans mysql?

L'image suivante montre comment je veux que les données soient insérées. [Example of the database that I am trying to use]

+0

de son apparence, x, y et z devraient être des colonnes différentes sur la même ligne. il serait peut-être gênant de devoir supprimer x et z de la valeur renvoyée de la base de données si, pour une fonction quelconque, seulement y était nécessaire à l'avenir. – coderodour

Répondre

2

Depuis MySQL 5.7, vous pouvez avoir JSON fields:

INSERT INTO t1 VALUES('[{"x":20,"y":40,"z":50},{"x":30,"y":50,"z":60}]'); 

Ensuite, pour obtenir par exemple les coordonnées X par ligne:

SELECT data->"$[*].x" FROM t1; 

Fiddle

Cependant, Je pense avoir un champ séparé pour chaque coordonnée serait OK aussi. Même si vous avez toutes les coordonnées dans un champ, vous devrez les gérer dans votre application. La plupart du temps, vous ne pouvez pas battre MySQL dans la récupération optimisée des données.

+0

Merci pour votre réponse mate. est-il possible que la même clé puisse avoir différentes valeurs dans la même cellule? comme mon image le montre. @ishegg –

+0

Absolument. C'est un champ JSON, vous pouvez mettre tout ce que vous pouvez encoder en JSON. J'ai modifié la réponse pour afficher plus de données enregistrées. – ishegg

+0

Pouvez-vous s'il vous plaît me montrer un exemple de la création de la base de données parce que j'ai regardé votre lien, mais ne pouvais toujours pas trouver le chemin de la création de la base de données. –