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

SQLite Discussion :

Concurrence d'accès SQLite


Sujet :

SQLite

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut Concurrence d'accès SQLite
    Bonjour,

    Peut-on oui ou non avoir des accès concurrents (je veux dire simultanés) par plusieurs utilisateurs avec SQLite ?

    Sur certains sites, dont wikipedia, ce n'est jamais très clair.
    Exemple wikipedia:
    "...il ne permet pas à différents processus ou thread d'accéder en écriture à la même base de données et n'est donc pas conçu pour gérer de nombreux accès concurrentiels."
    S'il ne permet pas... , il n'y a pas d'accès simultanés pour moi, non ?


    Pour expliciter un peu plus, au cas où:
    J'ai besoin de me faire une petite base de données qui contiendrait environ 1500 personnes et serait utilisée par 4 ou 5 personnes.
    Sachant qu'il y a peu de chances (mais ce n'est pas impossible) qu'une des personnes appelle la fiche d'un même adhérent au même moment que quelqu'un d'autre, est-ce que ça risque de planter ou pas ? En revanche, plusieurs personnes doivent avoir accès à la base au même moment.

    Sinon, j'ai pensé aussi à Postgresql . Est-ce une base facile à utiliser ?
    Merci de votre aide
    Dominique

  2. #2
    Membre actif

    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    Oui, Sqlite gère les accès concurents, mais un par un. Je m'explique : si tes connectés on chacun leur logiciels sur leurs machines et que la base est partagée, alors il y aura des vérouillages d'enregistrement au moment où une application écrira dans la base. Au fond c'est comme un fichier texte que plusieurs personnes modifieraient en même temps.

    Un exemple simple (simplet ?), dans une première fenêtre (A) on lance :
    >sqlite3 essai.db

    dans une autre fenêtre (B) :
    >sqlite3 essai.db
    >begin transaction;
    >create table test (a text);

    Retour à la première fenêtre (A):
    >select (*) from test;
    SQL error: database is locked

    Donc pendant une écriture, tu peux vérouiller la base avec begin transaction, il se produit alors des erreurs pour les autres accès, y compris en lecture.

    Retour à la seconde fenêtre (B):
    >insert into test values ('xxxx');
    >commit;

    Retour à la première fenêtre (A):
    >select (*) from test;
    xxxx

    Ainsi, lorsque tu retires le vérou, la donnée est visible dans l'autre session (on
    a bien un accès concurentiel de deux process).
    C'est donc ton programme qui devra patienter lorsque tu mettras à jour ta base. Une base comme Oracle ou Postgresql ne travaille pas de la même façon, car le "moteur" qui écrit dans le fichier est situé sur le serveur, pas sur le poste client. Il écrit donc séquentiellement les informations et sait mieux gérer les accès concurents.

    Pour finir, je dirais que Sqlite est beaucoup plus rapide que Postgresql, que c'est idéal pour faire une petite base sans se prendre la tête avec un serveur de bases de données.
    cf : http://www.sqlite.org/speed.html


    a+

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/05/2006, 19h09
  2. Concurrence d'accès sur une même donnée
    Par freelancer dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2006, 18h13
  3. Trigger et concurrence d'accès
    Par mehdijaqir dans le forum Oracle
    Réponses: 4
    Dernier message: 14/04/2006, 12h31
  4. Réponses: 2
    Dernier message: 15/02/2006, 17h35
  5. Problème de concurrence d'accès sous Windows
    Par DJZiaK dans le forum SQLite
    Réponses: 6
    Dernier message: 10/05/2005, 17h21

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