You are browsing the archive for NoSql.

What’s next ?

9:46 am in L'actualité, Les Conférences by MathildeLemee

D’ici deux semaines, les 26 et 27 mai aura lieu sur Paris What’s Next, conférence de deux jours autour de java, du Cloud, de NoSQL, de Clojure …

De speakers internationaux confirmés vont nous présenter des talks inédits orientés sur la question du futur des technologies. On y parlera par exemple de :

  • ElasticSearch par son fondateur Shay Bannon, moteur de recherche open source, distribué et RESTful.
  • Akka par Jonas Bonér, framework permettant d’écrire de gérer les applications concurrentes en utilisant entre autre les acteurs qui permet une vrai scalabilité, une tolérance aux fautes …
  • Le class loading par Jevgeni Kabanov, fondateur de ZeroTurnaround qui édite JRebel, un outil qui permet un rechargement à chaud des classes et qui se révèle d’un grand gain de temps de compilation. J’avais déjà eu une de ses présentations à Devoxx, très appréciée, désormais visible sur Parleys sur le fonctionnement des class loaders.

Le détail des sessions.

Nous vous y retrouverons nombreuses les 26 et 27 mai au grand Rex. Et cerise sur le gâteau, nous proposons à toutes les duchess une réduction de 25%, nous contacter pour plus d’infos !

Plus d’infos sur le site officiel

SoftShake

9:12 am in Les Conférences by MathildeLemee

logo_carreLe 18 octobre aura lieu à Genève la première édition de SoftShake ! L’idée est simple, un peu d’agilité, de Java, de dev iPhone et hop, voilà SoftShake !

L’idée a germé au sein de l’équipe de l’Agile Tour Genève, à la recherche d’un nouveau public. Ils se sont associés à deux autres associations, le Geneva JUG et le groupe des Développeurs iPhone de Suisse romande. Les avantages sont nombreux, les échanges entre des communautés qui n’ont pas pour habitude de se rencontrer dénotent dans le panorama des conférences java européenne où l’on retrouve souvent les mêmes présentations et les mêmes personnes.

Outre les trois thème principaux (Java, Agilité, iPhone), un quatrième a fait son apparition : c’est l’incubateur qui permettra de tester des sujets qui mériterons peut-être une session spécifique l’année prochaine (NoSQL, Cloud Computing).

Les conférences sont majoritairement en français (3/4) et pour l’instant assez techniques, même si dans les prochaines éditions, le but sera d’avoir autant de sessions pour les décideurs que pour les techniciens. Niveau people, on retrouve des noms connus des JUGs (Nicolas Martgnole, David Gageot, Xavier Bouirguignon, Paul Sandoz) et des agilistes (Claude Aubry, Xavier Warzee, Sébastien Douche)…

Au niveau pratique, une fois encore les frais d’entrée sont très modérés (aux alentours de 70€ ) et il est possible de dormir dans l’hôtel de la conférence le Ramada Encore Genève sur lequel nous pouvons avoir un prix, dans les hôtels aux alentours ou de faire l’allée retour dans la journée (75€ l’A/R avec EasyJet au départ de Paris) mais cela prive de deux soirées d’échange libre entre participants !

Devoxx 2010

10:00 am in L'actualité by MathildeLemee

devoxx10-120x240-blackDevoxx est une conférence européenne indépendante qui porte sur les technologies Java/JVM . Organisée en Belgique, à Anvers, elle nous permettra d’entendre du 15 au 19 novembre 2010 des speakers de haut niveau. Un peu moins de 3000 développeurs venant de plus de 40 pays différents s’y retrouvent chaque année.

Les conférences

Les University Days.

Les 2 premiers jours sont appelés les University Days. On y retrouve principalement des ‘University Talks’, des conférences de 3 heures qui abordent un sujet en profondeur. Il y a à chaque fois plusieurs conférences sur un même créneau horaire. Les sujets sont variés, la plupart sont techniques. Ainsi, on retrouve des sujets :

Chacun peut participer à 2 sessions de 3 heures par jour, une le matin et l’autre en début d’après midi. Ensuite, place aux ‘Tools in action’. Ce sont des petites sessions de 30 minutes qui permettent aux speakers de nous faire découvrir un outil auquel ils ont participé. Les sujets sont variés, d’une présentation de spring developer tools (que j’apprécie énormément au quotidien), à visual VM (outil de monitoring) en passant par Apache Mahout.
Entre 19 et 22h, ont lieu des BOF (Bird-of-a-Feather) qui diffèrent beaucoup de tous les autres types de conférences.
Elles réunissent peu de personnes et sont beaucoup plus informelles. Elles sont généralement menées par un ou deux speakers de manière libre. Parfois, il y a une brève présentation puis des questions, parfois ce sont des discussions ouvertes sur un sujet précis. Actuellement, le planning n’est pas finalisé sur les BOFs.

