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 :

Stocker des XLS dans BLOB


Sujet :

SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut Stocker des XLS dans BLOB
    Bonjour,

    Il a été décidé pour le projet sur lequel je bosse de stocker des fichiers XLS dans une colonne de type BLOB. La verison actuelle de la base est la 10.2.0.5, avec dans l'année une migration en 11g.

    Les fichiers XLS vont servir à restituer des tableaux et des graphes. Comme les calculs seront assez lourds et longs, ils veulent tout pré-calculer dans des fichiers et les stocker en base.

    J'avais plutôt proposer un stockage des fichiers sur un serveur dédié avec une colonne en VARCHAR ou BFILE car je pense que c'est plus efficace pour la base. Mais on m'a dit que ça n'était pas envisageable car trop lourd.

    J'ai créé le sujet pour avoir des retours d'expérience, des avis, préconisations ou arguments.
    J'espère donc que vous allez soit lever mes craintes, soit m'apporter des arguments infaillibles pour le projet.

    Merci.

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Je l'ai déjà fait sur un projet, ça ne pose pas vraiment de problème, sauf qu'il ne faut pas oublier que quand tu vas récupérer ton fichier, cela va transiter par ton appli (forcément, on ne peut pas juste donner un lien, par exemple) et donc qu'il va falloir tailler la mémoire allouable en fonction de la taille des fichiers et du nombre d'utilisateurs pouvant sauvegarder/demander de tels fichiers en parallèle.

  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    La différence BFILE vs BLOB, c'est que le BFILE ne stocke pas le fichier dans la base, mais sur le serveur. Donc il peut y avoir un problème de sécurité (n'importe qui ayant accès au serveur a accès aux fichiers).. et aussi de cohérence en cas de suppression manuelle des fichiers.
    J'ai une base avec des blob (images), choix du blob pour la sécurité. Par contre on les a mis dans une seconde base pour un problème de sauvegarde et d'export, et ce choix n'était pas très judicieux, car les BLOB par dblink, c'est très restreint.

    @Rei Ichido : Tu peux toujours accéder à tes fichiers dans un BLOB avec une URL avec modsql (je l'ai fait pour afficher des pdf), très pratique.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    Merci pour vos réponses.
    Donc pour vous, le BLOB ne pose pas de problèmes particulier ?

    Les utilisateurs ne feront que de la lecture. Ils iront juste chercher des fichiers contenant des tableaux d'indicateurs pré-calculés.
    Les calculs seront fait par batch la nuit.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Question bête peut-être, les calculs sont fait dans Oracle ou par d'autres mécanismes ?

    Si vous avez une structure, plutôt que de stocker des BLOB ça vaut le coup de stocker des données relationnelles.

    Recréer un fichier .csv exploitable par Excel depuis une table est relativement simple.

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    Les calculs sont faits par batch et insérés dans Oracle.
    Les tables contiennent les données à extraire directement.

    L'IHM est en java et les utilisateurs passent par un explorateur.
    L'architecte et les développeurs java ont dit qu'extraire les données directement de la base pour générer un XLS en dynamique à chaque demande des utilisateurs est impossible. Les fichiers contiennent beaucoup de lignes et beaucoup d'onglets et on m'a dit qu'il n'y aura jamais assez de mémoire.
    Je dis ça juste pour infos car je n'y connais rien.

    Les utilisateurs ont besoin de plusieurs onglets et veulent avoir une certaines présentations : couleurs, polices ...
    Donc le csv est difficile.

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    On a donc fait face au même problème

    Attention quand même au moment où les utilisateurs vont vouloir récupérer leurs fichiers, ça va passer par la jvm, et là ça peut faire mal si les xls sont volumineux et que plein d'utilisateurs le font en même temps (à tout hasard, vers la fin du mois quand ils commencent à récupérer les données pour faire leurs rapports).
    Il va falloir, ou bien gérer du process de mise en file pour ne pas traiter plein de fichiers en parallèle, ou bien avoir une heap size conséquente pour la jvm !

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    Ok
    Merci pour l'info. Je vais en parler aux personnes concernées.

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

Discussions similaires

  1. Stocker des jpg dans un fichier
    Par jmjmjm dans le forum Langage
    Réponses: 6
    Dernier message: 10/11/2005, 22h07
  2. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29
  3. Réponses: 2
    Dernier message: 15/06/2005, 17h32
  4. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51

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