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

C# Discussion :

Sécurisation liaison base de données


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut Sécurisation liaison base de données
    Bonjour,
    Je cherche à optimiser une application multithread, cette dernière lit et écrit dans une base de données ( .DB), et plusieurs instances de cette application tourne sur différentes machines.
    Je voudrais avoir la certitude que la base de données n'est lu et/ou écrite que par un seul thread à la fois, et donc par un seul utilisateur également, pour ce faire, j'utilise pour le moment un fichier .lck que je créé lorsqu'un thread prend la main sur la BDD, et que je détruis lorsqu'il lâche la main.
    Cela a l'air de fonctionner (le fichier .lck étant situer sur le serveur, à côté de la bdd), mais cela ne me semble pas très propre, or je voudrais avoir la certitude que cette bdd n'est accessible que par un thread d'une seule instance du prog à la fois.
    Quelqu'un saurait ce que je dois faire pour cela ?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Regarde du côté de la classe Semaphore (System.Threading).

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Merci Kaidan, mais, est-tu sûr qu'avec un sémaphore, ou un mutex (puisque de toute manière, je ne désire permettre qu'un seul accès à la fois, que ce soit en lecture ou en écriture), ma BDD ne sera pas touché par des programmes lançés depuis plusieurs postes différents ?
    Je pense que le mutex permets la synchronisation entre threads et applications sur le même poste, mais je ne sais pas si il permets de faire la même chose entre des applications se déroulant sur 2 postes distincts allant tout les 2 chercher des infos ou en écrire sur un 3ème poste,...

    Bonne journée

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Le fichier .lck était utilisé pas mal avant les SGBD modernes (dans le cas de fichiers ISAM par exemple). Les problèmes sont connus : si le thread plante, il est possible que le .lck ne soit pas effacé ce qui bloque l'application globalement. De plus, le disque dur étant un périphérique lent, chaque création / suppresion du .lck fait perdre du temps et diminue donc la réactivité de la base de donnée.

    Aujourd'hui, avec les SGBD modernes, on peut écrire des transactions avec un niveau d'isolation "serializable" permettant d'être sûr que deux requêtes concurrentes ne vont pas lire et écrire les mêmes données en même temps.

    Je me pose donc la question de savoir quelle est la base de donnée utilisée dans ton cas.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    J'utilise le sgbd de Borland par défaut, le Borland Database Engine, et la base de donnée utilisée est de type paradox et dBase,...
    Mais, j'essaie autant que faire ce peut de ne pas toucher au SGBD, sa configuration a été faite pour correspondre à 3 ou 4 programmes réalisés en Delphi par un développeur qui a quitté la boîte, mais les programmes sont un peu "bizarres" en ce sens que toutes modification sde la structure des bases de données les fait planter :s

    C'est pour cela que je ne me sert pas du sgbd, que j'espère remplacer par un sqlserver à terme, au fur et mesure que les vieux programmes seront remplacés, si cela se fait un jour.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    Et donc, qu'est ce qui est en C# dans tout ça ?

Discussions similaires

  1. Sécuriser la base de données (groupes/usagers)
    Par mathias dans le forum Sécurité
    Réponses: 1
    Dernier message: 03/10/2006, 08h58
  2. Sécuriser la base de données?
    Par jessy212 dans le forum Sécurité
    Réponses: 4
    Dernier message: 06/09/2006, 14h00
  3. Sécuriser une base de donnée
    Par Waluigi dans le forum Sécurité
    Réponses: 1
    Dernier message: 30/05/2006, 10h48
  4. [CR] Liaison base de données mysql
    Par RR instinct dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 29/03/2006, 13h43
  5. [VB]Liaison base de données access
    Par nona1 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/03/2006, 16h27

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