Les Conference Days

Pour les 3 jours suivants, du mercredi au vendredi, le format diffère. Les conférences  ne sont plus de 3 heures mais d’une heure : cela permet de voir bien plus de sujets différents mais de manière un peu plus superficielle. Les sujets là encore tournent autour des mêmes thèmes dans 5 salles différentes. Les sessions ‘Tools in action’ disparaissent au profit des Quickies, qui durent 15 minutes pendant la pause déjeuner.

Duchess à Devoxx

Les duchess seront présentes toute la semaine à Devoxx et plusieurs nationalités seront présentes (France, Belgique, Hollande …). Le jeudi soir, les Duchess organiseront une BoF pour discuter en petits groupes (6) autour de sujets choisis sur le thème ‘Les femmes dans l’informatique‘.

Ce que j’aime à Devoxx

Pour un prix raisonnable, Devoxx apparait comme un des principaux rendez-vous européen. Les speakers y sont accessibles et l’organisation bien rodée. En une semaine, cela permet d’améliorer fortement sa ‘culture générale Java’, surtout si l’on est débutant. Anvers n’est qu’à deux heures de Paris en Thalys, les hôtels y sont à un prix abordable. Bref, pour un investissement moyen, cela permet vraiment de progresser au niveau technique et de rencontrer énormément de monde, ce qui est toujours un avantage. Certaines SSII l’ont bien compris et y envoient chaque année plusieurs consultants.  Ceux qui n’ont pas une entreprise pour les y envoyer peuvent tout à fait se le permettre au niveau financier. Les conférences sont bien sûr des endroits où l’on apprend beaucoup, mais toutes les discussions ‘off’ pendant la pause déjeuner ou autour d’une bière le soir permettent d’avoir des retours d’expérience très intéressants.

Infos Pratiques

Au niveau de la gestion à proprement parler, pour ceux qui assiste aux University Days, deux possibilités : soit dormir sur place le dimanche soir, soit il est tout à fait possible de prendre l’un des premiers Thalys, de passer à l’hôtel si celui ci est proche de la gare et en ne perdant pas de temps de prendre le tramway pour assister aux premières sessions.
Pour les hôtels, les français semblent se regrouper cette année à deux endroits différents : l’Agora (qui devient à partir d’octobre le ‘all seasons Antwerpen City Center’) et le Park Inn qui sont tous les deux placés juste à côté de la gare. Il vaut mieux éviter de prendre les hôtels qui semblent plus proche de la salle pour deux raisons : ils sont mal desservis en transport en commun et cela veut dire également que vous ferez le chemin seul le soir et le matin.
L’année dernière, le petit déjeuner était compris dans la conférence, tout comme le repas du midi.
Au niveau du train du retour pour le vendredi, beaucoup prennent les thalys de 14h30 ou de 15h30, et certains y restent le week end pour découvrir la Belgique !

Paris JUG Septembre (II) – CMS on top of NoSQL by Steven Noels

9:29 pm in L'actualité, Les Conférences by Katia Aresti

Cet article a été rédigé par Katia Aresti, relecture et corrections par Claude Falguière

Après l’introduction NoSQL une petite pause et la rencontre avec les habitués du JUG, des discussions intéressantes, questions et réponses non formulées et un joli buffet. Après cette demi-heure, on est monté pour la deuxième partie de la conférence : le retour d’expérience de Steven Noels dans l’utilisation de NoSQL pour l’implémentation d’un CMS (Content Management System).

ALM : Annonce d’un nouveau User Group Parisien

IMG_0480

Lucian Precup - Photo : Claude Falguière

Lucian Precup nous a présenté le groupe “ALM France” – Application Lifecycle Management. La soirée d’ouverture aura lieu le 30 septembre prochain à 18h30.
ALM a pour objectif de promouvoir la gestion du cycle de vie des applications et les outils associés. Cette discipline recouvre de nombreux aspects comme la conception, la gestion des exigences, l’architecture, la gouvernance des processus, la gestion de projet, les outils, l’assurance qualité, la gestion des configurations, le déploiement, l’exploitation et la prise en compte de l’expérience utilisateur.

ALM privilégiera le partage d’expériences concrètes sur tous ces domaines, afin de permettre à chacun de bénéficier des meilleures pratiques du terrain.
Pour en savoir plus : http://blog.alm-france.org/

Après ce moment publicitaire, la conférence de Steven Noel a commencé.

CMS on top of NoSQL

Steven Noels

IMG_0491

Steven Noels - Photo : Claude Falguière

Steven Noels est le co-fondateur de Outerthought. Ils développent des applications scalables de management de contenu et publishing avec les technologies Java, REST et maintenant aussi NoSQL.

Steven est un speaker renommé sur les thèmes du management de contenu, NoSQL et l’Open Source en général. Outerthought offre un catalogue de produits développés en open source basés sur les solutions open source existantes :
- Daisy, content-and knowledge management : http://ww.daisycms.org

