Developpez.com - Rubrique SGBD

Le Club des Développeurs et IT Pro

Sortie de SQLite 3.6.19

SQLite s'offre la gestion de foreign keys

Le 2009-10-15 07:38:02, par Emmanuel Lecoester, Membre expert
SQLite Release 3.6.19 On 2009 Oct 14 (3.6.19)

Changes associated with this release include the following:

* Added support for foreign key constraints. Foreign key constraints are disabled by default. Use the foreign_keys pragma to turn them on.
* Generalized the IS and IS NOT operators to take arbitrary expressions on their right-hand side.
* The TCL Interface has been enhanced to use the Non-Recursive Engine (NRE) interface to the TCL interpreter when linked against TCL 8.6 or later.
* Fix a bug introduced in 3.6.18 that can lead to a segfault when an attempt is made to write on a read-only database.
Que pensez-vous de cette nouveauté ?
Va-t-elle permettre un nouveau regain d'intérêt pour cette base de données ?
  Discussion forum
22 commentaires
  • _skip
    Expert éminent
    Voilà qui invalide mon affirmation d'hier...

    J'ai essayé il y a 1-2 ans d'insérer tout le contenu d'en-tête d'un newsgroup dans sqlite (uniqueID / Groupe / ArticleId / titre / auteur/ date). Les performance en ajout étaient impressionnantes jusqu'à 100'000 enregistrements (4-5000 insertions secondes). Par contre passé le million ça tombait dans les 200/sec.

    A ce que j'ai pu lire, cette lenteur viendrait des contraintes d'unicité qui sont des btree et non des hash index. Je me demande si ce problème est d'actualité.
  • Rapha222
    Membre habitué
    Envoyé par Emmanuel Lecoester
    SQLite Release 3.6.19 On 2009 Oct 14 (3.6.19)

    Que pensez-vous de cette nouveauté ?
    Va-t-elle permettre un nouveau regain d'intérêt pour cette base de données ?
    Absolument génial \o/.

    J'espère que ça sera vite implanté à peu près partout (sur les distribs linux en tout cas), comme ca ou pourra commencer à l'utiliser dans nos programmes, car la c'était tout à fait possible, mais il fallait passer par des générateurs de triggers, c'est un peu lourd quand on a une dixaine de tables ou plus ...
  • sidev
    Membre du Club
    ça va vraiment accélérer les choses je pense. Mais j'attend de tester voir ce que ça donne par rapport à mon bien aimé SqlServeur
  • Rapha222
    Membre habitué
    Envoyé par sidev
    ça va vraiment accélérer les choses je pense. Mais j'attend de tester voir ce que ça donne par rapport à mon bien aimé SqlServeur
    C'est pas du tout la même utilisation, sqlite étant une BDD embarquée (ou alors il faut utiliser SQL Server CE, mais je sais pas où ca en est niveau fonctionnalités).
    SQLite est de plus en plus utilisée, beaucoup d'applis Linux l'utilisent, c'est la BDD intégrée à MacOS (et sa version mobile) et Android, ...
    Personnelement je l'utilise en C#, ce qui me permet de faire fonctionner mes applis aussi bien sur Linux/OS X avec Mono que sur Windows avec .NET
    Le fait qu'elle évolue bien devrait se ressentir sur les applications qui l'utilisent

    Edit:
    Il manque tout de même pour moi quelques petites choses à SQLite pour rendre son utilisation vraiment agréable:
    * Pouvoir mettre des sous-requêtes dans les contraintes ;
    * Les vues modifiables (on peut s'en passer avec des triggers INSTEAD OF) ;
    * Plus de fonctions intégrées: il n'y a presque pas de fonctions mathématiques (SQRT, SIN, ...) par exemple;
    * Un index FULLTEXT.

    Mais comme dit plus haut, l'objectif de SQLite n'est pas de gérer des grosses tables (> 200 000 enregistrements). En théorie, une application qui utilise SQLite ne devrait jamais arriver à cette limite, si c'est le cas, il faut passer son chemin. Par exemple, Banshee utilise SQLite pour gérer sa bibliothèque multimedia, et c'est vraiment efficace et rapide, comparé à ses concurrents, ...
  • sidev
    Membre du Club
    Envoyé par Rapha222
    (ou alors il faut utiliser SQL Server CE, mais je sais pas où ca en est niveau fonctionnalités).
    ...
    Même si SQL Server CE et Sqlite joue dans la même catégorie il faut signaler que
    Sqlite est très simple (c'est ça qui fait sa force). SQL Server CE est plus complexe d'autant plus qu'il fournit des fonctionnalités bcp plus avancés.
  • Rapha222
    Membre habitué
    Envoyé par sidev
    Même si SQL Server CE et Sqlite joue dans la même catégorie il faut signaler que
    Sqlite est très simple (c'est ça qui fait sa force). SQL Server CE est plus complexe d'autant plus qu'il fournit des fonctionnalités bcp plus avancés.
    Je ne connais pas très bien SQL Server CE, car j'utilise principalement Mono.
    Tu saurais rapidement donner ce qu'il y a en moins dans la CE par rapport à la version serveur ou/et ce que CE supporte par rapport à SQLite (par example, support-il les requêtes récursives, comme la version serveur ?).

    Merci
  • sidev
    Membre du Club
    Envoyé par Rapha222
    Je ne connais pas très bien SQL Server CE, car j'utilise principalement Mono.
    Tu saurais rapidement donner ce qu'il y a en moins dans la CE par rapport à la version serveur ou/et ce que CE supporte par rapport à SQLite (par example, support-il les requêtes récursives, comme la version serveur ?).

    Merci
    La récursivité non je pense pas. Mais il offre plus de fonctions math que Sqlite.
    On peut même faire de la réplication de données avec SqlServer 2000 et ultérieurs , ceci fait partie de ces nouvelles fonctionnalités.
  • robert_trudel
    Membre éprouvé
    Envoyé par sidev
    ça va vraiment accélérer les choses je pense. Mais j'attend de tester voir ce que ça donne par rapport à mon bien aimé SqlServeur
    lequel?

    mysql, oracle, db2?
  • Rapha222
    Membre habitué
    Envoyé par robert_trudel
    lequel?

    mysql, oracle, db2?
    Non, SQL Server, il l'a dit ^^'
  • Envoyé par Rapha222
    Mais comme dit plus haut, l'objectif de SQLite n'est pas de gérer des grosses tables (> 200 000 enregistrements). En théorie, une application qui utilise SQLite ne devrait jamais arriver à cette limite, si c'est le cas, il faut passer son chemin. Par exemple, Banshee utilise SQLite pour gérer sa bibliothèque multimedia, et c'est vraiment efficace et rapide, comparé à ses concurrents, ...
    Je suis en désaccord avec ça : un SGBD qui ne peut pas tenir la charge serait à éviter absolument (tous les projets grossissent). Ce n'est pas le cas d'sqLite :
    Mon projet a commencé à 100 lignes, il approche aujourd'hui le million et j'espere bien qu'il ira jusq'à 50 M pourquoi n'irait-il pas ? contrairement à access il ne connait pas de chute brutale de perf mais je n'ai pas encore testé à pleine charge.