Question

J'ai fait un écran d'entretien des personnes. Le client veut que je stocker la photo de chaque personne dans la base de données, et je l'ai fait sans problème. J'ai une table séparée pour les images avec deux champs, Id_person, et de l'image.

Je suis un peu inquiet parce que c'est la première fois que je travaille avec des images dans la base de données. Je vais avoir des problèmes de performance lorsque la table se développe au-delà de 1000/5000 images? Je suppose que la taille de chaque image fera une différence. Je suis sûr que je vais devoir contrôler que l'utilisateur ne sauvegarde pas des images très grandes dans la base de données.

Quelle serait une limite de bonne taille? Le client seulement besoin les photos du visage, mais je suis sûr que quelqu'un va essayer de faire les photos avec un appareil photo « dernier modèle » en pleine qualité;)

Merci.

Était-ce utile?

La solution

Il est habituellement préférable de garder un dossier d'images et la DB simplement référence à ce dossier. Idéalement, chaque personne a un identifiant unique et les fichiers dans le dossier « images » correspond cet identifiant.

Si vous voulez vraiment stocker les données binaires directement, vous pouvez obtenir une photo de qualité raisonnable 8KB d'un JPEG (environ 250x250 pix à 25% la qualité). Bien sûr, cela serait inacceptable pour l'impression, mais est très bien pour l'identification.

Seulement, vous saurez si vous pouvez accepter une 8KB supplémentaire par ligne dans votre serveur de base de données.

Autres conseils

Si vous devez absoultely le faire de cette façon, je dirais limiter à seulement quelques kilo-octets chacun. Cependant, chaque administrateur de base de données dans le monde vous dira probablement que blobing images dans un champ de base de données est une idée très, très mauvais. La plupart noticably vous verrez la baisse des performances considérablement lorsque le fichier de base de données augmente au-delà de deux giga-octets en taille.

Je préférerais faire comme jheddings dit et avoir un dossier à chaque ID de personne le nom de fichier et il suffit d'utiliser un .jpg standard ou quelque chose après que sur un partage réseau pour tous les ordinateurs utilisant l'application peuvent accéder aux images.

Certains trouvent que utilisant simplement l'ID est pas assez bon Incase la photo doit être supprimé ou archivé, auquel cas ils vont mettre un champ NVARCHAR (MAX) dans leur base de données et stocker le chemin du fichier de réseau à l'image à la place de l'image réelle.

Je ne blob l'image si elle est absolument votre client ne peut pas avoir un chemin de partage réseau.

tant qu'il est dans le tableau séparé avec ID | blob ne ne devrait pas des problèmes de performance allant chercher cette photo, mais de l'autre côté je préfère garder DB que des références à des fichiers sur le disque dur (ou encore mieux si son seul user photo vous ne vraiment besoin d'une référence car l'utilisateur avec ID 1 va à /images/1.jpg)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top