- Lily, scalable store and research :  http://www.lilycms.org

- Kauri, REST centric internet application developement : http://www.kauriproject.org

Il a été invité au Paris JUG pour partager un retour d’expérience avec NoSQL : le développement du produit Lily, un dépôt de contenu sur Apache HBase.

CMS (Content Management System) : Daisy

Daisy est un petit système de management de contenus (similaire à Alfresco). L’image ci-dessous illustre l’architecture technique classique d’un CMS :

NoSQLImg5

Architecture type d'un CMS

Pourquoi autant de cache ?

Principalement pour éviter d’aller en base. La lecture et l’écriture vers la base de données relationnelle est coûteuse.

Avec Daisy, Steven Noels et son équipe sont arrivés aux limites de la scalabilité :

  • Capable de bien ingérer des documents de 100 Ko, mais atteint ses limites avec des Mo
  • Problèmes avec les caches : l’empilement de caches ayant des durées différentes est complexe à gérer.

Et derrière cette problématique de scalabilité :

  • L’existence de trois sources de données : MySQL, Lucene (moteur de recherche de texte) et le système de fichiers
  • Le mélange des résultats de la recherche sur les trois sources de données est réalisé dans le code de l’application et en mémoire
  • Les transactions et les opérations “set” sont ainsi très difficiles

Finalement Lucene ne permet pas de gérer la fonction “failover”. Ils ont trouvé des solutions pour réaliser du master/slave mais ce n’était pas très satisfaisant.

L’équipe a donc commencé à réfléchir à leur nouveau besoin :

  • Ajouter des stockages de données et de scaler dynamiquement
  • Avoir une véritable architecture de données distribuée

Solution 1 : Déléguer encore plus sur la base de données relationnelle

La première solution à laquelle ils ont réfléchi passait par l’utilisation d’encore plus de base de données relationnelles. Ainsi, les caractéristiques de l’architecture cible imaginée peut se résumer à la liste suivante :

  • Ajouter plus de bases MySQL, et avec encore plus de maîtrise de MySQL pour gérer la réplication.
  • Encore plus de bases de données autour, avec des systèmes master/slave
  • ESB (Enterprise Service Bus) pour communiquer et synchroniser les instances
  • RMI et JMS sur JDBC
  • RAC sur Oracle pour gérer la distribution (“Real Application Clusters”)
  • ouch !! :-)

Le design était une usine à gaz. Non seulement l’architecture devenait ultra complexe, mais générait également des arbitrages financiers : les licences d’oracle, par exemple, sont vendues par CPU. La quantité d’argent à payer pour avoir N bases de données est extrêmement élevée.

Définitivement, aller vers cette solution c’était partir vers une catastrophe en terme de satisfaction d’utilisateur par rapport au budget.

Heureusement, l’explosion de NoSQL est arrivée à ce moment précis !

Solution 2 : NoSQL

La persistance polyglotte, “la tour de babel”.  Apparemment une nouvelle technologie émergente couvrait les besoins auxquels on a fait référence : scalabilité dynamique, performance avec des gros volumes de données et l’architecture distribuée.

L’offre étant assez riche – Cassandra, MongoDB, CouchDB, Redis, Riak, HBase… – quelle solution choisir ?

Clé/Valeur ?  Document ?  Colonne ?  Graphe ?

Lorsqu’on est confronté à un défi tel que celui là, le plus important est de faire les bons choix pour le problème précis. Aujourd’hui on dispose de beaucoup de choix mais toutes les bases ne sont pas adaptées à tous les usages. Certaines ne scalent pas, certaines nécessitent des compétences dans des langages peu répandus (Erlang) etc. Il faut faire aussi attention au marketing (qui finance la solution ? est-elle vraiment NoSQL ?).

L’équipe a donc décrit une série de pré-requis initiaux qu’on résume ci-dessous :

  • Scalabilité automatique de gros volumes de données
  • Tolérance aux erreurs : réplication et récupération automatique des instances en erreur
  • Un modèle de données flexible
  • Efficacité dans l’accès aléatoire aux données
  • Open Source : l’équipe pourra s’investir dans le développement de la base NoSQL et d’y intégrer plus facilement des fonctionnalités inexistantes dont le nouveau CMS aurait besoin
  • Préférence pour le langage java

Après cette première réflexion, ils ont constaté qu’en plus des pré-requis déjà cités, les points suivants étaient aussi très importants :

  • Cohérence : surtout pas se retrouver avec deux versions du document en conflit sur une même ligne de donnée
  • Atomicité : transactions unitaires par ligne de donnée
  • Si possible, intégration avec Map/Reduce : ce que facilite, par exemple, la gestion des index dans la recherche full-text

Pourquoi “Apache HBase” ?

