<?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>Communauté Magento francophone &#187; Mysql / Base de données</title>
	<atom:link href="http://www.wikigento.com/category/mysql-base-de-donnees/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wikigento.com</link>
	<description>Optimisation de sites E-commerce, hébergment Magento</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:33:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rachat de Sun par Oracle, Mysql ne craint rien !</title>
		<link>http://www.wikigento.com/mysql-base-de-donnees/rachat-de-sun-par-oracle-mysql-ne-craint-rien/</link>
		<comments>http://www.wikigento.com/mysql-base-de-donnees/rachat-de-sun-par-oracle-mysql-ne-craint-rien/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 19:28:25 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Mysql / Base de données]]></category>
		<category><![CDATA[général]]></category>
		<category><![CDATA[ibm microsoft]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[oracle mysql]]></category>
		<category><![CDATA[rachat mysql]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=1410</guid>
		<description><![CDATA[Sun, Mysql &#038; Oracle : Que va t'il se passer ?
Que va t'il advenir de Sun et de Mysql ? Pourquoi Oracle à rachter Sun ? Voici mon idée sur la question :)]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">
<h1 style="text-align: justify;">Résumé des épisodes précédents<span style="text-decoration: underline;"><br />
</span></h1>
<p><BR></p>
<p style="text-align: justify;">- Janvier 2008 : Sun achète Mysql pour 1 Milliard là où Oracle proposait 750 Millions $<br />
- Avril 2009 : Oracle rachète Sun pour plus de 7 milliards &#8230;<br />
- Avril 2009 : Tout le monde flippe pour Mysql</p>
<h1 style="text-align: justify;">La mariée</h1>
<p><BR></p>
<p style="text-align: justify;">Sun c&#8217;est une société d&#8217;ingénierie vénérable qui a été parmi les premières à créer des serveurs. Chez Sun la conception c&#8217;est important, l&#8217;ingénierie encore plus et on fait tout à la main avec amour. Résultat, souvent précurseur incompris, Sun n&#8217;a pas que des réussites à son actif mais quand même de très belles choses, un parc, un savoir faire et des machines de pointes. Ses propres processeurs Ultraparc et Sparc64, ses architectures, ses bus de données, des milliers de brevets.</p>
<p style="text-align: justify;">Sun c&#8217;est aussi du logiciel. Solaris et OpenSolaris pour les operating systems (performants et surtout très robustes), Java pour les langages, la suite openoffice pour le bureau. Mine de rien, déjà, ca pèse un peu lourd tout ca.</p>
<p style="text-align: justify;">Et bien sur&#8230;&#8230;. Mysql.</p>
<h1>Mysql ne craint rien !</h1>
<p><BR></p>
<p style="text-align: justify;">Mysql est la base de données qui a soutenu le développement de l&#8217;opensource. La plus répandue et utilisée au monde. Et Oracle, avant tout le métier d&#8217;origine&#8230; C&#8217;est la base de données. Mais&#8230;</p>
<p style="text-align: justify;">Larry Ellison a parfois &laquo;&nbsp;acheté pour tuer&nbsp;&raquo; mais là, il domine complètement le segment de la base de données. De la TPE au très grand compte. Il peut faire migrer les Mysql vers de l&#8217;Oracle quand le compte grossit, faire de la pub sur la clientèle de Mysql, bref&#8230;</p>
<p style="text-align: justify;">Pourquoi tuer Mysql ? De toute façon, ceux qui l&#8217;utilise n&#8217;ont pas le budget pour de l&#8217;Oracle.</p>
<p style="text-align: justify;">En plus, tuer un soft opensource c&#8217;est très dur. En effet, d&#8217;autres feront une autre mouture demain et le pari sera perdu. C&#8217;est déjà un peu le cas avec MariaDB et Monty mais ca pourrait empirer si Oracle se montre agressif envers Mysql. Au bout de plus de 6 mois, Mysql existe toujours, il est maintenu, rien n&#8217;a réellement changé. Mysql est même sur la Home d&#8217;Oracle, déclaration sur la page de Mysql dans le site d&#8217;Oracle :</p>
<p style="text-align: justify;"><em>&laquo;&nbsp;Oracle will continue to develop and enhance MySQL along with Oracle’s other open source database technologies, Oracle Berkeley DB, the leading open source embedded database, and Oracle InnoDB, the most popular transactional storage engine for MySQL.MySQL customers will benefit from Oracle’s world-class support and training services. MySQL developers and partners will find new opportunities as MySQL becomes a certified part of Oracle’s open, complete, and integrated stack of technology—from application to disk.&nbsp;&raquo;</p>
<p></em></p>
<p style="text-align: justify;">Si Elisson ne tient pas sa promesse, il va se mettre à dos le milieu de l&#8217;opensource et se faire détester&#8230; Pas très malin et Elisson, il est tout sauf idiot.</p>
<h1 style="text-align: justify;">Conclusion</h1>
<p><BR></p>
<p style="text-align: justify;">La raison de la fusion est (presque) expliquée en homepage du site de Sun et sur celui d&#8217;Oracle : &laquo;&nbsp;Hardware, Software, complete&nbsp;&raquo;. Car Oracle, ce n&#8217;est pas que la célèbre database, c&#8217;est aussi beaucoup d&#8217;autres softs critiques (ceux de peoplesoft par exemple) et de services. La chaine d&#8217;Elisson est donc maintenant verticale et horizontale, il a renforcé considérablement sa position.</p>
<p style="text-align: justify;">Personnellement je ne m&#8217;inquiète pas pour Mysql mais plus pour IBM ou Microsoft. Larry a souvent protéger son pré carré en mettant dehors des concurrents. Là il possède Java, de quoi sérieusement enquiquiner IBM qui a très largement misé dessus et avec Openoffice, il a de quoi concurrencer Micrososft.</p>
<p style="text-align: justify;">Il est hégémonique sur la base de données et en plus, toujours pour en**rd*r IBM, il a du hardware de qualité, du serveur de combat, un OS qui tient la route&#8230;.. Alors qui c&#8217;est qui mange son chapeau ? C&#8217;est Steeve Balmer (Microsoft) et Sam Palmisano (IBM) pardi !</p>
<p style="text-align: justify;">Le grand perdant, ce n&#8217;est pas Mysql que son statut de base opensource de référence préserve de toute mort subite ou même moyen terme, c&#8217;est IBM à mon sens qui va se faire concurrencer énormément par Oracle sur ses marchés de services. Et pour peu que Larry Elisson se fache sur le segment du soft de bureau, Microsoft va reculer sur Office, son chouchou pendant que Google tente de lui tailler les flancs.</p>
<p style="text-align: justify;">Warning : funny things to come !</p>
<p style="text-align: justify;">PS : Merci à Nicolas.T de Toulouse pour l&#8217;idée de ce post <img src='http://www.wikigento.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/mysql-base-de-donnees/rachat-de-sun-par-oracle-mysql-ne-craint-rien/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flat Catalog dans Magento 1.3 &#8211; Premières impressions!</title>
		<link>http://www.wikigento.com/phpzendmagento/flat-catalog-dans-magento-13-premieres-impressions/</link>
		<comments>http://www.wikigento.com/phpzendmagento/flat-catalog-dans-magento-13-premieres-impressions/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 15:06:20 +0000</pubDate>
		<dc:creator>Frédéric de Gombert</dc:creator>
				<category><![CDATA[Mysql / Base de données]]></category>
		<category><![CDATA[Php/Zend/Magento]]></category>
		<category><![CDATA[eav]]></category>
		<category><![CDATA[flat-catalog]]></category>
		<category><![CDATA[modele de données]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=630</guid>
		<description><![CDATA[La dernière version de Magento est sortie cette nuit et avec elle arrive l&#8217;option tant attendue : le Flat Catalog! Celle-ci a été annoncée par Varien comme salvatrice pour les performances de notre outil e-commerce préféré (le site annonce un bénéfice de 40% sur le temps de chargement des pages en front office et sur [...]]]></description>
			<content:encoded><![CDATA[<p>La dernière version de Magento est sortie cette nuit et avec elle arrive l&#8217;option tant attendue : le Flat Catalog!</p>
<p>Celle-ci a été annoncée par Varien comme salvatrice pour les performances de notre outil e-commerce préféré (le site annonce un bénéfice de 40% sur le temps de chargement des pages en front office et sur l&#8217;utilisation de la mémoire).</p>
<p>Concrètement, que se cache-t-il vraiment derrière cette option &laquo;&nbsp;magique&nbsp;&raquo; et quel impact aura-t-elle sur les prochains projets construits sur la base de cette version?</p>
<p>Avant toute chose, rappelons que Magento repose actuellement sur un modèle de données de type &laquo;&nbsp;EAV&nbsp;&raquo; (Entity-Attribute-Value). Ce qu&#8217;il faut comprendre c&#8217;est qu&#8217;un objet &laquo;&nbsp;Produit&nbsp;&raquo; dans Magento n&#8217;est pas stocké dans une seule table mais éclaté dans un ensemble de tables en fonction des attributs de notre produit. Cette complexification du modèle de données se justifie en grande partie par la souplesse que propose Magento dans le paramétrage de nouvelles caractéristiques pour un produit.</p>
<p>Mais cette souplesse a donc un coût puisqu&#8217;il multiplie de manière importante le nombre de requêtes effectués en base pour un seul produit. On touche donc très vite aux limites de ce modèle dès lors qu&#8217;on travaille avec un catalogue important (plus d&#8217;une dizaine de millier de références). Varien a donc annoncé en début d&#8217;année qu&#8217;ils proposeraient une simplification de ce modèle sous forme d&#8217;une option librement activable depuis le back office pour permettre de basculer vers un modèle de données &laquo;&nbsp;à plat&nbsp;&raquo;.</p>
<p>En regardant de plus près, cette option est un peu plus subtile que ce à quoi on pouvait s&#8217;attendre: une fois le mode &#8216;flat catalog&#8217; activé dans l&#8217;administration, on se retrouve finalement avec deux catalogues: un pour le backoffice, et un pour le front:</p>
<ul>
<li>celui du backoffice reste le catalogue EAV tel qu&#8217;il existe dans la 1.2</li>
<li>le front utilise des nouvelles tables catalog_category_flat et catalog_product_flat</li>
<li> il y a une synchronisation type maître-esclave entre le catalogue backoffice et celui du front</li>
</ul>
<p>Finalement, le &laquo;&nbsp;flat catalog&nbsp;&raquo; du front est en réalité une sorte de table de cache pour le vrai catalogue qui reste en EAV.</p>
<p><span style="text-decoration: underline;">Les avantages de ce fonctionnement:</span></p>
<ul>
<li>la migration est bien plus simple puisqu&#8217;en réalité le format de la base n&#8217;a pas vraiment changé (les tables _flat sont générées à la demande depuis le backoffice)</li>
<li>on peut imaginer facilement avoir une base de données front avec les tables _flat côté frontoffice, séparées physiquement de la base de backoffice, avec le moteur Federated de MySQL qui permet de présenter plusieurs bases de données comme en étant une seule aux applications. De ce fait, la charge sur le front n&#8217;impacte pas le back et inversement</li>
</ul>
<p><span style="text-decoration: underline;">Les inconvénients:</span></p>
<ul>
<li>avec des volumétries très élevées, (certains) écrans du backoffice vont être très lents puisqu&#8217;ils continueront à utiliser le système EAV</li>
<li>les imports devront continuer à se faire dans les tables EAV, d&#8217;où une lenteur au moment de l&#8217;import (à nuancer: si les données importées ne sont pas destinées à être utilisées dans le backoffice, il est peut être possible de les importer directement dans les tables _flat du front)</li>
</ul>
<p>Nos premiers tests sur la base de ce nouveau modèle et d&#8217;un catalogue de plus d&#8217;un million de produits devraient désormais nous fixer assez rapidement sur la pertinence de cette fonctionnalité…</p>
<p>A suivre donc!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/phpzendmagento/flat-catalog-dans-magento-13-premieres-impressions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Premières réflexions sur la séparation des databases et type de requêtes</title>
		<link>http://www.wikigento.com/mysql-base-de-donnees/premieres-reflexions-sur-la-separation-des-databases-et-type-de-requetes/</link>
		<comments>http://www.wikigento.com/mysql-base-de-donnees/premieres-reflexions-sur-la-separation-des-databases-et-type-de-requetes/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 18:48:45 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Mysql / Base de données]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[base de données]]></category>

		<guid isPermaLink="false">http://www.blogento.com/?p=110</guid>
		<description><![CDATA[séparation base de données, séparation des types de requêtes ]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 10pt; font-family: Arial;">Voici un rapide schéma qui montre comment se fait notre infrastructure actuelle :</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;"><a rel="attachment wp-att-109" href="http://www.wikigento.com/?attachment_id=109"><img class="aligncenter size-large wp-image-109" title="archi-serveurs1" src="http://www.blogento.com/wp-content/uploads/2009/01/archi-serveurs1-906x1024.jpg" alt="archi-serveurs1" width="487" height="548" /></a><br />
</span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;"><br />
</span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">Techniquement c&#8217;est des blades et pas des serveurs, mais pour plus de clarté, j&#8217;ai ré-éclater ca en serveurs (en plus je n’avais pas les stencils visio pour les blades à l’époque</span><span style="font-size: 10pt; font-family: Arial;">)</span></p>
<p class="MsoNormal">
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">On a discuté avec François Ziserman ce matin de l&#8217;optimisation de ces charges qui pèsent sur l&#8217;infrastructure. Partons du principe qu&#8217;on a l&#8217;infrastructure qu&#8217;on veut, que ce n’est pas un souci de moyen. Que ferions-nous pour aller au plus vite possible en termes de réponse ?</span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="text-decoration: underline;"><span style="font-size: 10pt; font-family: Arial;">Les soucis principaux dûs à Magento :</span></span></p>
<ul>
<li><span style="font-size: 10pt; font-family: Arial;">Les frontaux Web consomment énormément de leur temps CPU pour rendre les pages Web</span></li>
<li><span style="font-size: 10pt; font-family: Arial;">Les frontaux Web pèsent très peu sur les perfs de la DB</span></li>
<li><span style="font-size: 10pt; font-family: Arial;">Le Back Office mange énormément de CPU à la DB lors de ses requêtes et un peu sur son propre CPU</span></li>
</ul>
<p class="MsoNormal"><span style="text-decoration: underline;"><span style="font-size: 10pt; font-family: Arial;">Quelques exemples sur un serveur de production réelle :</span></span></p>
<p class="MsoNormal"><span style="text-decoration: underline;"><span style="font-size: 10pt; font-family: Arial;"><br />
</span></span></p>
<p class="MsoNormal"><a rel="attachment wp-att-105" href="http://www.wikigento.com/?attachment_id=105"><img class="aligncenter size-full wp-image-105" title="charge-cpu" src="http://www.blogento.com/wp-content/uploads/2009/01/charge-cpu.jpg" alt="charge-cpu" width="595" height="268" /></a></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">Le pic de mardi à 50% est une charge équivalente de 600 à 1000 sessions en gros, cette charge vient uniquement des serveurs Web frontaux, pour ordre d&#8217;idée deux personnes qui travaillent sur le backoffice prennent plus de CPU que ces 1000 sessions.</span></p>
<p class="MsoNormal">
<p class="MsoNormal"><a rel="attachment wp-att-107" href="http://www.wikigento.com/?attachment_id=107"><img class="aligncenter size-full wp-image-107" title="sessions" src="http://www.blogento.com/wp-content/uploads/2009/01/sessions.jpg" alt="sessions" width="597" height="227" /></a></p>
<p class="MsoNormal"><span style="text-decoration: underline;"><span style="font-size: 10pt; font-family: Arial;">Sur le serveur de backoffice, c&#8217;est le calme sur le CPU mais la RAM est très chargée :</span></span></p>
<p class="MsoNormal">
<p class="MsoNormal"><a rel="attachment wp-att-106" href="http://www.wikigento.com/?attachment_id=106"><img class="aligncenter size-full wp-image-106" title="ram" src="http://www.blogento.com/wp-content/uploads/2009/01/ram.jpg" alt="ram" width="597" height="255" /></a></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;">Bref bref bref, que faire alors ? <span id="more-110"></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;">Séparer les écritures des lectures semble une bonne idée.</span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="text-decoration: underline;"><span style="font-size: 10pt; font-family: Arial;">Si on admet que :</span></span></p>
<ul>
<li><span style="font-size: 10pt; font-family: Arial;">Les frontends font massivement de la lecture en DB et quelques petites écritures par ci par là pour les données de sessions</span></li>
<li><span style="font-size: 10pt; font-family: Arial;">Le backoffice fait beaucoup beaucoup de lectures et des écritures</span></li>
</ul>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;">Comment séparer les unes des autres ? </span></p>
<p class="MsoNormal">
<p class="MsoNormal"><span style="font-size: 10pt; font-family: Arial;">Avec une base de données master en écriture pour le backoffice et une base de données slave pour les lectures, le problème c&#8217;est</span> <span style="font-size: 10pt; font-family: Arial;">que le slave ne peut pas faire d&#8217;écriture en DB (Alter, Update, Insert, Delete etc&#8230;), donc les données de sessions ne sont pas stockées <img src='http://www.wikigento.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </span></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">Le framework Zend (sous jacent à Magento) permet peut être de séparer les accès aux bases de données en fonction des méthodes employées. En gros, les écritures avec un Backend SQL sur une DB d&#8217;écriture et les lectures avec un backend optimisé pour les lectures, sur une autre DB en slave. On enquête, mais le souci c&#8217;est que la relation master/slave de mysql ne permet que de faire de la lecture sur le slave.</span></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">En cas de cluster mysql, on va avoir plus de puissance pour l&#8217;ensemble mais tout le monde tapera toujours sur l&#8217;ensemble Mysql donc du coup le BO impacte de nouveau les perfs des serveurs frontaux. C&#8217;est une solution partielle, ca permet la scalabilité mais ce n&#8217;est pas encore le cas rêvé. Il serait possible d&#8217;atténuer cet effet en mettant une priorité plus faible aux requêtes provenant du BO qu&#8217;à celle provenant du FO mais je ne sais pas encore si c&#8217;est faisable. Avoir toute la DB en RAM aussi pourrait aider aevc un RAMFS mais cela ne changera pas tout non plus.</span></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">La dernière solution à laquelle je pense, c&#8217;est de créer un patch de Magento qui permettrait d&#8217;effectuer les opérations de backoffice et de frontoffice de façon différentes ou sur des bases différentes. Les écritures des serveurs de frontoffices (sessions utilisateurs) seraient faites dans la base de données Mysql Master en RW (Read Write) et les lectures sur la Slave RO (Read Only) pendant que le service de backoffice tape sur la master uniquement par exemple. Ca reviendrait à faire &laquo;&nbsp;à la main&nbsp;&raquo; la solution Zend évoquée ci-dessus.</span></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">On peut aussi tenter du master/master dans le cluster pour voir si les perfs sont meilleures…A suivre.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/mysql-base-de-donnees/premieres-reflexions-sur-la-separation-des-databases-et-type-de-requetes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Bonne année, séparez vos DB !</title>
		<link>http://www.wikigento.com/mysql-base-de-donnees/bonne-annee/</link>
		<comments>http://www.wikigento.com/mysql-base-de-donnees/bonne-annee/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 13:23:15 +0000</pubDate>
		<dc:creator>Philippe Humeau</dc:creator>
				<category><![CDATA[Mysql / Base de données]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[séparation]]></category>

		<guid isPermaLink="false">http://www.wikigento.com/?p=1</guid>
		<description><![CDATA[Séparer ses bases de données pour limiter l'impacte du backoffice sur les performances du frontoffice et du serveur de base de données.]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-70" href="http://www.wikigento.com/?attachment_id=70"></a>Tout d&#8217;abord, bonne année à toutes &amp; à tous, que 2009 soit une année meilleure que prévue, voire même excellente, soyons fous <img src='http://www.wikigento.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Pour commencer l&#8217;année du bon pied, voici ce que nous avons en cour de gestation dans le labo NBS pour faire de Magento une architecture à peu prêt efficace. Une fois vos sites optimisés, le code retravaillé, vos requêtes sql allégées, vos Magento mis à jour, bref, une fois les 32 règles d&#8217;or respectées, que faire pour gagner encore un peu ?</p>
<p>Si vous en êtes là, vous avez le même problème que les autres : la charge CPU des serveurs Web Frontaux quand ils rendent des pages et la charge imposée au serveur de base de données lors de l&#8217;utilisation du backoffice (B.O).</p>
<p>François soulignait que l&#8217;utilisation d&#8217;une instance séparée de Magento pour le B.O pourrait améliorer l&#8217;affaire et je suis bien de son avis. A tel point qu&#8217;on a cogité une optimisation sur notre plateforme C1 dédiée à l&#8217;hébergement de sites Magento.</p>
<p><span style="text-decoration: underline;">Voici la recette :</span></p>
<p>1°) On crée un cluster de Mysql avec deux lames blindée de RAM, ce cluster on le paramètre en Mysql Master<br />
2°) On crée un mysql non cluster sur une lame et on le paramètre en Mysql Slave (Entre le cluster et le serveur standalone, on a donc une réplication des informations écrite sur le master vers le slave)<br />
3°) On met les serveurs de Frontoffice, les Web frontaux, sur une instance Magento qui s&#8217;adresse au cluster de base de donnée en Master<br />
4°) On crée une instance Magento sur un autre serveur (voir techniquement sur un apache dédié sur un seul coeur d&#8217;un processeur), qui va pointer sur le serveur Mysql slave<br />
5°) Sur la deuxième instance Magento (celle de B.O qui pointe sur le slave) on patch le framework Zend pour qu&#8217;il fasse ses opérations de Read (select notamment) sur le serveur Slave et ses opérations de Write sur le serveur Master (qui répercutera tout seul ses Insert, alter, Update, etc&#8230; sur le slave)<br />
6°) On apprécie le fait que l&#8217;utilisation du B.O n&#8217;impacte plus les perfs client et le gain de performances associé <img src='http://www.wikigento.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <span id="more-1"></span>my-connecteur-zend-DB</p>
<p><span style="text-decoration: underline;">Work In Progress (W.I.P) :</span><br />
- Le système de rendu des pages Web frontales pourrait être très optimisé en utilisant d&#8217;autres méthodes, on utilise Zend Optimiser et un (my)SQL analyzer pour jeter un oeil aux parties réellement trop consommatrices qui pourraient être patchées pour améliorer les performances et diminuer la pression de Magento sur les CPU.<br />
- Une réflexion de fond est menée sur le fait que Zend permet l&#8217;interception de presque toutes les requêtes, méthodes, fonctions etc&#8230; à presque tous les niveaux. Vu que Magento repose dessus, il serait possible, sans toucher à Magento directement, d&#8217;optimiser ou repenser certaines fonctions. C&#8217;est principalement vrai pour les requêtes de bases de données puisque le reste de la page est conçu et &laquo;&nbsp;rendu&nbsp;&raquo; par Magento, mais il subsiste des pistes pour pouvoir remplacer certains appel à des fonctions lourdes par d&#8217;autres qui le sont moins, de manière transparente pour Magento, sans patcher son code source.</p>
<p>Bruno du labo vous présente ses voeux et offre le snippet de code (<a rel="attachment wp-att-70" href="http://www.wikigento.com/?attachment_id=70">my-connecteur-zend-DB</a>) qui permet l&#8217;arbitrage des DBs, pour l&#8217;utiliser, il suffit d&#8217;extraire le contenu du fichier « My.zip » en pièce jointe dans un dossier de l’include_path de PHP. La class My_Db_Statement_Clustered doit doc se trouver dans un dossier « My/Db/Statement/Clustered.php ». Si la fonction d’autoload de la class Zend_Loader n’a pas été activée, il faudra inclure ce fichier à la main (require_once()). Ceci fait, pour utiliser la classe, il suffit de placer le code suivant après l’instanciation des connections au base de données (Zend_Db_Adapter) comme ceci :</p>
<p>&lt;?php<br />
/**<br />
* Redirige toutes les requêtes SQL de type INSERT, DELETE et UPDATE<br />
* vers la connexion $myClusterDb<br />
*<br />
* @var Zend_Db_Adapter_Abstract $myClusterDb<br />
*/</p>
<p>My_Db_Statement_Clustered::setWriteDatabase( $myClusterDb );<br />
/**<br />
* Redirige tous les autres types de requêtes SQL (SELECT, DESCRIBE, &#8230;)<br />
* vers la connexion $mySlaveDb<br />
*<br />
* @var Zend_Db_Adapter_Abstract $mySlaveDb<br />
*/</p>
<p>My_Db_Statement_Clustered::setReadDatabase( $mySlaveDb );<br />
?&gt;</p>
<p>Gilles nous explique aussi que des connecteurs natifs existent dans Magento, ca se règle dans app/etc/local.xml (voir le lien <a title="ici" href="http://www.magentocommerce.com/blog/performance-is-key-notes-on-magentos-performance" target="_blank">ici</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wikigento.com/mysql-base-de-donnees/bonne-annee/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

