<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ze Technology &#187; Non classé</title>
	<atom:link href="http://www.ze-technology.com/category/non-classe/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ze-technology.com</link>
	<description>Ze Blog qui parle de Ze Technology. Univers du libre, programmation, société, business...</description>
	<lastBuildDate>Fri, 23 Jul 2010 20:21:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Retour d&#8217;expérience sur MongoDB partie 1 : présentation</title>
		<link>http://www.ze-technology.com/2010/07/23/retour-dexperience-sur-mongodb/</link>
		<comments>http://www.ze-technology.com/2010/07/23/retour-dexperience-sur-mongodb/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 20:19:55 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=691</guid>
		<description><![CDATA[Retour d&#8217;expérience sur MongoDB
Cela fait maintenant quelques temps que je donne plus de nouvelles,
plus un signe de technologie, de recherche. Et pourtant, de la
recherche, il y en a eu !
Après avoir passé une longue période à essayer les différents outils
de QA dédiés au web, j&#8217;ai passé ces derniers mois à essayer &#8211; et
exploiter &#8211; les [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Retour d&#8217;expérience sur MongoDB</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Cela fait maintenant quelques temps que je donne plus de nouvelles,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">plus un signe de technologie, de recherche. Et pourtant, de la</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">recherche, il y en a eu !</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Après avoir passé une longue période à essayer les différents outils</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">de QA dédiés au web, j&#8217;ai passé ces derniers mois à essayer &#8211; et</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">exploiter &#8211; les NoSQL. La littérature est déjà bien large sur le sujet</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">dans ses généralités. Cassandra, HBase, Voldemort, Redis&#8230; tout y</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">passe, du plus ancien dépôt clé/valeur au plus évolué système orienté</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">graphe ou document. Je vais parler ici finalement de MongoDB, que j&#8217;ai</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">pu torturer en long, en large et en travers, et qui appartient</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">justement à la catégorie des NoSQL orienté document.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Un NoSQL, pourquoi ?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Certainement pas par effet de mode. Une prise de décision basée sur ce</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">critère ne serait que folie. Par besoin ? Il va être temps de définir</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ces besoins. Car on assiste à bon nombre de projets qui tendent à</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">délaisser ces bons vieux SGBDR au profit de leurs consins</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">non-relationnels. Or, la plupart de ces projets ont &#8211; selon moi -</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">surtout un problème de conception et non d&#8217;outils. Si ces projets</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">reprochent à MySQL une certaine lenteur, ils feraient bien mieux</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">d&#8217;apprendre à tirer profit d&#8217;une configuration optimale, et d&#8217;une</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">conception sérieuse du modèle de données, avec une stratégie</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">d&#8217;indexation adaptée. On ne le dira jamais assez : des bases comme</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">MySQL, PostgreSQL ou autre ont perduré pendant des années. La</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">réplication est fonctionelle. Le partitionnement est possible. Les</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">plus gros l&#8217;ont utilisé et continuent à l&#8217;utiliser. Twitter avoue même</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">rester sur MySQL après avoir essayé timidement de mettre en place</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Cassandra. Non, pour moi, une des raison qui peut pousser à envisager</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">une solution NoSQL est ailleurs. La grosse plus value de ces solutions</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">reste toujours leur très bonne disposition à &laquo;&nbsp;scaler&nbsp;&raquo;. Autrement dit,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">si on souhaite absorber un déluge de données croissant, on y trouvera</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">un allié puissant pour rapidement doubler, quadrupler la puissance de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">stockage, sans se lancer dans une trop lourde configuration du</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">partitionnement et/ou de la réplication.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Orienté document, pourquoi ?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Comme d&#8217;habitude, nuançons ce point de vue par un autre apport, mais</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">celui-ci est propre au modèle de stockage choisi. On en dénombre 4 :</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- dépôts clé/valeur (Voldemort, Redis&#8230;)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- orientés colonne (Cassandra, HBase&#8230;)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- orientés documents (CouchDB, MongoDB&#8230;)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- orientés graphes (Neo4J&#8230;)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chaque modèle répond à des problématiques et stratégies de stockage</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">différentes. MongoDB stocke des &laquo;&nbsp;documents&nbsp;&raquo;. Un document est un</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ensemble de paires clé/valeurs, ici décrites au format BSon. Ce format</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">est largement comparable au JSon, modulo quelques types additionnels.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">{</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">blog: http://www.zt.com,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">authors: [adrien, robot],</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">comments:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">[</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{ author: robert, age: 42 },</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>{ author: johanna, age: 25 }</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">]</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Volà donc typiquement ce qui peut être stocké dans une collection (=</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">table) MongoDB. Ce stockage est dit &laquo;&nbsp;schemaless&nbsp;&raquo;, traduire par &laquo;&nbsp;sans</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">schéma&nbsp;&raquo;. Les documents ne correspondent à aucune définition formelle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">qui aurait été préalablement définie. Ainsi, on pourrait très bien</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">rajouter un autre document &laquo;&nbsp;blog&nbsp;&raquo; similaire à l&#8217;exemple, mais sans</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">champs &laquo;&nbsp;authors&nbsp;&raquo; et avec une colonne &laquo;&nbsp;keywords&nbsp;&raquo;. le NewYorkTimes tire</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">partie de ce modèle avec MongoDB en permettant à ses contributeurs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">d&#8217;ajouter des méta-données à la volée pour chaque photo soumise. En</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">effet, on ne retrouve pas forcément les même méta-données entre une</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">photo de lieu et celle d&#8217;une star. Certes, la chose reste largement</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">faisable avec les outils actuels. Le modèle document est juste</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">extrémement adapté à ce type de stockage, sans s&#8217;occuper d&#8217;un modèle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">relationnel et ses multiples contraintes. Je sais, je viens de donner</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">un argument qui pourrait remettre en cause le premier : certains NoSQL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ont un rôle qui dépasse de loin celui d&#8217;un entrepôt extensible et redondé.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">MongoDB, pourquoi ?</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Voyons maintenant le cas particulier de MongoDB. C&#8217;est un NoSQL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">orienté documents, qui se qualifie par l&#8217;acronyme &laquo;&nbsp;CP&nbsp;&raquo; du théorème de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">CAP.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1) Langage de requêtage intuitif</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Tout naturellement, lorsqu&#8217;on essaye un système de stockage, nos</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">premiers essais se tournent vers l&#8217;insertion et la récupération de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">données. Pour l&#8217;insertion, nous venons de voir qu&#8217;elle s&#8217;effectuait au</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">format BSon. Concretement, après avoir lancé le shell MongoDB, la</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">commande suivante effectuerait une insertion dans une collection</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&laquo;&nbsp;test&nbsp;&raquo; :</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">db.test.insert({&nbsp;&raquo;name&nbsp;&raquo;: &laquo;&nbsp;Adrien&nbsp;&raquo;});</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Et pour requêter nos collections, cela s&#8217;effectue également tout</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">naturellement au format BSon ! MongoDB fournit un certain nombre</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">d&#8217;opérateurs classiques : &gt;, &lt;, =, &gt;=, IN, NOT IN, etc. Quelques</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">exemples :</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Tous les utilisateurs &laquo;&nbsp;toto&nbsp;&raquo;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">db.test.find({&nbsp;&raquo;name&nbsp;&raquo;: &laquo;&nbsp;toto&nbsp;&raquo;});</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"># Les 3 premiers &laquo;&nbsp;Adrien&nbsp;&raquo;, ayant plus de 23 ans, triés</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">db.test.find({&nbsp;&raquo;name&nbsp;&raquo;: &laquo;&nbsp;Adrien&nbsp;&raquo;, &laquo;&nbsp;age&nbsp;&raquo;: {$gt: 23}}.sort({&nbsp;&raquo;age&nbsp;&raquo;: -1}).limit(3);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">C&#8217;est en général le premier point qui ressort de MongoDB par rapport à</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">la plupart de ses rivaux. Son système de requêtage séduisant permet</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">une prise en main extrémement rapide.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2) Auto-sharding</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Venons en maintenant à ce qui fait normalement tout l&#8217;attrait des</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">NoSQL : leur forte extensibilité et leur mécanisme de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">réplication. MongoDB offre des possibilités de sharding</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(partitionnement) afin de distribuer les données au sein de plusieurs</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&laquo;&nbsp;shards&nbsp;&raquo; (bloc venant constituer le cluster, et ne possédant qu&#8217;une</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">partie des données). L&#8217;auto-sharding reste aujourd&#8217;hui (version 1.5.3)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">en version beta, mais il est possible tout de même de spécifier ses</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">propres pattern de sharding. Par exemple, on peut décider que le</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">champs &laquo;&nbsp;name&nbsp;&raquo; de nos exemple deviendra une clé de sharding. Il est</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">possible, à l&#8217;instar des indexes, de spécifier des clés composées de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">plusieurs champs. MongoDB calculera un hash de ces clés pour</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">déterminer sur quel shard envoyer tel ou tel document. La</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">configuration du cluster et toutes ses méta-données sont stockées au</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">sein de &laquo;&nbsp;serveurs de configuration&nbsp;&raquo;. En production, trois serveurs de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ce type sont normalement configurés. Si un de ces serveurs tombe en</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">rade, le système continue de fonctionner normalement. Si deux de ces 3</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">serveurs montrent un dysfonctionnement, le dernier serveur de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">configuration devient accessible en lecture seulement. Ceci n&#8217;empêche</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">pas le cluster complet de fonctionner, mais empêche toute modification</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">de la configuration, et tout déplacement de &laquo;&nbsp;chunks&nbsp;&raquo; (position des</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">blocs de données, qui est elle aussi stockée dans ces serveurs de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">configuration).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3) Replica pair, replica sets</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chaque shard peut actuellement être redondé par ce qu&#8217;on appelle un système de</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&laquo;&nbsp;replica pair&nbsp;&raquo; : le shard est constitué d&#8217;un master et d&#8217;un slave. À</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">tout moment, si le master tombe en panne, le slave prend le relai. Les</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">données peuvent être répliquées instantanément ou avec une certaines</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">latence dans le cas d&#8217;un système dit &laquo;&nbsp;finalement consistant&nbsp;&raquo;. Cette</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">paire est bien limitée actuellement en matière de fail-over et</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">laissera place aux &laquo;&nbsp;replica sets&nbsp;&raquo; avec MongoDB 1.6, qui laissera la</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">possibilité de plus de 2 serveurs de sauvegarde. Dans cette nouvelle</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">situation, en cas de panne du master, l&#8217;élection du slave qui</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">deviendra master se fera par la résolution d&#8217;un consensus basé sur la</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">disponibilité de chaque noeud, le nombre de serveurs vus par chacun, etc&#8230;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Conclusion</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">On attend les replica sets, l&#8217;autosharding fonctionnel</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Liens à insérer :</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- &laquo;&nbsp;twitter avoue&nbsp;&raquo;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- &laquo;&nbsp;théoreme de CAP&nbsp;&raquo;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Article sur XOP</div>
<p>Cela fait maintenant quelques temps que je donne plus de nouvelles, plus un signe de technologie, de recherche. Et pourtant, de la recherche, il y en a eu ! Après avoir passé une longue période à essayer les différents outils de QA dédiés au web, j&#8217;ai passé ces derniers mois à essayer &#8211; et exploiter &#8211; les NoSQL. La littérature est déjà bien large sur le sujet dans ses généralités. Cassandra, HBase, Voldemort, Redis&#8230; tout y passe, du plus ancien dépôt clé/valeur au plus évolué système orienté graphe ou document. Je vais parler ici finalement de MongoDB, que j&#8217;ai pu torturer en long, en large et en travers, et qui appartient justement à la catégorie des NoSQL orienté document.</p>
<h3>Un NoSQL, pourquoi ?</h3>
<p>Certainement pas par effet de mode. Une prise de décision basée sur ce critère ne serait que folie. Par besoin ? Il va être temps de définir ces besoins. Car on assiste à bon nombre de projets qui tendent à délaisser ces bons vieux SGBDR au profit de leurs cousins non-relationnels. Or, la plupart de ces projets ont &#8211; selon moi - surtout un problème de conception et non d&#8217;outils. Si ces projets reprochent à MySQL une certaine lenteur, ils feraient bien mieux d&#8217;apprendre à tirer profit d&#8217;une configuration optimale, et d&#8217;une conception sérieuse du modèle de données, avec une stratégie d&#8217;indexation adaptée. On ne le dira jamais assez : des bases comme MySQL, PostgreSQL ou autre ont perduré pendant des années. La réplication est fonctionelle. Le partitionnement est possible. Les plus gros l&#8217;ont utilisé et continuent à l&#8217;utiliser. Twitter <a href="http://engineering.twitter.com/2010/07/cassandra-at-twitter-today.html">avoue même rester sur MySQL</a> après avoir essayé timidement de mettre en place Cassandra. Non, pour moi, une des raison qui peut pousser à envisager une solution NoSQL est ailleurs. La grosse plus value de ces solutions reste toujours leur très bonne disposition à &laquo;&nbsp;scaler&nbsp;&raquo;. Autrement dit, si on souhaite absorber un déluge de données croissant, on y trouvera un allié puissant pour rapidement doubler, quadrupler la puissance de stockage, sans se lancer dans une trop lourde configuration du partitionnement et/ou de la réplication.</p>
<h3>Orienté document, pourquoi ?</h3>
<p>Comme d&#8217;habitude, nuançons ce point de vue par un autre apport, mais celui-ci est propre au modèle de stockage choisi. On en dénombre 4 :</p>
<ul>
<li>dépôts clé/valeur (Voldemort, Redis&#8230;)</li>
<li>orientés colonne (Cassandra, HBase&#8230;)</li>
<li>orientés documents (CouchDB, MongoDB&#8230;)</li>
<li>orientés graphes (Neo4J&#8230;)</li>
</ul>
<p>Chaque modèle répond à des problématiques et stratégies de stockage différentes. MongoDB stocke des &laquo;&nbsp;documents&nbsp;&raquo;. Un document est un ensemble de paires clé/valeurs, ici décrites au format BSon. Ce format est largement comparable au JSon, modulo quelques types additionnels.</p>
<p><code>{<br />
blog: http://www.zt.com,<br />
authors: [adrien, robot],<br />
comments:<br />
[<br />
<span style="white-space: pre;"> </span>{ author: robert, age: 42 },<br />
<span style="white-space: pre;"> </span>{ author: johanna, age: 25 }<br />
]<br />
}<br />
</code></p>
<p>Voolà donc typiquement ce qui peut être stocké dans une collection (= table) MongoDB. Ce stockage est dit &laquo;&nbsp;schemaless&nbsp;&raquo;, traduire par &laquo;&nbsp;sans schéma&nbsp;&raquo;. Les documents ne correspondent à aucune définition formelle qui aurait été préalablement définie. Ainsi, on pourrait très bien rajouter un autre document &laquo;&nbsp;blog&nbsp;&raquo; similaire à l&#8217;exemple, mais sans champs &laquo;&nbsp;authors&nbsp;&raquo; et avec une colonne &laquo;&nbsp;keywords&nbsp;&raquo;. le NewYorkTimes tire partie de ce modèle avec MongoDB en permettant à ses contributeurs d&#8217;ajouter des méta-données à la volée pour chaque photo soumise. En effet, on ne retrouve pas forcément les même méta-données entre une photo de lieu et celle d&#8217;une star. Certes, la chose reste largement faisable avec les outils actuels. Le modèle document est juste extrémement adapté à ce type de stockage, sans s&#8217;occuper d&#8217;un modèle relationnel et ses multiples contraintes. Je sais, je viens de donner un argument qui pourrait remettre en cause le premier : certains NoSQL ont un rôle qui dépasse de loin celui d&#8217;un entrepôt extensible et redondé.</p>
<h3>MongoDB, pourquoi ?</h3>
<p>Voyons maintenant le cas particulier de MongoDB. C&#8217;est un NoSQL orienté documents, qui se qualifie par l&#8217;acronyme &laquo;&nbsp;CP&nbsp;&raquo; du <a href="http://en.wikipedia.org/wiki/CAP_theorem">théorème de CAP</a>.</p>
<h4>1) Langage de requêtage intuitif</h4>
<p>Tout naturellement, lorsqu&#8217;on essaye un système de stockage, nos premiers essais se tournent vers l&#8217;insertion et la récupération de données. Pour l&#8217;insertion, nous venons de voir qu&#8217;elle s&#8217;effectuait au format BSon. Concretement, après avoir lancé le shell MongoDB, la commande suivante effectuerait une insertion dans une collection &nbsp;&raquo;test&nbsp;&raquo; :</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">db.test.insert({&nbsp;&raquo;name&nbsp;&raquo;: &laquo;&nbsp;Adrien&nbsp;&raquo;});</span></p>
<p>Et pour requêter nos collections, cela s&#8217;effectue également tout naturellement au format BSon ! MongoDB fournit un certain nombre d&#8217;opérateurs classiques : &gt;, &lt;, =, &gt;=, IN, NOT IN, etc. Quelques exemples :</p>
<pre><code># Tous les utilisateurs "toto"
db.test.find({"name": "toto"});
</code></pre>
<p><code># Les 3 premiers "Adrien", ayant plus de 23 ans, triés<br />
db.test.find({"name": "Adrien", "age": {$gt: 23}}.sort({"age": -1}).limit(3);</code></p>
<p>C&#8217;est en général le premier point qui ressort de MongoDB par rapport à la plupart de ses rivaux. Son système de requêtage séduisant permet une prise en main extrémement rapide.</p>
<h4>2) Auto-sharding</h4>
<p>Venons en maintenant à ce qui fait normalement tout l&#8217;attrait des NoSQL : leur forte extensibilité et leur mécanisme de réplication. MongoDB offre des possibilités de sharding (partitionnement) afin de distribuer les données au sein de plusieurs &nbsp;&raquo;shards&nbsp;&raquo; (bloc venant constituer le cluster, et ne possédant qu&#8217;une partie des données). L&#8217;auto-sharding reste aujourd&#8217;hui (version 1.5.3) en version beta, mais il est possible tout de même de spécifier ses propres pattern de sharding. Par exemple, on peut décider que le champs &laquo;&nbsp;name&nbsp;&raquo; de nos exemple deviendra une clé de sharding. Il est possible, à l&#8217;instar des indexes, de spécifier des clés composées de plusieurs champs. MongoDB calculera un hash de ces clés pour déterminer sur quel shard envoyer tel ou tel document. La configuration du cluster et toutes ses méta-données sont stockées au sein de &laquo;&nbsp;serveurs de configuration&nbsp;&raquo;. En production, trois serveurs de ce type sont normalement configurés. Si un de ces serveurs tombe en rade, le système continue de fonctionner normalement. Si deux de ces 3 serveurs montrent un dysfonctionnement, le dernier serveur de configuration devient accessible en lecture seulement. Ceci n&#8217;empêche pas le cluster complet de fonctionner, mais empêche toute modification de la configuration, et tout déplacement de &laquo;&nbsp;chunks&nbsp;&raquo; (position des blocs de données, qui est elle aussi stockée dans ces serveurs de configuration).</p>
<h4>3) Replica pair, replica sets</h4>
<p>Chaque shard peut actuellement être redondé par ce qu&#8217;on appelle un système de &nbsp;&raquo;replica pair&nbsp;&raquo; : le shard est constitué d&#8217;un master et d&#8217;un slave. À tout moment, si le master tombe en panne, le slave prend le relai. Les données peuvent être répliquées instantanément ou avec une certaines latence dans le cas d&#8217;un système dit &laquo;&nbsp;finalement consistant&nbsp;&raquo;. Cette paire est bien limitée actuellement en matière de fail-over et laissera place aux &laquo;&nbsp;replica sets&nbsp;&raquo; avec MongoDB 1.6, qui laissera la possibilité de plus de 2 serveurs de sauvegarde. Dans cette nouvelle situation, en cas de panne du master, l&#8217;élection du slave qui deviendra master se fera par la résolution d&#8217;un consensus basé sur la disponibilité de chaque noeud, le nombre de serveurs vus par chacun, etc&#8230;</p>
<h4>4) Map/Reduce</h4>
<p>L&#8217;algorithme Map/Reduce a le vent en poupe depuis les papiers Google et l&#8217;implémentation Hadoop. Et devinez quoi ? MongoDB, à l&#8217;instar de CouchDB, offre des possibilités d&#8217;interrogation en Map/Reduce. Dans un environnement &laquo;&nbsp;shardé&nbsp;&raquo;, les requêtes sont en effet ciblées ou globales (parallèles ou séquentielles). Pour effecter un certain nombre de calculs efficacement, MongoDB permet l&#8217;écriture de fonctions map() et  reduce() &#8211; et finalize() &#8211; en javascript. Les résultats peuvent être stockées dans des collections temporaires pour conserver un cache des résultats.</p>
<h4>5) Autres fonctionnalités</h4>
<p>En fait, il y a trop de choses à raconter sur MongoDB. Je vais faire un bon petit lot de petits articles pour détailler chaque point, mais pour ce soir, il faudra se contenter d&#8217;une découverte rapide :</p>
<ul>
<li>Un moteur d&#8217;indexation géographique, que Foursquare utilise à outrance</li>
<li>Une indexation en background</li>
<li>Des capped-collections, collections de tailles fixes auto-gérées pour ne conserver que les X derniers éléments insérés (fonctionnement par TTL prévu pour les futures versions)</li>
<li>Profiling des requêtes</li>
<li>Interface REST</li>
</ul>
<h3>Conclusion</h3>
<p>MongoDB est la solution qui actuellement suscite le plus ma curiosité, et surtout mon intérêt, tant pour ses performances que pour sa conception et ses fonctionnalités. Son plus gros défaut actuel est sa grande jeunesse. Gageons qu&#8217;une fois l&#8217;auto-sharding et les replica-sets 100% fonctionnels, 10 Gen Confluence arrivera à mettre en place une architecture composée de 1000 shards, son objectif actuel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/07/23/retour-dexperience-sur-mongodb/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tu n&#8217;écris plus beaucoup, dis donc !</title>
		<link>http://www.ze-technology.com/2010/04/05/tu-necris-plus-beaucoup-dis-donc/</link>
		<comments>http://www.ze-technology.com/2010/04/05/tu-necris-plus-beaucoup-dis-donc/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:51:42 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=678</guid>
		<description><![CDATA[Non, c&#8217;est vrai ! Et en guise d&#8217;excuse, je ne peux pas dire que ce sont les sujets qui manquent ! En fait, il y a plein de raisons à la passivité actuelle de ce blog. La première, c&#8217;est le travail ; mais ça, c&#8217;est pas une excuse, tous les blogueurs ont un travail (pour [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-679" title="landscape" src="http://www.ze-technology.com/wp-content/uploads/2010/04/landscape.jpg" alt="landscape" width="600" height="90" />Non, c&#8217;est vrai ! Et en guise d&#8217;excuse, je ne peux pas dire que ce sont les sujets qui manquent ! En fait, il y a plein de raisons à la passivité actuelle de ce blog. La première, c&#8217;est le travail ; mais ça, c&#8217;est pas une excuse, tous les blogueurs ont un travail (pour les plus chanceux). La deuxième, la vraie, c&#8217;est que je me passionne en ce moment pour un tas de sujets, sûrement les sujets phares de 2010 :</p>
<ul>
<li>Les NoSQL (Cassandra, HBase, MongoDB&#8230;)</li>
<li>Parallèlement, les systèmes distribués (Hadoop, Gearman&#8230;)</li>
<li>MariaDB</li>
<li>Les produits Talend</li>
<li>Les outils de qualité logicielle open-source (Hudson, PHP Under Control&#8230;)</li>
<li>Le framework <a href="http://symfony-project.com">symfony</a>, toujours et encore</li>
</ul>
<p>Comme l&#8217;objectif de Ze-Technology n&#8217;a jamais été d&#8217;écrire des articles superficiels et sans intérêt, je souhaite avoir un minimum de recul sur chacune de ces technologies avant de pouvoir écrire quoi que ce soit d&#8217;intéressant (ou d&#8217;inintéressant, vous en jugerez !). Je tombe bien chaque jour sur des dizaines de liens tous plus passionnants les uns que les autres, mais ce blog ne peut se résoudre à devenir une simple liste de liens. Cher public, vous qui m&#8217;aimez, la <span style="text-decoration: line-through;"> caisse attend votre générosité </span> un peu de patience&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/04/05/tu-necris-plus-beaucoup-dis-donc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bien dangereux, bien puissant Facebook&#8230;</title>
		<link>http://www.ze-technology.com/2010/02/21/bien-dangereux-bien-puissant-facebook/</link>
		<comments>http://www.ze-technology.com/2010/02/21/bien-dangereux-bien-puissant-facebook/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:39:57 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=658</guid>
		<description><![CDATA[
Il y a eu toutes sortes d&#8217;expériences autour du réseau social qui fait tant parler de lui. Je vous en propose une nouvelle. Mon but était d&#8217;établir un état des lieux des comportements des utilisateurs envers une demande d&#8217;ami inconnu. Le procédé fût fort simple : la première étape fût la création d&#8217;un compte d&#8217;un [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-661" title="facebook" src="http://www.ze-technology.com/wp-content/uploads/2010/02/facebook.jpg" alt="facebook" width="600" height="70" /></p>
<p>Il y a eu toutes sortes d&#8217;expériences autour du réseau social qui fait tant parler de lui. Je vous en propose une nouvelle. Mon but était d&#8217;établir un état des lieux des comportements des utilisateurs envers une demande d&#8217;ami inconnu. Le procédé fût fort simple : la première étape fût la création d&#8217;un compte d&#8217;un personnage complètement fictif et inconnu, qu&#8217;on appellera Jean-Claude. Suite à ça, ce sont quelques 250 personnes qui ont été sollicitées pour faire partie du réseau d&#8217;amis. 250 personnes de toutes origines, tous pays, sélectionnées complètement aléatoirement.</p>
<p>Une semaine plus tard, les résultats sont là. Il y a déjà <strong>119</strong> <strong>personnes</strong> qui se sont déclarées ami(e)s avec mon Jean-Claude. Sur ces 119 individus, seulement 6 ont envoyé un message pour connaître mon identité. Après avoir répondu, 2 m&#8217;ont retiré de leur liste d&#8217;amis. Jean-Claude aurait donc 113 personnes qui le connaissent vraiment ? En tout cas, Jean-Claude a accès à toutes les informations de ses amis : photos, statuts, quizz, etc.</p>
<p>Des conséquences qu&#8217;à titre personnel, je considère désastreuses. Ok, je ne suis pas mal intentionné. Mais qu&#8217;en savent ces &laquo;&nbsp;amis&nbsp;&raquo; ? De même, rien ne semble m&#8217;empêcher de dresser une liste d&#8217;habitudes, de comportements. Ces problèmes de confidentialité ne sont pas nouveaux, je ne vais les déballer ici, mais ce qui m&#8217;intrigue surtout au plus haut point, c&#8217;est cette facilité déconcertante de rentrer dans le cercle de connaissances de n&#8217;importe qui. Une sensibilisation des utilisateurs ne ferait de mal à personne&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/02/21/bien-dangereux-bien-puissant-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La productivité par le changement ?</title>
		<link>http://www.ze-technology.com/2009/11/21/la-productivite-par-le-changement/</link>
		<comments>http://www.ze-technology.com/2009/11/21/la-productivite-par-le-changement/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 06:00:04 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=467</guid>
		<description><![CDATA[Des changements très simples
Comment augmenter sa productivité ? Celle de ses employés ? C&#8217;est une question à laquelle un peu tout le monde s&#8217;attache ou du moins peut s&#8217;attacher.  Il y a des pistes purement organisationnelles (méthodologie &#8211; Scrum a le vent en poupe -, hiérarchie dans l&#8217;entreprise, workflow général&#8230;) mais un certain nombre de [...]]]></description>
			<content:encoded><![CDATA[<h2>Des changements très simples</h2>
<p>Comment augmenter sa productivité ? Celle de ses employés ? C&#8217;est une question à laquelle un peu tout le monde s&#8217;attache ou du moins peut s&#8217;attacher.  Il y a des pistes purement organisationnelles (méthodologie &#8211; <a href="http://fr.wikipedia.org/wiki/Scrum"><em>Scrum</em></a> a le vent en poupe -, hiérarchie dans l&#8217;entreprise, workflow général&#8230;) mais un certain nombre de petites choses peuvent venir agrémenter le quotidien d&#8217;un travailleur. D&#8217;un point de vue très général, j&#8217;identifierai :</p>
<ul>
<li>Changer le volume de la musique (fond sonore, &laquo;&nbsp;fort&nbsp;&raquo;, son coupé&#8230;)</li>
<li>Changer le type de musique (relaxante, variété, &laquo;&nbsp;hard&nbsp;&raquo;&#8230;)</li>
<li>Changer souvent de position (très droit, avachi&#8230;)</li>
<li>Changer de temps en temps les postes de travail : leur position, l&#8217;orientation</li>
<li>Modifier les affiches / photos sur les murs</li>
</ul>
<p>Autant de modifications qui peuvent paraître extrêmement anodines mais qui tiennent constamment l&#8217;esprit en alerte. Sans jouer au neurologue expert, le cerveau identifie inconsciemment un changement et relance l&#8217;attention, la créativité. En dehors de ces dispositions inhérentes au poste de travail, on peut s&#8217;attaquer à l&#8217;outil de travail en lui même. En prenant le cas &#8211; fréquent &#8211; d&#8217;un intranet fréquemment consulté par les employés, on pourrait ainsi imaginer un changement, global ou mineur, de l&#8217;<strong>apparence</strong> de cet intranet.</p>
<h2>Des changements menés à bien</h2>
<p>Effectuer des changements sur un outil de travail est un art qui s&#8217;il est manié sans précaution peut très vite venir semer la zizanie. Un bouton déplacé, un champ qui n&#8217;apparaît que dans certaines conditions, des menus ré-organisés&#8230; voilà de bien bonnes manières de diviser par 2 la productivité !</p>
<p>Bien que des choses comme <a href="http://fr.wikipedia.org/wiki/Information_Technology_Infrastructure_Library">ITIL</a> existent pour aider à mener à bien ce genre de changement, je ne souhaitais évoquer ici que les modifications purement visuelles, sans engendrer un seul impact fonctionnel. Changer les couleurs du bandeau principal, mettre un fond aux couleurs de noël ou d&#8217;halloween, faire jaillir de l&#8217;écran une photo &laquo;&nbsp;volée&nbsp;&raquo; qu&#8217;un employé souhaitait partager (attention aux dérives !) autant de petites modifications qui peuvent venir casser le train-train des employés manipulant constamment l&#8217;outil et se lassant du jeu de couleur bleu et blanc. À condition, bien sûr, d&#8217;avoir un outil un tant soi peu personnalisable.</p>
<h2>Pour quel impact ?</h2>
<p>Encore une fois, c&#8217;est une question qui obtient une réponse au cas par cas. Il y aura certains employés qui souhaiteront qu&#8217;une habitude ne soit JAMAIS cassée (jamais de musique, ne jamais changer de poste de travail, etc.) et qui ne manqueraient pas de vous le faire savoir, j&#8217;en suis certain. Ce billet n&#8217;est qu&#8217;une réflexion personnelle après une petite analyse introspective de mon comportement, corrélée avec une observation effectuée sur l&#8217;ensemble de la population estudiantine comme professionnelle que je peux côtoyer jour après jour.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/11/21/la-productivite-par-le-changement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perles démonstratives</title>
		<link>http://www.ze-technology.com/2009/10/07/perles-demonstratives/</link>
		<comments>http://www.ze-technology.com/2009/10/07/perles-demonstratives/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 05:44:58 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Humour]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Piwam]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=370</guid>
		<description><![CDATA[Il y a les perles du Bac, voici les perles de la démonstration de Piwam. La version de démo disponible en ligne a en effet déchaîné le sens de l&#8217;humour des joyeux testeurs. Je vous propose ce qu&#8217;on appellerait un &#171;&#160;best-of&#160;&#187; des idées qui m&#8217;ont fait sourire.
1) Dans la listes des activités de l&#8217;association, on [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a les perles du Bac, voici les perles de la démonstration de <a href="http://piwam.googlecode.com/"><a href="http://www.piwam.org">Piwam</a></a>. La version de démo disponible <a href="http://piwam.frenchcomp.net">en ligne</a> a en effet déchaîné le sens de l&#8217;humour des joyeux testeurs. Je vous propose ce qu&#8217;on appellerait un &laquo;&nbsp;best-of&nbsp;&raquo; des idées qui m&#8217;ont fait sourire.</p>
<h3>1) Dans la listes des activités de l&#8217;association, on a ainsi le droit à :</h3>
<ul>
<li> Inspection de la poubelle Albanel</li>
<li>Gratter le sol avec une brosse à dents</li>
<li> Epluchage des bludivions à cardans lisses</li>
<li> Achats des bludivions à cardans lisses</li>
<li> Vente de yoyos lumineux</li>
<li> Jouer à Team Fortress 2</li>
</ul>
<h3>2) Parmi les membres :</h3>
<ul>
<li>Kopter	Elie</li>
<li>Leventreur	Jacques</li>
</ul>
<h3>3) Avec des statuts plutôt flatteurs :</h3>
<ul>
<li>Dieu</li>
<li>Dieu de tous les Dieux</li>
</ul>
<h3>4) Et enfin, de curieuses dépenses :</h3>
<ul>
<li>Achat de cannabis</li>
<li>Pot de vin</li>
<li>Paiement des alpha-beta testeurs</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/10/07/perles-demonstratives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La rentrée de ZT</title>
		<link>http://www.ze-technology.com/2009/08/04/la-rentree-de-zt/</link>
		<comments>http://www.ze-technology.com/2009/08/04/la-rentree-de-zt/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 19:29:47 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=138</guid>
		<description><![CDATA[Un titre bien accrocheur pour en fait vous suggérer l&#8217;idée que oui, Ze-Technology.com est bien en vacances. Comme vous avez pu le constater, plus de &#171;&#160;lien de la semaine&#160;&#187;, plus de billet plein de bonne technologie, plus de scoops.

Mais qui dit vacances dit retour, et dès la rentrée, c&#8217;est partie pour&#8230;

De nouveaux &#171;&#160;liens de la [...]]]></description>
			<content:encoded><![CDATA[<p>Un titre bien accrocheur pour en fait vous suggérer l&#8217;idée que oui, Ze-Technology.com est bien en vacances. Comme vous avez pu le constater, plus de &laquo;&nbsp;lien de la semaine&nbsp;&raquo;, plus de billet plein de bonne technologie, plus de scoops.</p>
<p><img class="aligncenter size-full wp-image-139" title="Carte postale" src="http://www.ze-technology.com/wp-content/uploads/2009/08/carte-postale-gratuite.jpg" alt="Carte postale" width="425" height="294" /></p>
<p>Mais qui dit vacances dit retour, et dès la rentrée, c&#8217;est partie pour&#8230;</p>
<ul>
<li>De nouveaux &laquo;&nbsp;liens de la semaine&nbsp;&raquo;</li>
<li>Des articles et tutoriels sur <a href="http://symfony-project.com">symfony</a>, PHP</li>
<li>Des news du côté d&#8217;<a href="http://www.ez.no">eZ Systems</a></li>
<li>Des nouvelles astuces photographiques</li>
<li>L&#8217;évolution du marché de l&#8217;Open Source en France et sur la Terre</li>
</ul>
<p>Mais en attendant tout cela&#8230; je vous souhaite de bonnes vacances.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/08/04/la-rentree-de-zt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Articles stars de la semaine</title>
		<link>http://www.ze-technology.com/2009/07/05/articles-stars-de-la-semaine/</link>
		<comments>http://www.ze-technology.com/2009/07/05/articles-stars-de-la-semaine/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 12:40:57 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=88</guid>
		<description><![CDATA[Cette semaine, pas mal d&#8217;articles ont eu la chance de se voir attribuer une petite étoile dans Google Reader.
L&#8217;excellence de l&#8217;Olympus PEN E-P1, sur Digit&#8217;Life
Un gros compact, un mini bridge/reflex bien énervant. Énervant pour la concurrence.  Énervant pour tous les modèles qui voient arriver un concurrrent hors-norme. Ce modèle d&#8217;Olympus pourrait bien être LE compact [...]]]></description>
			<content:encoded><![CDATA[<p>Cette semaine, pas mal d&#8217;articles ont eu la chance de se voir attribuer une petite étoile dans Google Reader.</p>
<p><strong>L&#8217;excellence de l&#8217;Olympus PEN E-P1, sur Digit&#8217;Life</strong></p>
<p>Un gros compact, un mini bridge/reflex bien énervant. Énervant pour la concurrence.  Énervant pour tous les modèles qui voient arriver un concurrrent hors-norme. Ce modèle d&#8217;Olympus pourrait bien être LE compact que tous les pros attendaient, un compact format 4/3 à objectifs interchangeables, à la manière des reflex.<br />
[<a href="http://feedproxy.google.com/~r/typepad/digitlife/~3/xJM3znfsMfQ/olympus-pen-ep1-imparfait-unique-et-excellent.html">source</a>]</p>
<p><strong>Le tour du mois en PHP (juin 2009), par Pascal Martin</strong></p>
<p>L&#8217;actualité de PHP fût bien riche durant le mois de juin dernier. Sortie de PHP 5.3, 14 ans du langage de l&#8217;éléPHPant, conférences&#8230; Pascal Martin revient sur les dernières informations avec concision et intérêt.<br />
[<a href="http://blog.pascal-martin.fr/post/Tour-du-mois-en-PHP-juin-2009">source</a>]</p>
<p><strong>Notification par mail lors d&#8217;erreurs <a href="http://symfony-project.com">symfony</a>, sur Clever-Age</strong></p>
<p>Le méchanisme de gestion d&#8217;erreurs que propose <a href="http://symfony-project.com">symfony</a> est assez complet et permet de manipuler efficacement les différentes exceptions qui pourraient survenir. Clever-Age nous propose ici une manière d&#8217;exploiter ce méchanisme pour être systématiquement prévenu des erreurs par mail.<br />
[<a href="http://feedproxy.google.com/~r/Clever-Age-Blog/~3/pWMaiuY_mjk/comment-etre-notifie-par-mail-lors-d-erreurs-symfony.html">source</a>]</p>
<p><strong>Présentation de Mozilla Weave, par Pti-Seb (Tux Planet)</strong></p>
<p>La fondation Mozilla a présenté fièrement son produit Weave, destiné à partager efficacement ses données personnelles entre plusieurs installations de Firefox : bookmarks, historiques, mots de passe&#8230; tout peut maintenant être centralisé et partagé grâce à la solution Weave. Tux Planet vous explique les intérêts, le fonctionnement et l&#8217;utilisation de ce nouveau projet made in Mozilla.<br />
[<a href="http://www.tux-planet.fr/mozilla-weave/">source</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/07/05/articles-stars-de-la-semaine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La gestion de projets au service de l&#8217;organisation de soirées</title>
		<link>http://www.ze-technology.com/2009/06/25/la-gestion-de-projets-au-service-de-lorganisation-de-soirees/</link>
		<comments>http://www.ze-technology.com/2009/06/25/la-gestion-de-projets-au-service-de-lorganisation-de-soirees/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 16:30:16 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=69</guid>
		<description><![CDATA[Attention, cet article est court. Après une semaine d&#8217;absence, revoilà enfin de l&#8217;activité sur Ze-Technology. Pourquoi tant d&#8217;absence ? Parce qu&#8217;il a fallu se charger d&#8217;organiser une deux soirées ce week end. J&#8217;officie au sein de différentes associations visant à promouvoir la culture électronique, et l&#8217;organisation de soirées est une activité non négligeable de ces [...]]]></description>
			<content:encoded><![CDATA[<p>Attention, cet article est court. Après une semaine d&#8217;absence, revoilà enfin de l&#8217;activité sur Ze-Technology. Pourquoi tant d&#8217;absence ? Parce qu&#8217;il a fallu se charger d&#8217;organiser <span style="text-decoration: line-through;">une</span> deux soirées ce week end. J&#8217;officie au sein de différentes associations visant à promouvoir la culture électronique, et l&#8217;organisation de soirées est une activité non négligeable de ces associations.</p>
<p>Ce qui est amusant, c&#8217;est de constater à quel point la formation d&#8217;ingénieur, intégrant une bonne partie de gestion de projets, peut s&#8217;avérer utile pour organiser de tels évènements. En quoi ça peut bien servir ? Quelques éléments de réponses :</p>
<ul>
<li>Identification et prévention des risques</li>
<li>Gestion du temps</li>
<li>Budgetter correctement la soirée</li>
<li>Gérer efficacement les effectifs (déléguer des tâches&#8230;)</li>
</ul>
<p>Après cette bonne semaine d&#8217;organisation, de réalisation puis de rangement, attendez-vous à retrouver un espace à nouveau vivant.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/25/la-gestion-de-projets-au-service-de-lorganisation-de-soirees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveau ZT</title>
		<link>http://www.ze-technology.com/2009/06/12/nouveau-zt/</link>
		<comments>http://www.ze-technology.com/2009/06/12/nouveau-zt/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 12:03:34 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://ze-technology.com/?p=50</guid>
		<description><![CDATA[Bon et bien il n&#8217;aura pas fallu attendre très longtemps avant de voir déferler le changement chez Ze Technology. Après de bons mois de loyaux &#8211; mais limités &#8211; services, voici le temps de Wordpress 2.8. De quoi fêter dignement l&#8217;arrivée du nouveau domaine, ze-technology.com. Attention toutefois, si les DNS se sont pas encore propagés [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Wordpress" src="http://www.photofloue.net/blog/wp-content/uploads/2008/03/wordpress-icon.jpg" alt="" width="129" height="129" />Bon et bien il n&#8217;aura pas fallu attendre très longtemps avant de voir déferler le changement chez Ze Technology. Après de bons mois de loyaux &#8211; mais limités &#8211; services, voici le temps de <strong>Wordpress 2.8</strong>. De quoi fêter dignement l&#8217;arrivée du nouveau domaine, ze-technology.com. Attention toutefois, si les DNS se sont pas encore propagés partout, vous ne pourrez peut être pas accéder au blog par <a href="http://ze-technology.com">sa nouvelle adresse</a>. Il va falloir patienter jusqu&#8217;à 24h le temps de la propagation&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/12/nouveau-zt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ze Technology&#8230; POINT COM&#8217; !</title>
		<link>http://www.ze-technology.com/2009/06/11/ze-technology-point-com/</link>
		<comments>http://www.ze-technology.com/2009/06/11/ze-technology-point-com/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 20:54:00 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://adrien.frenchcomp.net/blog/?p=49</guid>
		<description><![CDATA[Et ouais. http://www.ze-technology.com est à moi ! Il ne fait que rediriger vers ce présent blog. Mais pourquoi acheter un domaine ?

C&#8217;est plus court à taper
Meilleur référencement
Identité propre, sans rattachement à Blogger
Caprice

Bon, en fait, je vous cache la vraie raison. C&#8217;est que je ne compte pas rester éternellement sous la plate-forme Blogspot. Elle est rapide, [...]]]></description>
			<content:encoded><![CDATA[<p>Et ouais. <a href="http://www.ze-technology.com">http://www.ze-technology.com</a> est à moi ! Il ne fait que rediriger vers ce présent blog. Mais pourquoi acheter un domaine ?</p>
<ul>
<li>C&#8217;est plus court à taper</li>
<li>Meilleur référencement</li>
<li>Identité propre, sans rattachement à Blogger</li>
<li>Caprice</li>
</ul>
<p>Bon, en fait, je vous cache la vraie raison. C&#8217;est que je ne compte pas rester éternellement sous la plate-forme Blogspot. Elle est rapide, sympa, relativement fonctionnelle, mais il lui manque plein de choses. À commencer par un éditeur digne de ce nom !! La possibilité de vraiment customiser certains widgets. Et surtout, chose très frustrante pour un développeur, la possibilité d&#8217;afficher du code de manière lisible, avec un minimum de coloration syntaxique !</p>
<p>Bref, tout ça pour vous dire que d&#8217;ici peu, il y aura sûrement <span style="font-weight: bold;">ENCORE</span> du changement. Mais dans la forme, pas dans le fond. Mettez à jour vos favoris. Mais si vous oubliez de le faire, le blog actuel sera automagiquement redirigé vers le nouveau. Au fait, pour ceux que ça intéresse, le domaine a été acheté chez <a href="http://www.drim.com">Drim</a>, pour 6 euros par an.</p>
<p>Votre serviteur, qui adore détester changer.
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1394095790770446638-7603029646460656274?l=ze-technology.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/11/ze-technology-point-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