HBase suit un modèle de données Column, très flexible, avec lequel on peut garder toutes les versions d’un document. La solution offre la possibilité de ranger les données permettant la création d’index scalables, ainsi qu’un espace HDFS pour stocker les blobs. De plus, elle s’appuie sur l’implémentation Open Source de Google : BigTable. Entre autres caractéristiques techniques, HBase offre l’intégration avec Hadoop MapReduce et des API’s Java, REST, Thrift, Ruby Shell, Java M/R.

Enfin Steven a ajouté aussi que l’équipe se sentait à l’aise avec l’utilisation de la licence Apache et avec la communauté déjà très familière pour eux.

Contenu est synonyme de recherche

Grâce à HBase, ils ont trouvé le dépôt de données qu’ils recherchaient. Or, contenu est aussi synonyme de recherche ! Ils utilisaient le produit Lucene, mais le cadre avait complétement changé car la recherche devait tenir compte de la scalabilité dynamique.

Un CMS se compose de deux types de recherche :

  • Structurée, ou recherche logique (basée sur des types string, nombres, logique)
  • Récupération de données (full-text search) reposant sur de la numération

En partant de l’idée des Index Datastore de  Google App Engine l’équipe a développé la librairie HBase Indexing Library, et pour implémenter la méthode de recherche dont ils avaient besoin, ils se sont fait aider par le framework SOLR qui appartient aussi au projet Lucene.

La dernière étape était de pouvoir mettre à jour les index de données de HBase pour bien les connecter avec la recherche SOLR. Il fallait impérativement une méthode fiable de copie dans un environnement distribué.  Finalement WAL/Queue a été choisi comme solution pour  l’ensemble de garanties qu’il fournit dans la synchronisation de données.

Le résultat final est Lily :

  • Modèle de données flexible
  • HBase comme base de données NoSQL
  • Indexé. Recherche avec SOLR
  • Utilisation du mécanisme WAL/Queue implémenté en HBase
  • Basé sur leur produit Kauri à l’exécution
  • Communication Client/Serveur via Avro (et une interface REST interfacée avec JSON)

Steven a conclu en disant qu’ils ont réussi quelque chose qui leur plaît beaucoup et qu’ils sont très satisfaits des résultats.

Vous pouvez télécharger le guide d’apprentissage (architecture, modelé, API, Javadoc) – www.lilycms.org.  La release complète de Lily sera aussi distribuée fin octobre 2010.

Conclusion

Si votre architecture de données est correcte avec un seul CPU et une seule RAM, vous n’avez pas (encore) besoin de NoSQL. NoSQL sert principalement à couvrir le besoin d’une architecture distribuée et de haute disponibilité.

Mais si vous constatez que NoSQL est la solution à vos problématiques de distribution, scalabilité et performance sur des gros volumes de données, vous devrez donc faire le bon choix. Il faut surtout éviter de succomber aux sirènes du marketing, ou de faire un choix basé sur le “buzz”. Steven Noels et son équipe ont choisi HBase juste 2 mois avant le hype de Cassandra, mais si au départ Cassandra est plus simple, HBase est plus configurable.

Utiliser une base NoSQL implique de mettre les mains dans le code pour constater que la base fait vraiment ce qu’on dit qu’elle fait. Le choix est un risque ! Rappelez-vous que le choix le moins amusant peut être aussi le meilleur.

Pour en savoir plus :

Devoxx !

Vous y retrouverez des speakers comme Tom White (Cloudera/Hadoop O’Reilly author), Jonathan Ellis (Cassandra), Michael Stack (HBase), des conférences dédiés aux produits comme MongoDB, Voldemort et Elastic Search et cas d’applications pratiques sur Twitter, Facebook et Adobe

Troisième mi-temps

IMG_0497

3ème mi temps

De retour au Vavin, la fin de la soirée agréable et amusante comme toujours. Des conversations intéressants et retrouver encore quelques têtes.

Quelques personnes, comme d’habitude ;-) ont encore continué vers la quatrième mi-temps !

Et voilà, c’est tout !

Rendez-vous au prochain Paris JUG !!!

:-)

Article précédent : Introduction NoSQL

Paris JUG Septembre (I) – Introduction NoSQL par Olivier Mallassi et Michaël Figuière

9:19 pm in L'actualité, Les Conférences by Katia Aresti

Cet article a été co-rédigé par Claude Falguière et Katia Aresti

Mardi 14 Septembre 2010, Paris. L’ambiance de la rentrée se respire partout. Le retour à la normalité Parisienne. Et avec cette normalité…  le retour du Paris JUG ! Et avec le Paris JUG, n’oublions pas notre Avant JUG au café Vavin.

L’Avant JUG

L’avant JUG a été très sympa comme toujours. Quelques nouvelles têtes qui viennent pour la première fois au Paris JUG, et quelques garçons qui viennent découvrir finalement ce qu’est l’avant JUG : la possibilité de parler de façon décontractée  autour d’un verre du sujet de la soirée ou bien d’autre chose. De quoi a-t-on parlé ? Essentiellement de la conférence Devoxx qui a lieu dans deux mois. On a partagé nos envies et notre enthousiasme pour y aller.

Vers 19:10 on est parti tous ensemble aux locaux de l’ISEP.

Présentation de Startup Weekend


Sacha Bostoni - Photo: Claude Falguière

Sacha Bostoni - Photo: Claude Falguière

Sacha Bostoni nous a expliqué ce qu’est le Startup Weekend. On ne rentrera pas dans le détail car il existe déjà un post dédié (post startup weekend).

Comme promis, la main innocente de Laure a tiré au sort l’entrée gratuite offerte par Startup Weekend à Duchess France. Si vous êtes intéressés pour y assister, adressez-vous au groupe google duchessfr pour obtenir des entrées à prix réduit.

Nicolas Martignole nous a également rapidement présenté la conférence Soft Shake qui aura lieu le pour la première fois le 18 octobre à Genève. Cette conférence veut réunir les thèmes Agilité, Java et iPhone dans la même conférence. On vous en reparlera.

Une fois ces présentations finies, tout le monde arrivé et installé, la première partie de la conférence peut commencer :

Qu’est-ce que c’est NoSQL ?

Introduction à NoSQL

Depuis quelque temps on entend par ci et par là le mot “NoSQL” sans vraiment trop savoir ce que c’est. Ceux qui sont intéressés par la conférence Devoxx ont déjà constaté la quantité de sujets dédiés au Cloud/NoSQL cette année. Après tout le buzz autour de ce mot, Olivier Mallasi et Michaël Figuière nous ont fait finalement découvrir cette nouvelle technologie émergente en pleine expansion.


Michaël (g) et Olivier (d)- Photo: Claude Falguière

Michaël Figuière à gauche et Olivier Malassi - Photo: Claude Falguière

Les deux protagonistes de cette première partie de soirée ont réalisé un travail énorme pour enfin partager leur connaissances aux JUGs en France :

Olivier , consultant chez OCTO, créateur du NoSQL User Group Parisien début d’année 2010. Il est très expérimenté aux sein des systèmes d’information qui gèrent des grosses volumétries de données critiques.

Michaël, consultant chez Xebia, créateur du NoSQL Summer Group à Paris. Groupe dénommé  “underground” dont les participants se sont réunis pendant tout l’été au moins une fois par semaine pour travailler sur le sujet. Il est très expérimenté au sein des projets de fort trafic et de grosse charge.

Passons à la découverte de ce qu’est finalement NoSQL.

Est-ce la fin… du langage SQL ?  des SGBDR ? des transactions ACID ?

Derrière le sigle NoSQL se cache aussi le phrase : Not Only SQL. Le NoSql est un ensemble de technologies apparues depuis deux ans environ qui regroupe des bases de données qui proposent des alternatives au SGBD relationnels. Ce n’est pas un remplacement des systèmes de gestion de bases de données existants, mais chacun de ces systèmes a un atout qui le rend intéressant dans certains contextes.

Ces bases sont toutes différentes mais dans l’ensemble elles proposent des solutions qui répondent à des problématiques de gestion de gros volumes, de disponibilité, de souplesse et d’élasticité. Il s’agit d’un écosystème riche et complexe qui sont déjà présent en production.

Origines

La croissance des entreprises Google et Amazon a finalement généré d’énormes besoins que les systèmes de base de données classiques n’arrivent plus à traiter : une performance extraordinaire pour des volumes de données monstrueux, disponibilité 24 /24, résilience et scalabilité horizontale.

Ces deux sociétés avaient des besoins radicalement différents ce qui illustre bien la diversité du NoSQL :

Google étant un moteur de recherche mondial, avait le besoin de stocker toutes les applications web de la planète et de faire tourner de puissants batch d’indexation. Il a donc développé Map/Reduce, basé sur BigTable . Leur système permet de couvrir des besoins énormes de lecture ainsi que l’agrégation de gros volumes des données.

Dans la même période, Amazon, la boutique en ligne mondiale, était arrivé au limite de la scalabilité qu’un système classique pouvait le fournir.  Amazon a besoin d’un stockage totalement disponible en écriture particulièrement dans le processus d’achat : l’utilisateur a besoin d’une disponibilité totale lors de la commande, et du paiement. Une fois le paiement réalisé, on est plus à la seconde prêt et on peut se permettre de décaler tout ce qui est reporting etc.  Pour couvrir leur besoin, Amazon a développé Dynamo : un système qui permet moins de 40 minutes d’indisponibilité par/an, ainsi que d’obtenir un débit et une disponibilité plus importante en écriture.

Finalement des entreprises comme Facebook, LinkedIn ou Twitter sont arrivées à la même conclusion.

