2009-09-02 10 views
2

Je sais que vous allez dire qu'il y a plusieurs doublons pour cette question. J'ai lu la plupart d'entre eux. Mais j'ai besoin d'une réponse à l'affaire spécifique que je présente.Stockez des millions de petites images dans les champs de blobs de Firebird

Je prévois de stocker des millions de petites images jpg (environ 3 Ko) dans une base de données Firebird.

Hypothèses:
- Le tableau qui contiendra ces images ne contiendra pas d'autre information que sa clé;
- Ce n'est pas une application Web;
- Les images ne seront jamais mises à jour;
- Dans la plupart des cas, la base de données n'atteindra jamais un Go de plus d'un chiffre;
- Le serveur doit être facile à entretenir, car il n'y aura pas d'administrateur de base de données pour s'en occuper.

Est-ce une bonne approche? Ou devrais-je envisager de sauvegarder les images dans le système de fichiers?

S'il vous plaît. J'ai besoin d'une réponse spécifique pour les applications non-web et pour les bases de données Firebird.

+0

Une raison particulière pourquoi? –

+0

Le stockage de données binaires dans une base de données n'a tout simplement aucun sens. Vous ne pouvez pas filtrer vos résultats par des données d'image binaires. Vous ne pouvez pas le manipuler. Il ne tire pas parti de * quoi que ce soit * fourni par une base de données. –

+4

Oui, il profite de sa capacité à stocker des données. Si vous utilisez déjà la base de données pour stocker d'autres éléments, il est logique de continuer à l'utiliser pour stocker les images, plutôt que de stocker vos données à deux endroits différents. – skaffman

Répondre

1

Je vois une discussion à ce sujet dans Firebird News

La question est: blob ou non blob?

1

Dans une société précédente, nous stockions 155 millions d'images à 32 Ko chacune dans une base de données Oracle 8 (puis 9 et ensuite 10). Cela a également eu plus d'informations sur chaque image.

Donc, je pense que FireBird devrait être en mesure de contenir un million ou plus sans casser trop de sueur.

+0

La gestion binaire varie considérablement d'une base de données à l'autre.Oracle, par exemple, est très mauvais pour stocker des BLOBs (ça détruit le log de tx), mais ok avec des RAW. Firebird peut aussi aspirer les binaires. – skaffman

+0

Cela a parfaitement fonctionné pour nous. –

0

Je recommande le stockage dans un système de fichiers - mais, effectuez une ou plusieurs des trois choses:

  • magasin eux dans une structure hiérarchique de répertoires (ne peut pas suggérer des détails sans connaître le contexte), de sorte que il n'y a pas de problème avec la lecture de grands répertoires
  • les stocker dans des ensembles dans les archives (goudron par exemple), éventuellement comprimé - pour économiser sur les pertes du système de fichiers de stockage de petits fichiers
  • ont un mécanisme de mise en cache dans votre application.
0

La meilleure approche est pas pour stocker les images dans le dBase, mais au lieu de les stocker avec le système de fichiers.

Vous pouvez ensuite utiliser une table de recherche d'images dans votre dbase, dans laquelle chaque enregistrement contient un chemin relatif ou absolu vers les fichiers image dans le système de fichiers.

En règle générale, il est très peu performant de conserver pour stocker des images en tant que blobs dans une base de données.

Questions connexes