Sortie de Berkeley DB 4.4

Posté par  (site web personnel) . Modéré par Jaimé Ragnagna.
Étiquettes :
0
16
déc.
2005
Base de données
La société Sleepycat vient de publier une nouvelle version du célèbre gestionnaire de bases de données Berkeley DB. Les efforts de développement ont surtout été portés sur les attentes des nombreux utilisateurs (+ de 200 millions), plus particulièrement sur les fonctionnalités de réplication et les performances.

Ainsi Berkeley DB supporte désormais les réplications de client à client et possède un utilitaire de sauvegarde à chaud. D'autres améliorations ont également été apportées au BTree, au niveau de la compression et de l'espace disque utilisé pour le stockage des données.

Dans la longue liste des utilisateurs de Berkeley DB, on retrouve notamment Amazon.com, AOL, Cisco Systems, EMC, Google, Hitachi, HP, Motorola, RSA Security, Sun Microsystems, TIBCO et VERITAS. Notez que Berkeley DB est, à l'instar de MySQL, disponible en dual-license. L'une, gratuite et Open-Source, peut être utilisée dans le cadre de développement d'applications Open-Source, l'autre est payante. Extrait de l'annonce :

New features in Berkeley DB version 4.4 include:

* In-memory replication;
* Client-to-client replication;
* Delayed client synchronization;
* Synchronization throttling;
* Master election speed-ups;
* Hot backup utility;
* Online Btree compaction;
* Online Btree disk space reclamation;
* Online abandoned lock removal;
* Automated recovery serialization;
* Transactional Application Developer's Guide.

