Il y a 5 années · 1 minute · Data

Jongo = Mongo + Java // le 21 mars au Mongo User Group

Le 21 mars, le Mongo User Group à la gentillesse d’accueillir les développeurs de Jongo.

Si Mongo est plein de qualités, les exploiter à l’aide de son driver Java peut être délicat. Des sucres syntaxiques en simplifient d’ailleurs l’usage, Morphia – le plus populaire – permet d’écrire des requêtes à l’aide de builders et d’exploiter les résultats unmarshallé en objets Java. Dans leur lignée, Jongo propose une nouvelle approche : écrire directement les requêtes en chaînes de caractères (et récupérer les résultats unmarshallés).

En un clin d’oeil :

// Mongo shell
db.peoples.find({age: {$gt: 18}})
 
// Jongo
Iterable<People> adults = peoples.find("{age: {$gt: 18}}").as(People.class);
 
// Java driver
Iterable<BSONObject> adults = peoples.find(new BasicDBObject("age", new BasicDBObject("$gt", 18)));
// Morphia
Iterable<People> adults = ds.createQuery(People.class).field("age").greaterThan(18);

Les retours sont bienvenus sur l’api à l’étude et les sources GitHub.

Benoît Guérout
Benoît évolue depuis 7 ans — dont 2 chez Xebia — sur des architectures orientées Web et affectionne une approche simple et pragmatique des développements. HTML5, Backbone, CSS3, Mongo+Jongo, Rest sont ses passions du moment. Kiss !
Yves Amsellem
Développeur depuis 5 ans — les 2 derniers chez Xebia — Yves tire de son expérience sur des sites à fort trafic une culture de la qualité, de l'effort commun et de l'innovation. Spécialisé du style d'architecture ReST, il intervient sur des projets web à forte composante JavaScript et NoSQL. Avec Benoît Guérout, il développe la librairie open source Jongo — Query in Java as in Mongo shell

5 réflexions au sujet de « Jongo = Mongo + Java // le 21 mars au Mongo User Group »

  1. Publié par Dominique, Il y a 5 années

    Question bête mais quel est l’intérêt réel d’écrire les requêtes en Mongo Shell ?
    Performance?

    Y’a des benchs par rapport a Morphia?

  2. Publié par Sebastien, Il y a 5 années

    J’ai rapidement regardé : ça a l’air pas mal du tout ! Ayant un peu exploré MongoDB je me suis demandé pourquoi il n’est pas possible d’élaborer une requete directement en JSON.
    En ce qui concerne les requêtes paramétrées (très pratiques) offertes par Jongo : avec JDBC on a été habitué à utiliser ‘?’ comme caractère de remplacement. Vous utilisez ‘#’. Y a-til une raison particulière ?

  3. Publié par Yves Amsellem, Il y a 4 années

    @Dominique Écrire des requêtes BSON nous semble plus naturel que d’utiliser l’approche — déjà controversée en SQL — de l’api Criteria. L’écriture est celle documentée sur mongodb.org, elle est compatible avec les nouveautés sans nécessiter de développements et est sans équivoque dans le code : combien de fois avons-nous été dubitatifs face à une requête de plusieurs lignes en Criteria sans pouvoir dire pour sûr la requête effective ?

    Bien entendu cela a, en plus, un avantage important sur les performances : nos premiers calculs — dont nous publierons le source — donne Jongo deux fois plus rapide que Morphia pour le marshalling (la sauvegarde) et l’unmarshalling (le requêtage). L’écart se creuse encore davantage avec l’augmentation de la volumétrie.

  4. Publié par Dominique, Il y a 4 années

    @Yves
    Merci pour les détails sur Jongo. Cela semble très prometteur!

  5. Publié par Benoît Guérout, Il y a 4 années

    @Sebastien
    En effet nous utilisons le caractère de remplacement ‘#’ dans les requêtes JSON.
    Nous avons voulu marquer une différence avec les paramètres JDBC ‘?’ qui implique la notion de requête précompilée (ie. PreparedStatement).
    Suite à vos remarques, nous avons crée une tâche https://github.com/bguerout/jongo/issues/28 pour permettre à l’utilisateur de l’API de choisir son caractère de remplacement.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *