BLOB vs VARCHAR pour stocker des tableaux dans une table MySQL

J'ai une conception de la décision à prendre et je suis à la recherche pour certains de meilleurs conseils. J'ai un programme java qui a besoin de stocker un grand nombre (quelques centaines par jour) de la virgule flottante matrices dans une base de données MySQL. Les données sont d'une longueur fixe Double tableau de longueur 300. Je vois trois options raisonnables:

  1. Stocker les données sous forme d'un BLOB.
  2. Sérialiser les données et l'enregistrer comme un VARCHAR.
  3. Écrire les données sur le disque en tant que fichier binaire et stocker une référence à la place.

Je dois aussi mentionner que ces données seront lues et mises à jour fréquemment.

Je veux utiliser une GOUTTE puisque c'est ce que j'ai fait dans le passé et il semble que la méthode la plus efficace (par exemple, maintient largeur fixe & pas besoin de convertir une chaîne séparée par des virgules). Cependant, mon collègue est en insistant sur le fait que nous devrions sérialiser et l'utilisation varchar pour des raisons qui semblent surtout dogmatique.

Si l'une de ces méthodes est mieux que l'autre, sont les raisons de Java et MySQL spécifique?

Pour effectivement répondre à votre question spécifique concernant VARCHAR vs BLOB: aller pour le BLOB! VARCHAR prendra plus d'espace et plus lente à opérer. Il sera également difficile à opérer (toujours la conversion en arrière et en avant). Comme pour cette discussion sur les 300 LIGNES vs 1 LIGNE, comme le projet de Loi Karwin montre ci-dessous: les 300 lignes approche va prendre au moins 2 fois plus d'espace, et il sera plus lent. Je pense aussi qu'il sera plus difficile à opérer; ie. vous aurez besoin d'écrire plus de code dans votre application pour traiter avec cette approche. BLOB est bien ici. Et en laissant travailler seul code est bon, aussi.
+2 à Julius pour répondre à la question spécifique et +1 pour le projet de Loi pour les conseils

OriginalL'auteur Doug | 2010-06-24