IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

BLOB ou BFILE, lequel est le mieux ?


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 60
    Par défaut BLOB ou BFILE, lequel est le mieux ?
    Bonjour,

    J'ai une question sur la structure d'une table sous Oracle 10g et 11g, mon application stocke nativement des fichiers en base comme blob dans une table tab_file:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE tab_file
    (
         m_INDEX VARCHAR2 (10) DEFAULT 'IGNORE' NOT NULL       
        ,m_FILE BLOB DEFAULT empty_blob()
    );
    Un projet prévoit d'importer 21 000 000 de fichiers (donc autant d'entrées dans cette table).
    Chaque fichier aura une taille de moins de 500Ko en moyenne.

    La question est de savoir si Oracle tiendra la charge ?
    Et surtout faut-il modifier le stockage des fichiers blobs en passant par des BFILE, si oui, quel est impact en terme de performance, requêtage, indexation, sauvegarde, etc ...

    Merci pour vos avis

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Avec le BFILE se pose le problème de la synchronisation entre les métadonnées (chemins stockés en base) et les données réelles, notamment lors des sauvegardes, mais aussi à tout moment. Si un fichier est supprimé/déplacé au niveau de l'OS, la base n'en sait rien.

    Le BFILE peut être au contraire une exigence si vos fichiers ont un contenu qui doit évoluer, et qui est modifié par des moyens externes à la base.

    Le BLOB a un véritable intérêt à mon sens si la table comporte d'autres colonnes que le BLOB, qui vont être demandées lors du SELECT, alors que le BLOB ne sera la plupart du temps pas sélectionné. Comme le BLOB est un segment autonome, il n'est chargé en mémoire que s'il fait partie des colonnes appelées dans le SELECT.
    (Par exemple, une table EMPLOYE dans laquelle il y aurait de nombreuses colonnes, dont une PHOTO qui est un BLOB).

    Or vous semblez être dans le cas contraire : en dehors du BLOB, il n'y a rien dans votre table.

    Citation Envoyé par Zugg Voir le message
    Chaque fichier aura une taille de moins de 500Ko en moyenne.
    La question est de savoir si Oracle tiendra la charge ?
    La question pourrait aussi être de savoir si l'OS tiendra la charge... Sauvegarder 21 millions de petits fichiers, ça n'est pas forcément une sinécure pour un OS, et ça prend généralement un temps démesuré par rapport au volume.


    Voilà, en espérant que ces réflexions vous aident à choisir...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 60
    Par défaut
    Merci Pomalaix,
    Sur la table j'ai d'autres colonnes et en effet si aucune requête ne demande la BLOB, le temps de requêtage ne devrait pas être impacté par cette volumétrie.

    Je suis tout à fait d'accord sur le problème d'accès aux fichiers dans le cas d'utilisation de BFILE, on peut les supprimer sans que la base ne soit au courant.

    Par contre concernant l'utilisation de BLOB, faut-il mieux ajouter une contrainte de stockage pour les stocker dans un tablespace à part ? Faut-il découper le tablespace en plusieurs datafiles ?
    Déjà niveau stockage, un BIGFILE me semble obligatoire, non ?

    Merci

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Compte tenu de vos chiffres, on est dans une volumétrie de l'ordre de 10 To.

    Il faut trouver le découpage bien dosé pour que les fichiers gardent une taille raisonnable permettant de les sauvegarder/restaurer en un temps acceptable, et un nombre de fichiers total n'excédant pas, je dirais, 2 ou 300.

    Dans l'absolu, 10 To peuvent tenir à l'aise dans l'unique fichier d'un tablespace BIGFILE, mais je doute qu'un tel fichier soit aisément manipulable.
    Vous allez probablement avoir du partitionnement qui va déjà conduire à un premier découpage des tablespaces. Il faudra voir si la taille individuelle de ces tablespaces permet que chacun soit constitué d'un fichier unique ou non.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 60
    Par défaut
    Merci Promalaix pour ces avis.

    Je vais en effet voir pour du partionnement et faire une évaluation de la volumétrie pour trouver le bon découpage pour les fichiers de données.

    Mais en effet tout mettre dans un seul fichier BIGFILE ne semble pas être la meilleure solution en ce qui concerne les sauvegardes et restaurations.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Mais en effet tout mettre dans un seul fichier BIGFILE ne semble pas être la meilleure solution en ce qui concerne les sauvegardes et restaurations.
    Et pourquoi pas? Idée préconcue ou non-connaissances des nouvelles fonctionnalités?

    Le blockrecover (10g) et le backup multisection (backup ... section size..., 11g) permettent restauration partielles et parallèles d'une partie d'un fichier.

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Il y a une différence fondamentale entre le bfile et le blob. Avec le bfile, tu ne passes pas de temps de chargement. Donc si tu charges 21 millions de doc en format bfile, tu en as pour quelques secondes. En format Blob, tu en as pour des jours. Après ça dépendra ce que tu veux en faire (les lire, les modifier, les indexer, etc)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 60
    Par défaut
    Dans l'application, aucune requête ne sollicite la colonne contenant le LOB si elle n'est pas nécessaire. Donc il n'y aura aucune lenteur sur cette partie.

    Et lorsqu'une requête va lire ou mettre à jour le LOB, elle le fera que pour 1 seul enregistrement donc 1 seul LOB.
    Avec ce fonctionnement, il ne devrait pas y avoir de ralentissement des traitements.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparatif Magento-Joomla. Lequel est le mieux ?
    Par zedo24 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/04/2009, 16h09
  2. Réponses: 9
    Dernier message: 25/04/2008, 21h30
  3. [StringGrid - DrawGrid] Lequel est le plus performant ?
    Par xenos dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/01/2006, 18h09
  4. Comment sélectionner le tabSheet sur lequel est posé un comp
    Par RamDevTeam dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/11/2005, 18h48
  5. [Optimisation] Lequel est le plus rapide ?
    Par TOTO32 dans le forum Langage
    Réponses: 10
    Dernier message: 14/08/2005, 23h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo