Go… Perf !

Pourquoi s’intéresser à Go ? Parce qu’à Go sont associés les mots suivant : simplicité, rapidité, concurrence, microservice et surtout parce que Docker est écrit en Go. Go est fait pour la partie serveur, c’est un concurrent direct de Node.js.

Quelles sont les qualités d’une nouvelle plateforme de développement côté « serveur » ? Revenir à la simplicité, mettre en œuvre les principes de séparation d’intention et de cohérence forte. Simplicité pour le développeur, mais aussi un cycle de vie efficace de la conception, en passant par le développement, par les tests, par l’intégration et enfin par la mise en production.

Robomongo, bon client MongoDB

Le shell de MongoDB est très utile pour l’administration d’une base ou pour en consulter le contenu mais je ne vous cache pas qu’à la longue, il finit par être très fastidieux pour une multitude de petits détails. Heureusement que de nombreux projets existent et permettent de remédier à ce manque. Un certain nombre d’entre eux sont listés sur le site de Mongo .

Parmi eux, il y’en a un qui me plaît particulièrement et normalement, vous avez déjà compris qu’il s’agit de Robomongo. Derrière ce nom qui ne casse pas 3 pattes à un canard, se cache un outil aussi facile à prendre en main que performant qui va vous permettre d’administrer au même endroit un nombre illimité de bases, de collections, de documents et de serveurs.

De retour du Breizhcamp

La semaine dernière se tenait l'édition 2013, la 3ème, du Breizhcamp, la conférence "Mix de Technologies" organisée par le BreizhJug et ses partenaires.

 

Cette conférence est un événement incontournable pour les développeurs de la région ouest, d'abord parce qu'elle est locale ce qui est confortable, d'autre part parce qu'elle est très abordable (40€ pour les 2 jours), et enfin et surtout parce qu'elle est aussi intéressante que sympa.

Et tout cela on le doit au superbe travail de l'équipe de bénévoles qui la prépare avec amour pendant tout l'hiver. Un grand merci à eux !

2 jours à enchainer les présentations et les hands-on, entrecoupés d'échanges avec les autres participants pour rester à l'écoute de ce qui se fait "ailleurs".

Et en ce qui me concerne, le programme a été le suivant :

Devoxx France 2013 – No(Geo)SQL

A l'occasion de Devoxx France 2013, j'ai assisté à la conférence intitulée « No(Geo)SQL » présentée par Nicolas Helleringer.

La modélisation géographique (aussi appelée spatiale) est possible dans les SGBD depuis longtemps mais ne fait toujours pas partie des fonctions de base. Les systèmes d'information géographiques (SIG) fournissent des services basés sur la localisation (en anglais, on dit LBS pour Location Based Services). La représentation du monde physique et le Géomarketing sont des utilisations typiques qui nécessitent un fond de carte associé à des informations spécifiques au système.

Il est difficile de représenter un polygone dans une colonne de SGBD car celui-ci est défini par des points et des vertex, en 2 ou 3 dimensions et souvent de manière dense.

L'OpenGIS Consortium a créé une surcouche complexe pour SQL, spécifiée par plus de 50 normes sur les SIG !

Parmi les plateformes LBS, la plus connue est Google Maps qui fourni une abstraction du format des adresses (l'europe, l'amérique et la ville de tokyo n'utilisent pas les même formats). Celui-ci gère la localisation des adresses, l'affichage des rues, du fond de carte, la prise en compte du navigateur. Il ne reste plus au client qu'à gérer ses données spécifiques sur son propre serveur. Celles-ci sont modélisées en SQL avec une latitude et une longitude. Cela présente des inconvénients, même sur un petit interval, car il faut un index sur la longitude et la latitude, ce qui peut être assez lourd.

Il existe différents algorithmes permettant de rechercher des données géographiques de manière optimale : arbre équilibré (en anglais B-tree), Quadtree (partitionnement d'un espace bidimensionnel), R-tree. En NoSQL, certaines bases de données gèrent les données spatiales : Neo4j (R-tree et Quadtree), mongoDB (B-tree).

Hibernate Search Spatial est une extension Hibernate ajoutant la gestion des données spatiales. L'indexation utilise l'algorithme Quadtree pour répartir l'ensemble des valeurs sur un maillage plus ou moins serré afin d'encadrer rapidement le secteur recherché. Cette extension introduit l'annotation @Spatial, à placer sur une classe (entité), ainsi que les annotations @Longitude et @Latitude à placer sur les champs de l'entité qui définissent un emplacement.

Pour terminer, Nicolas nous parle de la base de données libre GeoNames, qui contient les noms de nombreux lieux dans tous les pays (ville, rue, lac ...). Comme exemple d'utilisation, il suggère une application pour mobile qui utilise la position GPS courante pour trouver un coiffeur à proximité.

Meeting Neo4j, NoSQL

Contexte du meeting

Le 5 janvier 2013, Zenika organisait une journée de tutoriel sur la technologie Neo4j dans ses locaux parisiens. Ce fut l’occasion pour Sodifrance de s’y présenter, rencontrer des intervenants de NeoTechnology et d’échanger autour de cette base de données NoSQL.

Les intervenants étaient :

  • Stefan Armbruster, consultant de NeoTechnology à Munich. C’est lui qui a parlé la majorité du temps.
  • Cedric Fauvet, commercial de NeoTechnology en France. C’est lui qui s’est occupé du discours commercial sur le reste du temps.

Nous étions une quinzaine d'auditeurs. Les personnes présentes étaient pour une grande majorité des consultants freelance.

Administration NoSQL : un oxymore ?

La lecture d’un papier de Martin Fowler du 25 février à propos des implications de l’utilisation des solutions NoSQL sur l’administration des données (http://martinfowler.com/bliki/NoDBA.html) nous a ramené à un récent débat chez Antéo dont l’idée directrice était « le rôle de DBA a t-il encore du sens avec NoSQL ? ».

Non content de voir que Martin Fowler partage notre point de vue ;-), on pourrait prolonger ce débat sur la gestion des compétences requises pour la réalisation d'application utilisant ce type de solution mais aussi, et peut-être même surtout, pour leur maintien en condition opérationnelle.