Journal TerraStore : le dépôt JSON distribué

Posté par  (site web personnel) .
Étiquettes :
8
12
juil.
2010
Plus besoin de les présenter, les FaceBook, twitter, etc. sont les applications qui font le web d'aujourd'hui ! Mais s'ils est évident de voir les nouveaux usages qu'elle apportent, qu'en est il côté techno ? Cette nouvelle race d'applications se distingue des applications web plus traditionnelles par le format des données qu'elles manipulent, fini les données fortements structurées ou les schémas fixes : les applications du web de demain veulent de la flexibilité, de l'évolutivité, de la scalabilité et les outils qui vont avec. Et c'est exactement le créneau de TerraStore, un entrepôt de documents au format JSON.

TerraStore se positionne dans la même catégorie que CouchDB et Cassandra de la fondation Apache, même si ces dernier endosse plus franchement le rôle de base de donnée. Les fonctionnalités que TerraStore propose sont celles d'un véritable entrepôt de données textuelles accessibles directement en HTTP ce qui justifie son intérêt pour des applications massivement en-ligne. On plonge là au coeur du thème très en vogue du NO-SQL.
L'application est, de plus conçue, sur une architecture en cluster afin d'assurer un service sous fortes charges. Deux types de composants sont présents : le server qui stocke directement les données ou plutôt leurs fragments et le master, responsable de la répartition des données et de la charge sur les servers. Une installations de TerraStore suit donc l'habituel schéma des serveurs à l'écoute du ou des maîtres qui gère(nt) l'application en grappe. L'accent est aussi mis sur les performance réseau : les traitements sur les données sont ainsi effectuées sur le serveur même qui héberge les données. Encore un point essentiel pour des applications fortement orientées web.

Le nom de TerraStore témoigne de l'utilisation sous-jacente de Terracotta, cette solution Open Source de clustering de JVM qui avait déjà fait l'objet d'un article. Malgré cet empilement de couches, TerraStore reste d'une simplicité d'installation et d'utilisation assez déconcertante comme en témoigne ce tutoriel de quelques lignes qui met en place un master et deux servers via Apache Ant. Malgré sa jeunesse (version 0.4.2 en téléchargement), TerraStore présente des fonctionnalités visiblement très abouties : possibilité de monitoring via console JMX, fonctionnalités de sauvegarde des servers et aussi capacité de gestion orientée évènements.

Les ambitions de solutions telles que CouchDB et TerraStore ne sont peut-être pas de révolutionner le monde des bases de données mais l'effort reste très intéressant et prometteur. Ces solutions sont donc à surveiller car elles pourraient être une autre preuve de la théorie de l'évolution mais cette fois-ci dans le domaine de l'informatique.
  • # NO-SQL

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

    No SQL, certes, mais no standard non plus, à ce qu'on dirait. Chacun son truc sans la moindre coordination ni le moindre langage ou protocole commun. Comment balkaniser le domaine des bases de données…
    • [^] # Re: NO-SQL

      Posté par  . Évalué à 2.

      En même temps, les bases de données actuelle SQL les plus connues ont chacune leur fonctionnalités pas standard. Au moins, on ne se voile pas la face dans ce cas.

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: NO-SQL

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

        "En même temps, c'est déjà pas top, autant faire carrément n'importe quoi"

        Bah oui, bonne idée :)
        • [^] # Re: NO-SQL

          Posté par  . Évalué à 2.

          "En même temps, c'est déjà pas top, autant faire carrément n'importe quoi"

          Non, c'est déjà n'importe quoi, autant l'officialiser et ne pas se cacher derrière des faux semblant de norme pas respectée.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: NO-SQL

            Posté par  . Évalué à 6.

            ouhla, tu peux choisir de faire du SQL portable correspondant à des bouts de normes respectés comme tu peux décider de faire du C ou C++ portable, c'est à dire sans extension GNU ou Microsoft ou autres...
            • [^] # Re: NO-SQL

              Posté par  . Évalué à 2.

              Et quelles sont les bases de données qui acceptent ce SQL portable?

              Et c'est quoi du SQL portable? Le SQL définit par la norme qui n'est supporté par personne en totalité?

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

              • [^] # Re: NO-SQL

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

                Faut pas déconner, si tu reste à faire du SQL basique (SELECT, INSERT, UPDATE, DELETE) avec des jointures simples, en général, c'est portable sur tout (enfin .. MySQL, PgSql, SQlite3, probablement Oracle).

                Par contre, dès que c'est moins basique, c'est sûr, y'a des différences, mais en général ça s'adapte bien. J'ai fait une migration MySQL -> PgSQL, et a part pour les dates et le "INSERT OR UPDATE", j'ai pas eu beaucoup de problème.
                • [^] # Re: NO-SQL

                  Posté par  . Évalué à 2.

                  Il me semble que les types de données n'ont pas la même dénomination ou les mêmes caractéristiques, les fonctions ne sont pas les même non plus.

                  « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

                  • [^] # Re: NO-SQL

                    Posté par  . Évalué à 3.

                    Toujours est-il que tu peut passer d'une base à une autre à coups de sed.

                    Envoyé depuis mon lapin.

                • [^] # Re: NO-SQL

                  Posté par  . Évalué à 3.

                  "Si tu reste à faire du SQL basique"

                  C'est justement le problème. On ne reste jamais longtemps à faire du SQL basique. Ensuite viennent les problèmes et divergences.
                  • [^] # Re: NO-SQL

                    Posté par  . Évalué à 2.

                    N'empêche qu'en termes de sémantique il y a suffisamment de convergence pour que des ORM existent et fassent abstraction de tout ça.
                • [^] # Re: NO-SQL

                  Posté par  . Évalué à 4.

                  Pour moi le SQL classique ça inclut aussi la commande "CREATE TABLE", (à l'installation bien sûr, par à l'utilisation) et cette dernière est déjà problématique, ne serait-ce qu'avec MySQL5 qui ne supporte pas les clefs étrangères dans la conf par défaut.
    • [^] # Re: NO-SQL

      Posté par  . Évalué à 0.

      En même temps No-Sql n'est pas une spécification ni une technologie, c'est juste un mouvement voulant dire "Not Only SQL" : Pas seulement SQL. Il respecte le "CAP Theorem" au lieu du fameux ACID. (cf wikipedia)

      Tu parles de standardisation pour SQL mais une requête mysql ne va jamais forcement passer sur une base oracle, postgres ou mssql. Donc la fameuse interopérabilité n'en est pas une en fait.

      No-SQL regroupe plusieurs type de techno Key/Value, Document Based, Column based etc .. donc une standardisation me parait comment dire .. infaisable et surtout ça ne sert à rien. Bien souvent tu couples au dessus de ces outils un Lucene ou bien Solr qui permet de gérer la partie recherche et du coup on peut retrouver un langage commun pour les requêtes.
      • [^] # Re: NO-SQL

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

        Oui Oui Oui ...

        Sauf que ce que l'on aime avec le SQL, c'est pas le SQL ... c'est l'aspect relationel des bases de donnes.

        Bref, Avec les base SQL, les ORM sont possibles et facile a faire ... sur les bdd no-SQL ... presque impossible...
        • [^] # Re: NO-SQL

          Posté par  . Évalué à 0.

          Je comprends bien, que l'aspect du modele entité-relation merisien manque à certains. Mais il a aussi ses limitations.
          NoSQL n'est pas un remplacement mais une alternative, un complément.

          Là ou je ne suis pas d'accord avec toi c'est quand tu avances la chose suivante

          Bref, Avec les base SQL, les ORM sont possibles et facile a faire ... sur les bdd no-SQL ... presque impossible...

          La plupart des implémentations nosql n'ont pas besoin d'outils de mapping comme hibernate, de part leur nature schemaless
          ou encore schema dynamique. Le mapping s'en retrouve simplifié et souvent les performances sont au rendez vous. Ce genre
          de base sont souvent à coupler avec du Domain Driven Design [http://en.wikipedia.org/wiki/Domain-driven_design] ou encore
          du CQRS (Command and Query Responsibility Segregation) [1]. Une très bonne implémentation du CQRS est
          le framework axon [2].

          Bref, d'autre type d'architecture existe aujourd'hui pour se passer proprement des outils de type ORM.

          Pour mes futurs projets java, je partirais sur du nosql ou du sgbdoo tout dépends des besoins.

          [1] http://blog.fossmo.net/post/Command-and-Query-Responsibility(...)
          [2] http://code.google.com/p/axonframework/
          • [^] # Re: NO-SQL

            Posté par  . Évalué à 3.

            La plupart des implémentations nosql n'ont pas besoin d'outils de mapping

            Mais mon coco ce n'est pas une question de besoin (on peut très bien accéder à une base SQL sans ORM), c'est une question de commodité.
            Maintenant si tu penses que de simples correspondances clés / valeur, ou bien des documents JSON, permettent d'écrire des applications sans se fouler, je te souhaite bonne chance au pays des bisounours.
            • [^] # Re: NO-SQL

              Posté par  . Évalué à 0.

              Je suis sur que si on lui apprends "Tout-Calin" peut coder en java utiliser du nosql et se
              passer d'outils ORM.

              Car Tout-Calin peut :

              - soit utiliser une sgbdoo type db4o. Du coup plus besoin d'ORM.

              - soit utiliser neo4j une GraphDB qui te permet 2 façons élégantes de te passer de mapping
              - La première c'est d'aggréger au sein de l'implementation de chacun des objets métiers
              un node neo4j et de mapper à la main une propriété de ton bean à une property du node
              pareil pour les associations et les relations. C'est aussi simple que cela.
              - tu utilises http://code.google.com/p/jo4neo/ qui te pemet via des annotations simples
              de rendre tes objets du domaine de s'intégrer à neo4j.

              Tu vois même les bisounours peuvent le faire...

              Et encore une fois les patterns d'architecture comme le DDD et CQRS peuvent t'aider à gérer
              ces "mappings" même avec du Document Based et du Clef/Valeur. Il n'y a pas que le DAO
              dans la vie (et heureusement) , aujourd'hui il est un peu dépasser tout seul pour tout faire.

              Bonne nuit.
        • [^] # Re: NO-SQL

          Posté par  . Évalué à 6.

          Tu reproche de pas pouvoir faire de correspondance Objet-Relationnel vers un modèle qui n'est pas relationnel, c'est évident ;)

          D'autre part les nouvelles bases de données sont plus proches du modèle objet dans l'esprit, la correspondance devrait être plutôt facilitée ... genre tu écris presque directement l'objet dans la base de données.
        • [^] # Re: NO-SQL

          Posté par  . Évalué à 2.

          Un mapping objet <-> relationel facile à faire ? On a du me mentir alors...

          Le relationel ca marche très bien dans son domaine. Mais quand tu vois que beaucoup de cas d'utilisation c'est juste sauvegarder des objets dans une table SQL, tu te dis qu'il y a quelque chose qui cloche dans le bazar et que c'est bien dégueulasse et pas pratique. Au contraire suivant les usages une BDD no-SQL ca peut être beaucoup plus pratique et facile à mettre en oeuvre que de chercher à faire des mappings foireux et gérer une cohérence assez étrange au final.

          Y'a des cas d'utilisation pour toi... Une base SQL c'est comme un marteau, ca marche bien tant que t'as pas des vis à enfoncer...
          • [^] # Re: NO-SQL

            Posté par  . Évalué à 1.

            Y'a des cas d'utilisation pour toi... Une base SQL c'est comme un marteau, ca marche bien tant que t'as pas des vis à enfoncer...

            Il y a des vis prévues pour être enfoncées au marteau.

            ---> []

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

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