Une importante offre Open Source apparaît : MongoDB, Voldemort, Cassandra etc. Chaque solution offre une stratégie de stockage différente.

Et Oracle ? Oracle travaille sur des solutions Data Grid, avec lequel on obtient des caractéristiques similaires pour un prix beaucoup plus élevé.

Passons à regarder un extrait de l’offre opensource existant.

Types de bases NoSQL

- Bases graphe

Leur modèle de représentation des données repose sur la notion de noeuds et de relation entre noeuds et de propriétés qui leur sont attachées. Ce sont des modèles très répandus dans le traitement des données de réseaux sociaux (l’utilisateur, ses amis, ses messages). Elles sont aussi en phase avec les outils du web sémantique (RDF, SparlQL).

Le principal représentant est Neo4J.

- Clé valeur

Ce sont des hashmaps distribuées. Ce modèle est très simple et les implémentations sont très nombreuses. On trouve principalement Voldemort crée par LinkedIn et Riak

- Bases colonne

Ce sont aussi des sortes de hashmap. Ce modèle ressemble un peu à une table relationnelle à première vue, mais une ligne peut avoir un nombre quelconque de “colonnes” qui sont en fait représentées par une série de couples clé-valeur. Elles permettent d’avoir une représentation plus flexible des données attachées à une entité. La base la plus connue dans cette catégorie est Cassandra

- Bases document

Ce sont encore des hashmaps où la valeur associée à une clé est un document soit XML soit JSON. Leur intérêt est de pouvoir retrouver avec une seule clé tout un ensemble d’informations structurées de manière hiérarchique : un utilisateur, ses statuts, ses messages. L’équivalent en relationnel impliquerait beaucoup de jointures. On trouve principalement MongoDB et CouchDB

Indépendamment de la stratégie de stockage de la base, un langage commun de requêtes – un équivalent SQL – n’existe pas encore. La programmation est encore assez lourde, et il n’existe pas encore d’outils équivalents aux ORM. N’oublions pas que c’est une technologie émergente, et MongoDB par exemple permet de faire quelque chose ressemblant à un ORM, mais Cassandra est loin encore de là.

Au delà des modèles de données spécialisés pour optimiser certains types d’opérations, ces bases partagent des caractéristiques d’architecture. NoSQL est un changement de paradigme :

  • Table de hachage distribué
  • Relâchement d’ACID

Qu’est-ce que c’est la “Table de hachage distribuée” ?

Elles utilisent en général la distribution des requêtes et des données sur plusieurs instances. Des mécanismes de hachage répartissent ces données sur un ensemble d’instances satisfaisant pour garantir la disponibilité. Ce type d’architecture leur donne de bonnes caractéristiques de scalabilité.

Consistent Hashing

Transactions ACID : Comment se passent-elles avec NoSQL ?

(C)onsistance

” The consistency property ensures that the database remains in a consistent state; more precisely, it says that any transaction will take the database from one consistent state to another consistent state.”

Les bases NoSql appliquent généralement un principe d’eventual consistency (cohérence in-fine) qui relaxe une partie des règles. Dans ce modèle, les données sont redondantes, elles sont écrites sur plusieurs instances et lues sur plusieurs instances. Il appartient au développeur de définir pour chaque type d’usage le degré de fiabilité qu’il attend. De la même manière que les développeurs sur base de données relationnelles ont appris à régler le niveau d’isolation, ils vont devoir apprendre à travailler avec la redondance.

Pour assurer la consistance des données, on va partir d’une formule “magique” :

  • N = Nombre de répliquas que l’on veut sur notre cluster
  • R = Nombre de réponses en lecture à attendre
  • W = Nombre de confirmation d’écriture qu’on va attendre

Il faut simplement que R + W > N : un recouvrement entre le nombre total d’instances en lecture et en écriture.

Afin d’illustrer la formule graphiquement :

Cas 1 :  R+W < N

N = 4, W = 1, R = 2

Raté !

La consistance n’est pas assurée !

Cas 2 :  R+W = N

N = 4, W = 2, R = 2

Raté !

La consistance n’est pas assurée !

Cas 3 :  R+W > N

N = 4, W = 2, R = 3

On a gagné ! :)

La durabilité est assurée au moins sur l’instance 2 !

En partant de la formule de base à respecter, on jouera avec les coefficients pour trouver le meilleur compromis adapté à notre système.

Lors de la ronde questions/réponses, deux questions intéressantes ont été évoquées à ce sujet :

Si les répliquas sont des entités physiques, et les valeurs R et W sont configurés par programmation… Comment est-il possible d’ajouter des répliquas dynamiquement ?

Réponse : Toutes les solutions NoSQL ne sont capables d’ajouter des répliquas dynamiquement; mais Cassandra par exemple dispose d’une configuration qui s’appelle “Quorum” : plutôt que de définir R et W, le client peut indiquer qu’il veut le quorum soit atteint (la moitié des instances +1)

