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

 PostgreSQL Discussion :

Gestion fichiers de données externes


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 22
    Points : 17
    Points
    17
    Par défaut Gestion fichiers de données externes
    Bonjour,

    Je suis en train de mettre en place une base de données qui contient une table qui référence des fichiers. Ces fichiers sont stockés en dehors de la base de données pour des raisons d'accès. Lors de la suppression d'une ligne de la table, il faut automatiquement supprimer les fichiers correspondant. J'aurai voulu savoir si il y avait un moyen que Postgres gère cette action et si non quelle est la méthode habituellement suivie ? je suis preneur de toutes idées.

    Merci de votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Le mieux est un déclencheur DELETE qui lance une commande OS DELETE.

    Cependant, il existe dans la norme SQL un type de données le DATALINK (voir mon bouquin sur SQL) qui automatise tout cela et permet d'avoir un synchronisation permanente entre la base et les fichiers. Cela est implémenté dans IBM DB2 et dans SQL Server (FILESTREAM).

    Extrait de mon livre sur SQL :

    Le type DATALINK est une référence à un fichier externe, permettant, par exemple, de stocker des images, de la vidéo, des sons et des fichiers binaires. Les fichiers ainsi référencés restent sur un disque quelconque du système informatique. Les données sont donc externes à la base, mais il est possible de maintenir une intégrité, de manière à interdire modification et suppression des fichiers autrement que par un ordre SQL de la base.
    Il se déclare ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    DATALINK [ <options_de_contrôle> ]
     
    <options_de_contrôle> ::= 
       NO LINK CONTROL | FILE LINK CONTROL <option_de_contrôle_fichier>
     
    <option_de_contrôle_fichier> ::=
       <option_intégrité> <autorisation_lecture> <autorisation_écriture>
       <option_récupération> [ <option_détachement> ]
     
    <option_intégrité> ::=
       INTEGRITY ALL
       | INTEGRITY SELECTIVE
       | INTEGRITY NONE
     
    <autorisation_lecture> ::=
       READ PERMISSION FS
       | READ PERMISSION DB
     
    <autorisation_écriture> ::=
       WRITE PERMISSION FS
       | WRITE PERMISSION BLOCKED
     
    <option_récupération> ::=
       RECOVERY NO
       | RECOVERY YES
     
    <option_détachement> ::=
       ON UNLINK RESTORE
       | ON UNLINK DELETE
       | ON UNLINK NONE
    NO LINK CONTROL signifie que les liens ne sont connus par la base que par leur nom (URI : Uniform Ressource Identifier). Dans le cas contraire, FILE LINK CONTROL, il est possible de piloter les liens par les options de la base de données décrites ci-dessous :
    • INTEGRITY ALL : seul un ordre SQL peut supprimer ou modifier les fichiers afférant au lien.
    • INTEGRITY SELECTIVE : un ordre SQL, comme le système de fichier de l’OS, peut supprimer ou modifier les fichiers afférant au lien.
    • INTEGRITY NONE : seul le système de fichier de l’OS peut supprimer ou modifier les fichiers afférant au lien.
    • READ PERMISSION FS : les droits en lecture sont définis par le système de fichiers.
    • READ PERMISSION DB : les droits en lecture sont définis par la base de données.
    • WRITE PERMISSION FS : les droits en écriture sont définis par le système de fichiers.
    • WRITE PERMISSION BLOCKED : aucun droit en écriture n’est autorisé.
    • RECOVERY YES : sauvegarde et restauration possibles dans le cadre de la base de données.
    • RECOVERY NO : sauvegarde et restauration impossibles dans le cadre de la base de données.
    • ON UNLINK RESTORE : restaure les droits et propriétaire système originels si le lien est détaché de la base.
    • ON UNLINK DELETE : supprime le fichier en cas de détachement de la base.
    • ON UNLINK NONE : en cas de détachement de la base, le fichier n’est pas supprimé et les droits restent tels quels (des droits système sont appliqués par défaut si cela est possible).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE T_FILM_FLM
    (FLM_ID    INT NOT NULL PRIMARY KEY,
     FLM_TITRE VARCHAR(256),
     FLM_FILM  DATALINK FILE LINK CONTROL
                        INTEGRITY ALL
                        READ PERMISSION DB
                        WRITE PERMISION BLOCKED
                        RECOVERY YES
                        ON UNLINK NONE,
     FLM_ANNEE INT)
    SQL:1999 fournit, en outre, des fonctions afin de piloter l’insertion, la restitution, comme l’extraction de certaines parties de l’URI :
    • DLVALUE : instancie la valeur de l’URI pour la colonne de type DATALINK (constructeur).
    • DLURLCOMPLETE : restitue la valeur de l’URI contenu dans la colonne de type DATALINK.
    • DLURLPATH : restitue le chemin de l’URI, avec son origine.
    • DLURLPATHONLY : restitue le chemin de l’URI, sans son origine.
    • DLURLSCHEME : restitue le mode de flux (http ou file) de l’URI.
    • DLURLSERVER : restitue la ressource de l’URI.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO T_FILM_FLM (FLM_ID, FLM_TITRE, FLM_FILM, FLM_ANNEE)
           VALUES (178, 'West Side Story', 
                   DLVALUE('file://srvmed/films/WesSideStory.mpeg'),
                   1960)
    insère une ligne dans la table T_FILM_FLM avec la référence au fichier vidéo du film « West Side Story ».
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT FLM_TITRE, FML_ANNEE, DRURLCOMPLETE(FLM_FILM) AS FLM_MPEG
    FROM   T_FILM_FLM
    WHERE  FLM_ID = 178
     
    FLM_TITRE         FML_ANNEE    FLM_MPEG
    ----------------- ------------ ---------------------------------------
    West Side Story   1960         file://srvmed/films/WesSideStory.mpeg
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier Avatar de chh2008
    Inscrit en
    Mars 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 129
    Points : 106
    Points
    106
    Par défaut
    Bonjour,
    je suis aussi intéressé par ce type de donnée main je n'arrive pas a exécuté la requête il m'affiche :

    ERROR: syntax error at or near "FILE"
    LINE 4: FLM_FILM DATALINK FILE LINK CONTROL


    Merci de nous éclairez les idées un peut plus SQLpro.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par chh2008 Voir le message
    je n'arrive pas a exécuté la requête il m'affiche :

    ERROR: syntax error at or near "FILE"
    LINE 4: FLM_FILM DATALINK FILE LINK CONTROL
    Peut-être que ce mécanisme n'est pas implémenté dans Postgresql ?
    Citation Envoyé par SQLPro
    Cela est implémenté dans IBM DB2 et dans SQL Server (FILESTREAM).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Non, il faudrait au moins quelques années avant que postGreSQL parviennent à faire cela, car cela impacte fortement l'ensemble des OS sur lequel il doit tourner.... Bref, un travail de romain. Mieux vaut donc prendre un SGBDR qui sait le faire nativement, comme SQL Server.

    A noter, SQL Server va sortir en version Express 2008 R2 (gratuite) limité à des tailles de base de 10 Go (mais plusieurs bases possibles), hors FLIESTREAM !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [OL-2010] problème avec Logiciel externe et fichier de données par défaut
    Par Cool Coyote dans le forum Outlook
    Réponses: 0
    Dernier message: 12/09/2012, 14h26
  2. [Fichier] Récupérer donnée d'un fichier
    Par johnlehardos dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/05/2004, 13h42
  3. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 11h55
  4. Base de données externe
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 14h09
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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