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 :

qui connait sqlite ?


Sujet :

SQLite

  1. #21
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 88
    Points : 46
    Points
    46
    Par défaut python-sqlite
    bonjour à tous

    je voulais savoir si quelqu4un utilise sqlite avec python et comme ça marche?
    avez vous des liens à communiquer?
    peut-on l'utiliser en mobile 6?
    et avec delphi 2006?

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 14
    Points
    14
    Par défaut Utiliser ou ne pas utiliser SQLite, là (n') est (pas) la question
    Ca fait un an ou deux que j'ai commencé à l'utiliser, pour une raison simple : pas d'autre choix (ouais, les boules au début, tu as tes habitudes sur mysql et... non faut réapprendre un autre truc ), c'était isolément et pour une toute petite application... Maintenant je n'utilise plus que ça ! bref, je me dis que c'est le moment de partager un peu tout ce que j'en pense.

    J'ai donc fait des bench pour voir un peu ce que ça donne, en plus d'un feeling général, sqlite2 est très robuste mais c'est pas franchement un foudre de guerre question vitesse, enfin ça reste suffisant pour... 98% des applications. Par contre sqlite3 place la barre très très haut en terme de performances, au moins aussi robuste que son petit frère, aussi (ou plus) rapide que myisam (une sacré référence en terme de rapidité, pas comme le innodb...) en écriture, et carrément 2 à 3 fois plus rapide en lecture peu importe la taille de la base ! attention toutefois aux requêtes trop compliquées (jointures en folies) pour lesquelles les résultats peuvent être assez différents.

    Au final SQLite3 convient efficacement pour quasiment toutes les applications (on laisse les 2% qui reste à oracle et ses potes) pour peu qu'on soit pas trop exigent sur l'interface d'administration de la base... (faut quand même avouer que c'est pas le pérou, bon perso j'utilise sqliteman sous ouinedoze et pour le web, j'ai fait ma propre appli...)

    Il est souvent dit que le talon d'Achille de SQLite est la question des accès concurrents, c'est plus vraiment vrai (je manque de recul pour savoir exactement où une base tunée à mort va cracker mais c'est clairement très au delà de 100 accès concurrents en écriture/seconde sur une machine correcte). SQlite3 a amené de bonnes améliorations dans la gestion des accès concurrents. En fait la base est lockée une fraction de seconde pendant un commit, là est le principal problème.

    Il y a deux moyens de contourner ce problème :
    - stocker chaque table dans un fichier séparé, ainsi seules les tables en cours d'écriture sont lockées au lieu de locker toute la base.
    - la mise en attente. Ca peut sembler évident, sauf que par défaut, si une requête SQLite est confrontée à un lock, elle retourne une erreur ! Ca parait dingue, et pourtant c'est vrai. Cela dit, le mécanisme de mise en attente est implémenté (il ne fonctionne vraiment bien que depuis les versions très récentes de sqlite, ça peut sembler incroyable que ce point crucial n'est pas été mieux traité, mais le projet sqlite a eu jusqu'à peu pour seule ambition de remplacer avantageusement les fichiers de configuration !!), il suffit de l'activer via la fonction sqlite3_busy_timeout.

    Malgré tout, il manque encore un élément franchement essentiel pour faire face à un gros trafic : le cache. SQLite ne peut pas, par conception, conserver des résultats de requête d'un client pour les clients suivant. Dans l'avenir, on peut imaginer que ça change (au hasard grâce à un démon genre sqlite_cache chargé de faire passerelle entre les connexions), en attendant il faut faire sans.

    Mais là aussi, il existe des moyens de palier à ce vide cruel via une solution de cache externe qui dépendra de l'environnement de développement.

    Enfin, question performances pures, sqlite3 étant parfaitement journalisé (garantie super solide de l'intégrité de la base en cas de coupure brutale de courant), il est inutile de cumuler cette aptitude avec les fonctions de journalisation du système de fichier. En effet, les perf de sqlite sont assez dépendantes des perf du système de fichier, il vaut mieux que ce dernier soit très rapide => je préfère donc du ext2 à du ext3 pour stocker les bases. D'autre part, pour certaines opérations répétitives telles que des batch d'inserts par centaines de milliers, on pourra avantageusement désactiver ponctuellement totalement la journalisation, la synchronisation et travailler en ram (sans filet donc !) :
    PRAGMA journal_mode = off; PRAGMA synchronous = 0; PRAGMA temp_store = 2;
    En conclusion, avec l'intégration dans php 5.3, sqlite est en passe de devenir une solution formidable même si pour l'heure elle nécessite encore quelques "bons réglages" ou "adaptations plus ou moins lourdes" pour vraiment la mettre en face d'un sgbd traditionnel. Autrement dit, non geek s'abstenir.
    Pour info SQlite est la base de données la plus diffusée dans le monde (un certain nombre d'applications l'utilise en interne, dont Firefox, ceci explique cela )

    Pour la petite histoire, concrètement j'utilise sqlite3 avec un php 5.3.1 recompilé auquel j'adjoins xcache pour lequel j'ai développé une petite classe de gestion de cache aux petits oignons, le tout avec lighty pour servir le peuple . Pour ceux que ça intéresse, php est recompilé car la prise en charge de sqlite3 dans php n'est pas encore tout à fait complète (pas d'accès à la fonction sqlite3_busy_timeout), voici la petite modif qui transcende la bêêête :
    fichier : php-5.3.1/ext/sqlite3/sqlite3.c
    fonction : PHP_METHOD(sqlite3, open)
    insérer à la ligne 149 (juste avant db_obj->initialised = 1;) :
    sqlite3_busy_timeout(db_obj->db, 30000); // Timeout de 30000 millisecondes, soit 30 secondes
    et hop on recompile, exemple très basique:
    $ rm configure
    $ ./buildconf --force
    $ CFLAGS="-O2 -march=native" ./configure --prefix=/usr --with-libxml-dir=/usr/lib --with-iconv-dir=/usr --with-pdo-mysql=/usr --with-mysql=/usr --without-pear --disable-ipv6 --with-zlib --enable-mbstring
    $ make
    $ sudo make install
    Pour ceux qui veulent jeter un oeil et trouver l'inspiration pour se bricoler un cache de requêtes, c'est par là que ça se passe :
    http://xcache.lighttpd.net/wiki/XcacheApi

  3. #23
    Invité
    Invité(e)
    Par défaut
    chapeau becoupama

    C# et PHP sont par nature très différents. Tu as travaillé sur les accès concurrents, moi je les ai exclus mais en ttt de signal, la perf est vraiment importante, pas question de récupérer un message d'erreur et le bouton reload n'est pas entré dans les moeurs

    tu devrais faire un tuto

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 14
    Points
    14
    Par défaut projet de tuto
    salut,
    un tuto ? dis moi ce qui te servirait et je vais voir si je peux faire un tuto potable

Discussions similaires

  1. [XUL] qui connait ? qui utilise ?
    Par gorgonite dans le forum Autres langages pour le Web
    Réponses: 6
    Dernier message: 15/06/2006, 10h41
  2. Interface JMAGICK ? Qui connait ? (compression image)
    Par ionix dans le forum Multimédia
    Réponses: 5
    Dernier message: 04/05/2006, 17h14
  3. Réponses: 6
    Dernier message: 10/04/2006, 15h41
  4. qui connait suipack?
    Par judor31 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 31/03/2006, 12h43
  5. Qui connait Putty ?
    Par viny dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 27/03/2004, 00h16

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