Que se passe-t-il si on a deux écritures à la suite et les données ne sont pas cohérentes ?

Réponse : La plupart des bases NoSql implémentent une gestion de la concurrence basée sur un timestamp. Lors de la lecture seule la donnée la plus récente est conservée. Voldemort implémente aussi un système intéressant nommé Vector Clock.

(D)urabilité

“Durability is the ability of the DBMS to recover the committed transaction updates against any kind of system failure (hardware or software)”

Elles peuvent également avoir une interprétation différente de la durabilité. Pour une base de données relationnelle, la donnée persiste quand elle est écrite dans le journal sur disque. Pour les bases NoSql la situation varie. Certaines bases  appliquent les mêmes règles, d’autres vont se baser sur des journaux mémoire, d’autres encore travaillent essentiellement en mémoire comme Redis.

(A)Tomicite et (I)solation

“Atomicity requires that database modifications must follow an “all or nothing” rule”

“Isolation refers to the requirement that other operations cannot access data that has been modified during a transaction that has not yet completed.”

L’atomicité et l’isolation sont des concepts difficiles à transposer lorsqu’ils impliquent des relations entre données qui sont distribuées sur des instances dont le nombre est variable et qui pourraient éventuellement ne plus pouvoir communiquer.

Points positifs/négatifs

Les caractéristiques techniques que ces bases ont choisi d’implémenter leur donnent un avantage sur les aspect suivants :

  • Gérer plus de volume, les données peuvent être déployées sur plusieurs instances ;
  • Avoir une meilleure disponibilité en écriture, essentiellement en se passant du transactionnel qui crée des points de contention ;
  • Une meilleure tolérance aux pannes partielles (les partitionnements réseaux), la redondance des données fait qu’il existe statistiquement la donnée sur la branche qui reste accessible, l’écriture reste possible sur les nœuds accessibles et la resynchronisation se fera plus tard ;
  • L’élasticité, sur la plupart des systèmes le nombre d’instances peut varier dynamiquement et la base sait se rééquilibrer sur les nœuds ;
  • Conserver des bonnes performances sur de très gros volumes ;
  • Permettent une modélisation plus souple (en particulier le mode colonne qui permet par exemple d’utiliser une variable comme nom de colonne) ou plus immédiatement utilisable (graphes, document JSON) ;
  • La flexibilité de la modélisation permet aussi de gérer plus facilement les évolutions de structures de données.

La contrepartie est un coût de développement et des impacts structurels au sein des équipes de production :

  • Les API sont très simples, souvent très basiques et limitées à un PUT, GET, DELETE ;
  • Le code client doit prendre en charge des éléments cachés par les couches SQL liés à l’organisation des données et la gestion de la redondance ;
  • Il n’existe pas d’outils équivalents aux ORM qui rendent transparente la base de données ;
  • Il n’existe pas un langage commun (similaire à SQL), tout est dépendant de la solution choisie. Mais des ‘langages’ communs par famille de base de données pourrait apparaître ;
  • Dans la mesure où on ne peut pas faire de jointure après coup, tout repose sur une bonne organisation des données et un travail important sur les clés ;
  • Pour les productions aussi le NoSql est un changement de paradigme : il demande des compétences différentes de celles des DBA. Ce sont souvent des outils qui tournent dans des JVM et nécessitent une bonne compréhension de la  distribution ;
  • La sécurité sur les bases NoSql est un sujet qui n’est pas vraiment traité pour l’instant. Il n’y a pas d’accès restreint par exemple.

Conclusion

Au delà du buzz, NoSQL est une technologie émergente à surveiller. Cherche-t-elle à remplacer les systèmes classiques ? NoSQL challenge 40 années de stockage de données, mais la réponse est non.

On va de plus en plus vers la souplesse, la disponibilité totale des applications, l’élasticité, et le stockage de données devient de plus en plus importante. Est ce que les applications que l’on réalise au quotidien en auront besoin ? Pour le moment pas vraiment, mais Michael constate que la possibilité crée le besoin, et que des demandes auparavant inimaginables voient le jour.

A retenir : NoSQL est déjà en production et la performance est excellente. Or vous ne devriez pas choisir NoSQL uniquement pour la performance pure sur une instance, mais plutôt pour le besoin de distribution de données et de disponibilité.

Retour d’expérience : CMS on top of NoSQL par Steven Noels

Soirée NoSQL au ParisJug (14/09)

5:30 pm in L'actualité, Les Conférences by ElleneDijoux

C’est la rentrée ! Et à cette occasion, l’équipe du ParisJug vous propose lors de sa prochaine soirée du NoSQL. Cette nouvelle approche nous sera présentée par Olivier Mallassi, Michael Figuiere et dans la seconde partie Steven Noels. Pour vous donner des raisons de venir à cette soirée, nous avons demandé à Michael Figuiere de nous expliquer rapidement cette nouvelle technologie.