Aller plus loin

  • # Et les mise à jours de bases?

    Posté par  . Évalué à 1.

    Juste pour savoir si vous avez des informations sur la compatibilité des base db 4.3 et db 4.4 ? Est-ce qu'on est obligé de passer par un dump, ou c'est compatible directement ?

    Parce que déjà que la mise à jour de subversion (je ne sais plus quelle version...) apportait la MàJ de db 4.2 à db 4.3. Il fallait tout dump avec la vielle lib, puis, import avec la nouvelle version. Je vous dis pas le bonheur que c'est quand on va pour commit, et qu'on voit une erreur inconnue. On a beau chercher, on trouve rien sans google...

    En tout cas, si c'est aussi bon que l'article le dit, subversion risque encore d'aller encore plus vite :-P

    LeMarsu, qui a autre chose à foutre que de dump tous ces repositories pour les réinjecter après...
    • [^] # Re: Et les mise à jours de bases?

      Posté par  . Évalué à 7.

      Pour que Subversion aille encore plus vite, tu peux utiliser son format natif (fsfs) au lieu de BerkeleyDB.
      Il y a eu tellement de soucis de fiabilité et de mises à jour avec BerkeleyDB que plus grand monde utilise encore cette bibliothèque avec SVN.
      • [^] # Re: Et les mise à jours de bases?

        Posté par  . Évalué à 10.

        Je rajoute mon petit^Wtrès gros grain de sel à la discussion sur Subversion.

        Le gros du problème entre Subversion et BDB est blocage de la base BDB en cas d'arrêt violent du traitement d'une requête par le serveur svn. Cela arrive relativement souvent quand on utilise mod_dav_svn, ou toute interface web maniant le dépôt et pouvant être interrompue violemment. Le problème, c'est que le dévérouillage (et l'éventuelle réparation) ne peut pas se faire automatiquement par l'application cliente (Subversion) sans risques de corruption, sauf si on peut lui garantir un accès exclusif à la base pendant la réparation. Donc, le dépot reste vérouillé jusqu'a ce qu'un d'admin coupe tous les moyens d'accès au dépot et exécute `svnadmin recover` dessus (qui lui par dessous dit à BDB qu'il peut réparer tranquillement).

        Cette situation a été discutée avec SleepyCat Software. Ils ont demandé aux développeurs de Subversion ce qu'ils aimeraient avoir dans les prochaines versions de BDB, et la réponse fut massive: "Database auto-recovery", c'est à dire le dévérouillage et la réparation automatique et sans risques dans un environnement où l'accès est non-exclusif (lire: en prod).

        Et c'est chose faite. Comme l'indique la liste des nouvelles fonctionalités ci-dessus, BDB 4.4 ferme plusieurs tickets internes traitant de cette réparation automatique en-ligne. Avec BDB 4.4, Subversion n'aura plus qu'a ouvrir le dépot normalement, et la bibliothèque BDB effectuera automatiquement l'équivalent de `svnadmin recover` avant d'ouvrir la base. BDB revient donc à égalité à FSFS (l'autre système de stockage de dépot de Subversion) : dans les deux, une mort violente de Subversion n'entraine que quelques fichiers de verrou et de journal qui trainent dans le dépot, et qui seront nettoyés à l'ouverture suivante de celui-ci.

        BDB 4.4 venant de sortir, il faudra patienter au moins jusqu'a Subversion 1.4 (la 1.3 est en Release Candidate en ce moment) pour avoir le support BDB 4.4. Et pour répondre à la question d'origine, il faudra sans doute faire un dump/load pour mettre à jour un dépot Subversion BDB, lorsque le support BDB 4.4 apparaitra. Le changement dans la structure interne de BDB est qualitativement similaire à celui qui a eu lieu entre BDB 4.2 et BDB 4.3 .

        Enfin, une petite note par rapport au commentaire précédent, qui dit en substance que Subversion va "plus vite" avec un dépot FSFS. Ce n'est pas entièrement vrai. Les données sont stockées très différemment dans un dépot FSFS par rapport à un dépot BDB, et ces différences font que parfois c'est l'un qui est meilleur, et parfois c'est l'autre.

        Par exemple, BDB stocke la dernière version entièrement, et exprime les révisions précédentes sous forme de delta, alors que FSFS stocke une révision N en entier et exprime les révisions suivantes sous forme de delta ; un checkout de la dernière version avec BDB sera donc très rapide, alors que FSFS aura besoin de temps et de ressources pour recombiner les deltas à partir de la dernière révision complète.

        De même, FSFS est beaucoup plus rapide pendant la construction d'une transaction à commiter dans le dépôt, mais la finalisation (étape ultime du commit ou le serveur construit le fichier de révision et l'insère dans le dépot) prend un temps proportionnel au volume de modifications propagées. Il est donc possible avec FSFS qu'un très gros commit (plusieurs centaines de Mo de diffs) fasse timeouter le client pendant la phase de finalisation. BDB au contraire étale l'impact d'un gros commit sur toutes les phases, autant la construction de la transaction que sa finalisation, et ne souffrira donc pas de ces problèmes.
        (Le dernier exemple avec des diffs de plusieurs centaines de Mo peut sembler tirée par les cheveux, mais c'est tiré d'histoires vraies - certaines entreprises gardent des Go d'isos de DVD dans Subversion; les commits de centaines de Mo ne sont pas exceptionnels, quand l'iso est modifiée)

        Tout ça pour dire que les deux backends ont leurs avantages et leurs inconvénients respectifs. Il est vrai que BDB, avec son problème de verrous, a une mauvaise image auprès des utilisateurs. Mais s'il est encore distribué avec Subversion, c'est bien parce qu'il peut etre meilleur que FSFS dans certains cas - et l'ajout de réparation automatique ne fera que le rendre plus attractif à mon humble avis. Je vous recommande vivement la lecture du Subversion Book, sur http://www.svnbook.org/ . Le début du chapitre 5 compare les deux solutions, et discute des avantages et inconvénients respectifs.

        Voila voila, fin de la réponse de barbare. Bravo si vous lisez encore :-)
  • # cékoi ?

    Posté par  . Évalué à 7.

    Veuillez pardonner mon ignorance... mais "Berkeley DB" est nouveau pour moi. Est-ce que quelqu'un est capable de résumer (en évitant les trolls) le positionnement de Berkeley DB par rapport à MySQL, PostgreSQL, InterBase...?

    Au niveau licence, une "dual license" est évoquée. Est-il possible d'être plus précis? La version open source et gratuite est-elle une BSD comme le laisse penser le nom de cette BDD? Est-ce une GPL? autre?

    Merci d'avance
    • [^] # Re: cékoi ?

      Posté par  (site web personnel) . Évalué à -9.

      Berkeley DB est tout comme PostgresSQL ou MySQL un système de base de données client-serveur. Mais pour plus de détails sur les fonctionnalités propres, va faire un tour sur leur site.

      Une dual licence indique de le produit est gratuit et opensource dans un cas et payant dans l'autre.

      Il est gratuit et OpenSource lorsqu'il est associé à un produit qui est/sera également opensource. Dans ce cas, tu peux l'utiliser gratuitement et le redistribuer. En revanche, si tu développes un logiciel qui va être commercialisé ou qui ne sera pas OpenSource alors c'est la licence payante.
      • [^] # Re: cékoi ?

        Posté par  . Évalué à 10.

        Heu .... Sois j'ai rien compris, soit c'est tout l'inverse ...

        Berkeley DB n'est PAS un systeme client-serveur type MySql, Oracle and co. Dans son fonctionnement il serait plus proche de ACCESS. Dans le sens ou la base se presente sous la forme d'un ensemble de fichiers auquels les programmes accedent directement via la librairie Berkeley Db.

        Pour reprendre l'exemple de subversion. Subversion accede directement au repository sans passer par un service.

        Mwha

        • [^] # Re: cékoi ?

          Posté par  (site web personnel) . Évalué à 4.

          Sorry. Tu as raison...
          ...et c'est moi qui ai rien compris.
        • [^] # Re: cékoi ?

          Posté par  . Évalué à 1.

          Si je ne me trompe pas, Bogofilter (le programme anti-spam qui me débarasse de tous les messagesquej'aipassollicités) utilise Berkeley DB.
      • [^] # Re: cékoi ?

        Posté par  . Évalué à 7.

        « Une dual licence indique de le produit est gratuit et opensource dans un cas et payant dans l'autre. »

        Non, cela indique que le produit est libre dans un cas et propriétaire dans l'autre. La gratuité ou son absence peut-être un effet de bord, mais ce n'est pas l'aspect principal de la distinction.

        La distinction repose surtout sur ce que légalement les utilisateurs peuvent en faire.
    • [^] # Re: cékoi ?

      Posté par  (site web personnel) . Évalué à 2.

      Berkeley DB est un système de base de données dit "à plat" non client/serveur. Il peut être utilisé par MySQL comme moteur de stockage.
      • [^] # Re: cékoi ?

        Posté par  (site web personnel) . Évalué à 3.

        ça, c'est la definition de SQLite. Berkeley DB, c'est une table de hachage avec persistance. On stock juste des clefs/valeurs. Ya pas de relations ou de SQL, c'est plutot primaire, et c'est pour ça que ça sert de base à des applications comme openLdap. Mais par contre, c'est super rapide.
        • [^] # Re: cékoi ?

          Posté par  . Évalué à 5.

          Il me semblait que "à plat" ne s'appliquait pas à SQLite, justement, qui reste une base de données relationnelle (à la différence de BDB, effectivement).
        • [^] # Re: cékoi ?

          Posté par  . Évalué à 1.

          Selon moi c'est exactement ça.
          J'ajouterai que tu peux ajouter des indexes, la table de hashage est en fait un arbre binaire indexé...
          Bref c'est une base de donnée sans SQL, sans relation. MySQL peut fonctionner dessus, Openldap.
          Sur BerkeleyDB tu peux configurer le niveau de lock, de cache en mémoire, tout les combiens tu veux faire le flush... et plein de trucs qui te font t'arracher les cheveux !
          BerkeleyDB est un peu la génération suivante des systemes comme ndb (ou gdb)
  • # A la xbase

    Posté par  (site web personnel) . Évalué à 1.

    Jai parcouru le tutoriel pour c du logiciel, et ca ressemble beaucoups a xbase avec les curseurs.

    Un utilisateur pour affirmé ou non ?
    • [^] # Re: A la xbase

      Posté par  . Évalué à 1.

      salut a tous,

      est il pensable d'utiliser le moteur de berkeley pour posséder une réplication afin d'en faire profiter Mysql ? Car j'ai testé la réplication de mysql 5, c'est pas gagné niveau stabilité :)

      Bye bye à tous :)
      • [^] # Re: A la xbase

        Posté par  . Évalué à 2.

        Je vais être un peu hors sujet, mais est-ce que tu peux préciser ? J'utilise le système de réplication de MySQL 4.1 au boulot (oui... j'aurais bien aimé utiliser PostreSQL mais c'est un autre débat) et j'en suis assez content. Tant qu'il n'y a pas de panne de courant la réplication marche au poil.

        Est-ce que ce sont les nouvelles fonctionnalités de MySQL 5 (triggers, procédures stockées) qui font que la réplication ne fonctionne plus si bien ?
  • # MAGALIE A GAGNE LA STAR ACADEMY !!!!!!!!!!!!!

    Posté par  . Évalué à -10.

    MAGALIE A GAGNE LA STAR ACADEMY !!!!!!!!!!!!!

    Une victoire écrasante de notre siréne marine ! Elle à de la présence et son thon est juste et travers la vague des auditeurs..
    Notre éléphant de mer brise les planches comme personne !
    Elle dédit sa victoire à sa poissonerie "Au Bon Thon" !
    Un million d'Euros, c'est Pascal Négres qui est conten de cette acquisition de poid ;-)


    MAGALIE JE T'AIME !!!



    (PS : Piratez pas la P'auv fille Si vous Plait ! Pascal a vachement besoin d'argent depuis ce soir. Merci)
  • # Y aurait-il un tutoriel basique de son utilisation en programmation en C

    Posté par  (site web personnel) . Évalué à 2.

    Y aurait-il un tutoriel basique de son utilisation en programmation en C.

    J'ai déjà vu ce système de base de donnée dans un logiciel, mais bon ce n'est pas un bon exemple de programmation...

    Je cherche un tutoriel en français ou anglais qui montre les fonctions de base et leur utilisation (si possible).

    Par contre, si vous avez églament une page avec les incompatibilités entre les différentes version ça m'intéresse!!!
    J'ai notté avec regret que entre la 4.2 et la 4.3 c'est pas du tout la même chose pour certaines fonctions!!! Alors si il existe ça je suis prenneur...

    ps : j'ai déjà demandé a mes amis google et FAQ et les résultats ne sont pas concluants...
    • [^] # STFW&RTFA!

      Posté par  (site web personnel) . Évalué à 2.

      Il y a un tutorial/manuel sur le site de SleepyCat.

      pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.