{"id":419,"date":"2010-12-20T14:44:32","date_gmt":"2010-12-20T12:44:32","guid":{"rendered":"http:\/\/loicmathieu.free.fr\/wordpress\/?p=419"},"modified":"2011-12-15T12:39:18","modified_gmt":"2011-12-15T10:39:18","slug":"chti-jug-nosql","status":"publish","type":"post","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-nosql\/","title":{"rendered":"Ch&rsquo;ti JUG : NoSQL"},"content":{"rendered":"<p>Le 2 d\u00e9cembre s&rsquo;est tenu dans les locaux de l&rsquo;IUT A de Lille une session du <a title=\"Ch'ti JUG\" href=\"http:\/\/chtijug.org\/\" target=\"_blank\">Ch&rsquo;ti JUG<\/a> sur les technologie NoSQL anim\u00e9 par Olivier Mallassi.<\/p>\n<p>L&rsquo;intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l&rsquo;informatique:<\/p>\n<ul><li>Au commencement \u00e9t\u00e9 les fichiers plats<\/li>\n\n<li>Puis vinrent les fichiers plats index\u00e9 (gain de performance gr\u00e2ce \u00e0 l&rsquo;index) encore couramment utilis\u00e9s (et surtout en COBOL).<\/li>\n\n<li>Ensuite apparurent les base de donn\u00e9es relationnelle (les SGBDR &#8211; Syst\u00e8me de Gestion de Base de Donn\u00e9es Relationnel) et le langage SQL, nous \u00e9tions dans les ann\u00e9e 1970!<\/li>\n<\/ul>\n<p>Pendant pr\u00eat de 40 ans, les SGBDR r\u00e9gn\u00e8rent en ma\u00eetre sur les technologies de stockage de donn\u00e9es &#8230; puis au d\u00e9tour des ann\u00e9es 2000 un outsider est apparut, pouss\u00e9 par les besoins sp\u00e9cifique des g\u00e9ants du web.<\/p>\n<p>En effet, de par l&rsquo;accroissement de la fr\u00e9quentation du web, certaines soci\u00e9t\u00e9 telle que Google ou Amazon ont eu a traiter un nombre de donn\u00e9es tellement important avec une n\u00e9cessit\u00e9 de s\u00e9curisation des donn\u00e9es tellement grande (leur business model \u00e9tant bas\u00e9 dessus) que les SGBDR montr\u00e8rent leur limite et ces soci\u00e9t\u00e9 commenc\u00e8rent \u00e0 d\u00e9velopper des bases de donn\u00e9es non relationnelle : le NoSQL \u00e9t\u00e9 n\u00e9.<\/p>\n<p>Revenons sur les contraintes de ces g\u00e9ants du web:<\/p>\n<ul><li>Performance malgr\u00e9 tout (m\u00eame en cas o\u00f9 une partie des serveurs tombe)<\/li>\n\n<li>Disponibilit\u00e9 &gt; 99,99%<\/li>\n\n<li>R\u00e9silience (capacit\u00e9 \u00e0 supporter les pannes)<\/li>\n\n<li>Scallabilit\u00e9 horizontale<\/li>\n<\/ul>\n<p>Pour pallier \u00e0 ces contraintes, chaque soci\u00e9t\u00e9 d\u00e9veloppa ses technologies. Aujourd&rsquo;hui on peut les ranger en 4 cat\u00e9gories distinctes.<\/p>\n<h2>Les bases de donn\u00e9es orient\u00e9es colonne<\/h2>\n<p><strong>R\u00e9f\u00e9rences<\/strong> : BigTable (Google), HBase (Apache) et Cassandra (Facebook)<\/p>\n<p>Principales fonctionnalit\u00e9s:<\/p>\n<ul><li>Stockage des donn\u00e9es en colonne et non en lignes<\/li>\n\n<li>1 ligne = une HashMap et 1 valeur = une HashMap, on manipule donc des HashMap de HashMap via l&rsquo;API.<\/li>\n\n<li>Donn\u00e9es stock\u00e9e en tableau de byte : donn\u00e9e non structur\u00e9e<\/li>\n\n<li>Impl\u00e9mentation de l&rsquo;algorithme <a title=\"MapReduce\" href=\"http:\/\/fr.wikipedia.org\/wiki\/MapReduce\" target=\"_blank\">MapReduce<\/a> au plus proche des donn\u00e9es (Job directement dans la base de donn\u00e9es) pour le requ\u00eatage de donn\u00e9es<\/li>\n\n<li>Existence de DSL (Domain Specific Language) au dessus de MapReduce pour en simplifier l&rsquo;utilisation telle que Hive et Pig permettant l&rsquo;utilisation de JDBC et d&rsquo;une s\u00e9mantique plus proche du SQL.<\/li>\n<\/ul>\n<h2>Les bases de donn\u00e9es Key\/Value<\/h2>\n<p><strong>R\u00e9f\u00e9rence <\/strong>: Dynamo (Amazon) et Project Voldemor (LinkedIn)<\/p>\n<p>Principales fonctionnalit\u00e9s:<\/p>\n<ul><li>Donn\u00e9es stock\u00e9e sous forme de key\/value dans des HashMap : on manipule donc directement des HashMap via l&rsquo;API<\/li>\n\n<li>But : accepter une demande quelle que soit l&rsquo;\u00e9tat de la base<\/li>\n\n<li>Mod\u00e8le distribu\u00e9, \u00e9lastique, ajout d&rsquo;un serveur dans l&rsquo;infrastructure \u00e0 la demande<\/li>\n\n<li>Mod\u00e8le cl\u00e9\/valeur distribu\u00e9 sur l&rsquo;ensemble des serveurs : cl\u00e9 = localisation<\/li>\n\n<li>Scalabilit\u00e9 horizontale<\/li>\n\n<li>Tol\u00e9rance \u00e0 la panne gr\u00e2ce \u00e0 une synchronisation asynchrone et synchrone des diff\u00e9rents serveurs : mode Master\/Master et mise \u00e0 jour concurrente (transaction non ACID)\n<ul><li><strong>gossip protocol<\/strong> : les serveurs se parlent entre eux au sujet de leur disponibilit\u00e9<\/li>\n\n<li><strong>hinted handoff <\/strong>: capacit\u00e9 \u00e0 servir la requ\u00eate d&rsquo;un autre serveur si celui-ci ne r\u00e9pond pas<\/li>\n<\/ul><\/li>\n\n<li><strong>Read Repair<\/strong> : mod\u00e8le \u00ab\u00a0<em>eventually concistent<\/em>\u00ab\u00a0, ce qui veut dire consistant \u00e0 la fin : plusieurs versions diff\u00e9rentes sur les diff\u00e9rent serveur selon leur degr\u00e9 de synchronisation, mais la r\u00e9ponse est toujours consistante.<\/li>\n<\/ul>\n<h2>Les bases de donn\u00e9es orient\u00e9es document<\/h2>\n<p><strong>R\u00e9f\u00e9rence:<\/strong> MongoDB<\/p>\n<p>Principales fonctionnalit\u00e9s:<\/p>\n<ul><li>Mod\u00e8le de donn\u00e9e en Key\/Valeur dont la valeur est une donn\u00e9e structur\u00e9e et indexable<\/li>\n\n<li>Requ\u00eatage possible \u00e0 l&rsquo;int\u00e9rieur de la valeur (dans sa structure)<\/li>\n<\/ul>\n<h2>Les bases de donn\u00e9es Graph<\/h2>\n<p><strong>R\u00e9f\u00e9rence: <\/strong>neo4j<strong> <\/strong><\/p>\n<p>Principales fonctionnalit\u00e9s:<\/p>\n<ul><li>Donn\u00e9es repr\u00e9sent\u00e9e en graphe<\/li>\n\n<li>Impl\u00e9mentation d&rsquo;un algorithme de parcours de graphe pour le requ\u00eatage<\/li>\n\n<li>Principales notions : node, relation, property<\/li>\n<\/ul>\n<h2>Autres types de bases de donn\u00e9es NoSQL<\/h2>\n<p>Base de donn\u00e9es XML, Base de donn\u00e9es Objet, Base de donn\u00e9es g\u00e9ographique, &#8230;<\/p>\n<h2>Force et faiblesse du NoSQL<\/h2>\n<p>Attention, dans certain cas les forces et faiblesses peuvent \u00eatre vue comme des faiblesse ou des forces. En effet par exemple le fait que la mod\u00e9lisation soi faible est un avantage quand on ne veut pas s&#8217;embarrasser d&rsquo;une mod\u00e9lisation complexe.<\/p>\n<p>Ces forces et faiblesses s&rsquo;appliquent principalement aux base de type orient\u00e9e colonnes, orient\u00e9e document ou Key\/Value.<\/p>\n<table style=\"height: 146px\" width=\"735\"><tbody><tr><th>Forces<\/th>\n<th> Faiblesses<\/th>\n<\/tr><tr><td>Performance\nStockage de gros volume\nDisponibilit\u00e9 et tol\u00e9rance aux pannes\n\u00c9lasticit\u00e9 du stockage\nSouplesse de mod\u00e9lisation : pas de structure, on stocke ce que l&rsquo;on veut.<\/td>\n<td>Transaction non ACID\nFaible mod\u00e9lisation\nPas de contrainte d&rsquo;int\u00e9grit\u00e9\nChangement d&rsquo;outillage d&rsquo;administration (le plus souvent, bases de donn\u00e9es en Java =&gt; JMX)\nPeu de contraintes d&rsquo;acc\u00e8s (GRANT)\nPas de standard\nDifficile d&rsquo;int\u00e9grer \u00e0 un Syst\u00e8me d&rsquo;Information existant<\/td>\n<\/tr><\/tbody><\/table>\n<p>Pour autant, il ne faut pas perdre \u00e0 l&rsquo;esprit que les bases de donn\u00e9es NoSQL ne veulent pas remplacer les bases de donn\u00e9es relationnelle mais bien offrir une alternative permettant de r\u00e9pondre \u00e0 des besoins que n&rsquo;adressent pas les SGBDR classique. C&rsquo;est une r\u00e9elle <strong>innovation <\/strong>qui nous oblige \u00e0 <strong>penser diff\u00e9remmen<\/strong>t la notion de stockage de base de donn\u00e9es et vient bouleverser <strong>40 ann\u00e9es de SGBDR<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Le 2 d\u00e9cembre s&rsquo;est tenu dans les locaux de l&rsquo;IUT A de Lille une session du Ch&rsquo;ti JUG sur les technologie NoSQL anim\u00e9 par Olivier Mallassi. L&rsquo;intervenant a commenc\u00e9 la conf\u00e9rence par un bref historique de la mani\u00e8re dont les donn\u00e9es on \u00e9t\u00e9 stock\u00e9es dans le monde de l&rsquo;informatique: Au commencement \u00e9t\u00e9 les fichiers plats Puis vinrent les fichiers plats index\u00e9 (gain de performance gr\u00e2ce \u00e0 l&rsquo;index) encore couramment utilis\u00e9s (et surtout en COBOL). Ensuite apparurent les base de donn\u00e9es&#8230;<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-nosql\/\">Lire la suite<span class=\"screen-reader-text\"> Lire la suite<\/span><\/a><\/p><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[148,118,11,147],"class_list":["post-419","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-bdd","tag-chti-jug","tag-java","tag-nosql"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":566,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-lili-et-cassandra\/","url_meta":{"origin":419,"position":0},"title":"Ch&rsquo;ti JUG : Lili et Cassandra","author":"admin","date":"jeudi 15 d\u00e9cembre 2011","format":false,"excerpt":"Le 12 d\u00e9cembre s'est tenu dans les locaux de l'IUT A de Lille une session du Ch'ti JUG sur Lili et Cassandra deux outils autour des bases de donn\u00e9es NoSql. La pr\u00e9sentation de Lili a \u00e9t\u00e9 faite par Stevens Noel et celle sur Cassandra par J\u00e9r\u00e9my Sevellec. Ayant d\u00e9j\u00e0 \u00e9crit\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":377,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/session-chti-jug-sur-les-technologies-google\/","url_meta":{"origin":419,"position":1},"title":"Ch&rsquo;ti Jug: les technologies Google","author":"admin","date":"mercredi 11 novembre 2009","format":false,"excerpt":"Hello, Lundi j'ai \u00e9t\u00e9 \u00e0 la session du Ch'ti Jug sur les technologies Google qui s'est pass\u00e9 \u00e0 l'ISEN et \u00e9tait sponsoris\u00e9e par SII. C'\u00e9tait la premi\u00e8re fois que j'assistais \u00e0 un \u00e9v\u00e8nement organis\u00e9 par le Ch'ti Jug et comme c'\u00e9tait int\u00e9ressant, j'aimerais partager avec vous l\u00e0 dessus. Ch'ti Jug?\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"Google Wave","src":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=350%2C200 1x, https:\/\/i0.wp.com\/loicmathieu.free.fr\/wordpress\/wp-content\/uploads\/google-wave.jpg?resize=525%2C300 1.5x"},"classes":[]},{"id":386,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-html5-websocket-et-autres-protocole-de-communication\/","url_meta":{"origin":419,"position":2},"title":"Ch&rsquo;ti JUG: HTML5: WebSocket et autres protocole de communication","author":"admin","date":"dimanche 13 d\u00e9cembre 2009","format":false,"excerpt":"Jeudi s'est tenu dans les locaux d'ADEO une session du Ch'ti Jug sur HTML5 et tout particuli\u00e8rement les WebSockets: Kaazing HTML5 WebSocket Talk at the Ch\u2019ti JUG Meeting in Lille, France Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":391,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/chti-jug-drools-v5-et-drools-planner\/","url_meta":{"origin":419,"position":3},"title":"Ch&rsquo;ti Jug: Drools v5 et Drools Planner","author":"admin","date":"samedi 13 f\u00e9vrier 2010","format":false,"excerpt":"Jeudi 21 janvier s'est tenu dans les locaux de l'Universit\u00e9 de Lille 1 une session du Ch'ti Jug sponsoris\u00e9e par Cylande sur Drools:\u00a0 Drools, avec Cylande et l'Universit\u00e9 Lille 1 Pour ceux qui ne savent pas ce qu'est le Ch'ti Jug ou ce qu'est un Jug, voir l'introduction de mon\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":408,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-git-et-mockito\/","url_meta":{"origin":419,"position":4},"title":"Ch\u2019ti Jug: GIT et Mockito","author":"admin","date":"mercredi 26 mai 2010","format":false,"excerpt":"Mardi 20 avril s'est d\u00e9roul\u00e9 une session du Ch'ti JUG sur GIT et Mockito sponsoris\u00e9 par ProxiAD : GIT et Mockito avec ProxiAD Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":399,"url":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/informatique\/ch%e2%80%99ti-jug-glassfish-esb\/","url_meta":{"origin":419,"position":5},"title":"Ch\u2019ti Jug: GlassFish ESB","author":"admin","date":"lundi  1 mars 2010","format":false,"excerpt":"Jeudi 21 janvier s\u2019est tenu une session du Ch\u2019ti Jug sponsoris\u00e9e par\u00a0 Cap Gemini sur GlassFish ESB : GlassFish ESB avec CAPGEMINI. Pour ceux qui ne savent pas ce qu\u2019est le Ch\u2019ti Jug ou ce qu\u2019est un Jug, voir l\u2019introduction de mon article sur la premi\u00e8re session \u00e0 laquelle j\u2019ai\u2026","rel":"","context":"Dans &quot;informatique&quot;","block_context":{"text":"informatique","link":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/category\/informatique\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/comments?post=419"}],"version-history":[{"count":0,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/posts\/419\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/media?parent=419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/categories?post=419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.loicmathieu.fr\/wordpress\/fr\/wp-json\/wp\/v2\/tags?post=419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}