Ellène : Qu’est-ce-que NoSQL ?

MichaelFiguiereMichael : NoSQL est un mouvement apparu il y a un peu plus d’un an, il désigne un ensemble de SGBD qui se caractérisent par une modélisation non relationnelle et une structure simplifiée. Ces particularités permettent à la plupart d’entre eux de disposer d’une architecture distribuée très efficace pour assurer la haute disponibilité et la montée en charge, deux caractéristiques souvent délicates à obtenir avec les bases de données relationnelles courantes. Pourtant il ne s’agit en aucun cas d’un remplacement du relationnel, mais bien d’un complément. NoSQL est ainsi souvent sous-titré “Not Only SQL”.
La plupart des bases de données NoSQL sont Open Source et s’appuient sur les développements réalisés par les “grands du Web” tels que Google, Amazon ou Facebook. Les principales d’entre elles sont Cassandra, HBase, MongoDB, CouchDB, Voldemort, Riak ou encore Neo4j.

Ellène : Pourquoi y-a-t-il un tel engouement pour cette technologie ?

Michael : Le stockage des données est une fonction très critique pour laquelle on a longtemps préféré se reposer sur des SGBDR très matures, gage de fiabilité. Les technologies NoSQL bénéficient d’une image de marque du fait qu’elles fonctionnent actuellement en production chez les “grands du Web” pour gérer des volumes colossaux de données. Dès lors on leur accorde une certaine confiance quant à leur fiabilité dans des environnements forcément plus modestes.
Car c’est bien de leur utilisation au sein des systèmes d’information des entreprises dont il est maintenant question, car même sans avoir d’énormes besoins en volume de données et en charge, la haute disponibilité et la capacité à monter en charge sont des caractéristiques très recherchées. Par ailleurs en permettant l’ajout ou le retrait de machines pour s’adapter aux besoins, les bases de données NoSQL s’intègrent particulièrement bien à la logique d’élasticité du Cloud Computing qui gagne en popularité actuellement.
Enfin, NoSQL ouvre de nouveaux horizons : le stockage et la manipulation d’un énorme volume de données est maintenant accessible. Beaucoup doutent encore de l’utilité d’une telle possibilité pour des structures plus modestes que Google de même qu’il y a 20 ans un magazine informatique titrait “Mais que peut-on bien faire d’un disque dur de 40 Mo ?”… L’histoire a montré que la possibilité créait de nouveaux besoins.

Ellène : Quels notions et outils allez vous présenter au ParisJug ?

Michael : Au Paris JUG, Olivier Mallassi et moi présenterons les différents concepts et modèles de données que l’on retrouve parmi les bases de données NoSQL, nous montrerons quelques exemples d’utilisations et ferons le tour des principaux produits. Nous aborderons également les origines du NoSQL et pourquoi des entreprises comme Google et Amazon en sont arrivées à développer leur propre solution de stockage.
La soirée se poursuivra avec un retour d’expérience de Steven Noels. Il nous fera partager son expérience pratique acquise lors du développement d’un CMS basé sur HBase.


NoSQL vous intéresse ? Précipitez vous donc pour vous inscrire. Les inscriptions ouvriront Jeudi à 7h, ne les ratez pas les places partent très vite ;) .

Cassandra au NoSql User Group

3:14 pm in Les Conférences by Claude Falguière

La soirée du 26 Mai du NoSql User Group à Paris était consacrée à Cassandra. C’était une soirée très attendue car elle avait été annulée pour cause de volcan islandais, puis déplacée pour cause de lundi de Pentecôte. Enfin voilà, finalement, une cinquantaine de personnes sont là pour entendre parler de Cassandra par un des membres du projet.

Cassandra est projet Open Source de l’Apache Sofware Foundation. C’est un système de gestion de base de données qui fait partie de la grande tribu des NoSql, et dans cette tribu il est un représentant de la famille Key-Value.

Key Value ? NoSql ? Si ces mots sont nouveaux pour vous, vous pouvez vous reporter à la présentation de NoSql que Tim Anglade, un des deux organisateurs du NoSql User Group à Paris, dans une soirée précédente.

La présentation sur Cassandra se trouve là. Elle aborde le modèle de données de Cassandra et une partie intéressante sur la distribution des données sur les différentes instances du cluster. Et Cassandra est écrit en Java, ce qui justifie qu’on en parle ici.

La soirée était intéressante pour la présentation elle même mais aussi pour les discussions qui ont suivi avec ceux qui mettent en oeuvre en ce moment des applications avec Cassandra ou d’autres types de base NoSql.

Si ce domaine vous intéresse vous pouvez suivre la mailing list du NoSql User Group. Il est animé par Olivier Mallasi d’Octo Technology et Tim Anglade.