Nouvelle base de données clés-valeurs : Kyoto Cabinet 1.0

Posté par (page perso) . Modéré par baud123.
Tags :
25
30
mai
2010
Base de données
Mikio Hirabayashi est un ingénieur qui travaille pour un réseau social japonais, mixi.jp. Pour faire face à la montée en charge, il a écrit une base de données très rapide de type clés-valeurs : Tokyo Cabinet. C'est une bibliothèque écrite en C, avec des bindings Ruby, Perl, Java et Lua, et distribuée sous licence LGPL.

Tokyo Cabinet est très rapide, mais son auteur n'était pas satisfait des performances en concurrence sur des machines avec de nombreux cores. Il a donc écrit son successeur : Kyoto Cabinet. Kyoto Cabinet est écrit en C++, et publié sous licence GPL. Des bindings Ruby, Perl, Python (2.x et 3.x) et Java sont disponibles.

Kyoto Cabinet est rapide (l'ordre de grandeur est un million de requêtes par seconde), ACID et capable de gérer un haut niveau de concurrence. Ses bases de données peuvent enregistrer jusqu'à 8 exabytes et peuvent être de différents types en fonction des caractéristiques recherchées (persistence, verrouillage par enregistrement, par page ou global, ordre de tri, algorithme de stockage).

Tokyo Cabinet bénéficie d'un service réseau, Tokyo Tyrant, et d'un moteur de recherche full-text, Tokyo Distopia. Les équivalents pour Kyoto Cabinet n'existent pas encore, mais sont prévus et devraient sortir d'ici la fin de l'année.

Note : Pour ceux qui s'intéressent aux bases de données, le NoSQL Summer est l'occasion d'en apprendre plus. Le principe est simple : se réunir régulièrement pour discuter d'un papier scientifique autour des bases de données. Le lancement se fera le 21 juin à la Cantine pour Paris, mais vous pouvez n'assister qu'à une seule rencontre si vous le souhaitez. L'entrée est libre, la seule chose que l'on vous demande est d'avoir lu le papier sélectionné avant de venir. Si vous êtes dans une ville qui n'est pas encore couverte, rien ne vous empêche de trouver 2 ou 3 volontaires et de contacter les organisateurs.
  • # Damn !

    Posté par . Évalué à 8.

    Et moi qui venait pratiquement de finir le binding de TokyoTyrant pour Lua...
  • # Orthographe

    Posté par . Évalué à 0.

    /s/ACID et capable/ACID est capable
    /s/Tokyo Cabinet bénéfice/Tokyo Cabinet bénéficie
    /s/Les équivalent/Les équivalents
    • [^] # Re: Orthographe

      Posté par (page perso) . Évalué à 5.


      /s/ACID et capable/ACID est capable

      J'ai peur que tu n'aies pas compris la phrase... Relisons ensemble, et fendons-nous d'une virgule pour faciliter ta compréhension :

      Kyoto Cabinet est rapide (..), ACID, et capable de gérer un haut niveau de concurrence
    • [^] # Re: Orthographe

      Posté par . Évalué à 2.

      s'intéressent aux bases de données,

      Sinon, merci pour cet article sur la n-ième base de données NoSQL, ce n'est vraiment pas facile de faire le tour de la question.
  • # Différence ?

    Posté par (page perso) . Évalué à 1.

    Mikio est un dév génial mais j'ai du mal à saisir la différence entre Tokyo Cabinet et Kyoto Cabinet, tu parles des deux dans la dépêche mais ça semble un peu confus...

    « Je vois bien à quels excès peut conduire une démocratie d'opinion débridée, je le vis tous les jours. » (Nicolas Sarkozy)

    • [^] # Re: Différence ?

      Posté par (page perso) . Évalué à 7.

      Kyoto Cabinet est une réécriture complète de Tokyo Cabinet. Grosso modo, elles font la même chose, mais Kyoto le fait mieux, surtout sur les machines avec plusieurs cores. La présentation au format PDF de Mikio explique cela sûrement mieux que moi : http://1978th.net/kyotocabinet/kyotoproducts.pdf
      • [^] # Re: Différence ?

        Posté par (page perso) . Évalué à 3.

        J'ai trouvé la présentation très intéressante et je vais sans doute faire quelques essais dessus histoire de tester les perfs.

        Mais est-ce que quelqu'un sait s'il fonctionne en clustering? Car je vois qu'il gere le multithreading mais pas d'info sur le clustering.
        • [^] # Re: Différence ?

          Posté par (page perso) . Évalué à 2.

          Non Tokyo & Kyoto cabinet ne font pas de partitionnement automatique des bases. Pour cela il te te faut le coupler avec autre chose.

          L'une des solutions existante est lightcloud (http://opensource.plurk.com/LightCloud/) qui travaille au dessus de Tokyo Tyrant (une couche de service réseau pour Tokyo Cabinet).
          • [^] # Re: Différence ?

            Posté par (page perso) . Évalué à 2.

            Une autre question qui me vient a l'esprit. Ce sont donc de paires clé-valeur mais la valeur est de quelle nature? Est-ce une String?
            Si c'est le cas est-ce que c'est inter-opérable en terme de langage? Ex : Une entité C++ enregistré et chargé en Python.
            • [^] # Re: Différence ?

              Posté par (page perso) . Évalué à 2.

              La valeur est un pointeur vers des données. Ca peut être une chaîne de caractères, mais des routines existent aussi pour directement additionner des entiers ou des rééls dans le champs valeur.

              Il existe des couches d'accès pour de nombreux langages, y compris python.
  • # Je ne saisis pas la différence

    Posté par (page perso) . Évalué à 2.

    Je ne saisis pas la différence entre une « base de données clés-valeurs » et une table de hachage…
    • [^] # Re: Je ne saisis pas la différence

      Posté par (page perso) . Évalué à 5.

      Une base de données clés-valeurs va gérer des accès concurrents, stocker les informations sur le disque et fournir d'autres services autour de l'accès aux données.

      Une table de hachage est un algorithme pour implémenter cela. Par exemple, Kyoto Cabinet utilise des tables de hachage quand on spécifie une base de type HashDB. Mais ce n'est pas le seul moyen de faire ça. Par exemple, on peut aussi utiliser des B-trees.
    • [^] # Re: Je ne saisis pas la différence

      Posté par . Évalué à 4.

      Il n'y a pas toujours de différence, toute classification étant souvent arbitraire, mais base de donnée implique souvent: persistance, transactions..
      Alors qu'avec les tables de hachage, c'est moins le cas.
  • # Oui mais bon.

    Posté par . Évalué à 1.

    Kyoto Cabinet en 1.0, l'alpha était sortie en janvier. 6 mois pour sortir un projet stable, c'est rapide quand même.

    La vision du projet pour les utilisateurs est nulle, pas de dépôt (cvs/svn/git/...), pas de bugtrackers, pas de mailing-list "officielle" (à ma connaissance Mikio n'est pas inscrit aux listes existantes). Et les patchs ne sont pas acceptés (à ce qu'il se dit sur les listes).

    Ca donne pas envie :)

Suivre le flux des commentaires

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