Données binaires dans MySQL

Comment stocker des données binaires dans MySQL ?

0
ajouté édité
Vues: 22
ajouté l'auteur juergen d, source
@Nevir: De quelles informations parlez-vous précisément? Qu'est-ce qui vous manque à @ phpguy et @Mat's réponses?
ajouté l'auteur eggyal, source
Désolé, je ne voulais pas généraliser cela (a rencontré un bug d'interface utilisateur avec SO), mais ne peut pas supprimer la prime
ajouté l'auteur Nevir, source

8 Réponses

La réponse de phpguy est correcte mais je pense qu'il y a beaucoup de confusion dans les détails supplémentaires là-bas.

La réponse de base se trouve dans un domaine de type / attribut de données BLOB . BLOB est l'abréviation de Binary Large Object et ce type de données de colonne est spécifique au traitement des données binaires.

Voir la page de manuel correspondante pour MySQL .

0
ajouté

Je recommande fortement contre le stockage de données binaires dans une base de données relationnelle. Les bases de données relationnelles sont conçues pour fonctionner avec des données de taille fixe; C'est là que leur force de performance est: rappelez-vous ancien article de Joel sur pourquoi les bases de données sont si rapides? car il faut exactement 1 incrément de pointeur pour passer d'un enregistrement à un autre enregistrement. Si vous ajoutez des données BLOB de taille indéfinie et très variable, vous allez bousiller les performances.

Au lieu de cela, stockez les fichiers dans le système de fichiers et stockez les noms de fichier dans votre base de données.

0
ajouté
Je n'ai pas baissé le ton, mais cela pourrait être dû à ce qu'il implique que vous ne devriez jamais le faire, par opposition à dire que c'est une mauvaise idée la plupart du temps. Je suis d'accord avec lui en général, mais pas dans 100% des cas. Il peut y avoir d'autres considérations que la performance. Par exemple, je travaille sur quelque chose maintenant où la performance n'a pas d'importance du tout. D'autres facteurs tels que la centralisation, la simplicité et les sauvegardes signifient que dans ce cas, le stockage dans la base de données est logique. Une autre raison courante est la
ajouté l'auteur YeB, source

Une implémentation de stockage beaucoup mieux disponible ici . Vous rencontrerez des problèmes avec l'implémentation de Florian.

0
ajouté

Bien que vous n'ayez pas dit ce que vous stockez, et que vous ayez une bonne raison de le faire, la réponse est souvent «comme une référence de système de fichiers» et les données réelles se trouvent quelque part sur le système de fichiers.

http://www.onlamp.com/pub/a /onlamp/2002/07/11/MySQLtips.html

0
ajouté

The question also arises how to get the data into the BLOB. You can put the data in an INSERT statement, as the PHP example shows (although you should use mysql_real_escape_string instead of addslashes). If the file exists on the database server, you can also use MySQL's LOAD_FILE

0
ajouté

Bien que cela ne soit pas nécessaire, vous pouvez essayer les données d'encodage base64 et les décoder. Cela signifie que le db aura juste des caractères ascii. Cela prendra un peu plus d'espace et de temps, mais tout problème lié aux données binaires sera éliminé.

0
ajouté

Cela dépend des données que vous souhaitez stocker. L'exemple ci-dessus utilise le type de données LONGBLOB , mais sachez qu'il existe d'autres formats de données binaires:

TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB
VARBINARY
BINARY

Chacun a ses cas d'utilisation. S'il s'agit d'une longueur (courte) connue (par exemple des données compressées), les heures BINARY ou VARBINARY fonctionneront souvent. Ils ont l'avantage supplémentaire d'être en mesure d'indexer sur eux.

0
ajouté

Quand j'ai besoin de stocker des données binaires, j'utilise toujours le format VARBINARY , comme introduit byd0nut .

You can find documentation at MySQL website under documented topic 12.4.2 The BINARY and VARBINARY Types

If you are asking what are advantagese, please look at question why-varbinary-instead-of-varchar

0
ajouté