Comparaison des plugins mysqlnd avec proxy MySQL

Les plugins Mysqlnd et le proxy MySQL sont des technologies différentes utilisant différentes approches. Les deux sont des outils valides pour résoudre bon nombre de tùches classiques, comme l'équilibrage de charge, la surveillance, et l'amélioration des performances. Une importante différence est que le proxy MySQL fonctionne avec tous les clients MySQL alors que les plugins mysqlnd sont spécifiques aux applications PHP.

Comme une extension PHP, un plugin mysqlnd doit ĂȘtre installĂ© sur le serveur d'applications PHP, en plus du reste de PHP. Un proxy MySQL peut soit fonctionner sur le serveur d'applications PHP, soit ĂȘtre installĂ© sur une machine dĂ©diĂ©e pour gĂ©rer plusieurs serveurs d'applications PHP.

Le déploiement d'un proxy MySQL sur un serveur d'applications a 2 avantages :

  1. Pas un seul point d'échec
  2. Facile Ă  redimensionner (redimensionnement horizontal, redimensionnement par le client)

Un proxy MySQL (et les plugins mysqlnd) peut résoudre des problÚmes facilement, qui sinon, auraient dû nécessiter des modifications aux applications existantes.

Cependant, un proxy MySQL a quelques désavantages :

  • Un proxy MySQL est un nouveau composant, une nouvelle technologie Ă  appliquer au maĂźtre et Ă  dĂ©ployer.
  • Un proxy MySQL nĂ©cessite la connaissance du langage de script Lua.

Un proxy MySQL peut ĂȘtre personnalisĂ© en utilisant les langages de programmation C et Lua. Lua est le langage prĂ©fĂ©rĂ© pour un proxy MySQL. Pour la plupart des experts PHP, Lua est un nouveau langage Ă  apprendre. Un plugin mysqlnd peut ĂȘtre Ă©crit en C. Il est Ă©galement possible d'Ă©crire un plugin en PHP en utilisant » PECL/mysqlnd_uh.

Un proxy MySQL fonctionne comme un dĂ©mon - un processus en arriĂšre-plan. Un proxy MySQL peut rappeler des dĂ©cisions prises antĂ©rieurement, vu que tous les Ă©tats peuvent ĂȘtre conservĂ©s. Cependant, un plugin mysqlnd est liĂ© au cycle de vie d'une requĂȘte PHP. Un proxy MySQL peut Ă©galement partager des rĂ©sultats calculĂ©s une seule fois sur plusieurs serveurs d'applications. Un plugin mysqlnd peut donc avoir besoin de stocker des donnĂ©es dans un mĂ©dium persistant. Un autre dĂ©mon peut ĂȘtre utilisĂ© dans ce but, par exemple Memcache. Ce mĂ©canisme donne un avantage au proxy MySQL.

Un proxy MySQL fonctionne au-dessus de la couche physique. Avec un proxy MySQL, il faut analyser et effectuer du "reverse engineering" du protocole client serveur MySQL. Les actions sont limitĂ©es Ă  celles qui peuvent ĂȘtre effectuĂ©es par la manipulation du protocole de communication. Si la couche physique change (ce qui arrive trĂšs rarement), les scripts du proxy MySQL peuvent devoir ĂȘtre adaptĂ©s.

Les plugins Mysqlnd fonctionnent au-dessus de l'API C, reflétant ainsi les APIs client libmysqlclient. Cette API C est essentiellement une enveloppe du protocole Serveur Client MySQL, ou de la couche physique, vu qu'elle est appelée quelques fois. L'on peut intercepter tous les appels à l'API C. PHP utilise l'API C, toutefois, il est possible de connecter tous les appels PHP, sans avoir besoin de programmer au niveau de la couche physique.

Mysqlnd implémente la couche physique. Les plugins peuvent toutefois analyser, effectuer un "reverse engineering", manipuler et toujours remplacer le protocole de communication. Cependant, ce n'est généralement pas nécessaire.

Vu que les plugins permettent de créer des implémentations qui utilisent les 2 niveaux (API C et couche physique), ils ont plus de flexibilité que le proxy MySQL. Si un plugin mysqlnd est implémenté en utilisant l'API C, toutes les modifications ultérieures à la couche physique ne nécessiteront pas de modification au plugin en tant que tel.

add a note

User Contributed Notes

There are no user contributed notes for this page.