: MySQL Proxy

Posté par Jean-Yves Beaujean (page perso, ). Modéré le 09 août 2007.
0
MySQL AB a publié il y a quelques semaines un nouvel outil fort intéressant et qui a été accueilli avec enthousiasme par la communauté des utilisateurs MySQL. Il s'agit de MySQL Proxy. Comme son nom l'indique ce programme se place entre le client et le serveur MySQL. La puissance de ce logiciel réside notamment dans sa flexibilité, fournie par le langage de script Lua.

Selon Wikipédia : Lua est un langage de script libre dont l'interpréteur est conçu dans un but de compacité (95 à 185 Ko pour la version 5.0.2, selon le compilateur utilisé et le système cible). Lua est conçu de manière à pouvoir être embarqué au sein d'une autre application, ce qui permet d'étendre celle-ci.

Avec MySQL Proxy, vous serez capable de :
  • Filtrer les requêtes avant de les transmettre au serveur ;
  • Réécrire certaines requêtes (en corrigant la syntaxe par exemple) ;
  • Intercepter le resultset afin d'y supprimer, modifier ou ajouter des enregistrements ;
  • Interdire le retour de certains résultats vers le client.
Mais également :
  • Rediriger les écritures sur le maître et les lectures sur l'esclave, dans le cas de réplication ;
  • Exécuter des commandes Shell.
MySQL Proxy est publié sous licence GPL et toujours en version alpha, mais n'a, sans aucun doute, pas encore fini de faire parler de lui.

> Lire les commentaires (15 commentaires, moyenne: 4,2).  

Vous avez demandé le commentaire #857703.

Et pourquoi pas mettre des requêtes... en memcache ?

Posté par Maxime Ritter (page perso, ) le 10/08/2007 à 15:42. (lien). Évalué à 2.

Ah, l'un de mes rêves les plus fous ; un proxy SQL !

C'est assez bizarre l'utilisation de LUA, mais mon rêve le plus fou pourrait bien se réaliser là : mettre les grosses requêtes SQL en memcache sans toucher au code PHP/Perl/ruby pour cacher mes requêtes !

En effet, on s'est déjà amusé à écrire une lib pour utiliser memcache trouvé là :
http://trac.lighttpd.net/trac/attachment/ticket/1139/Memcach(...) (la dépêche ne le dis pas, mais LUA est aussi pas mal utilisé dans lightty).

Il n'y a donc plus qu'à faire la suite, ça ne saurait être bien difficile pour qui a un peu de temps à perdre... Un volontaire pour tester ?

  • [^]Re: Et pourquoi pas mettre des requêtes... en memcache ?

    Posté par chl (page perso, ) le 10/08/2007 à 16:31. (lien). Évalué à 7.

    (la dépêche ne le dis pas, mais LUA est aussi pas mal utilisé dans lightty)

    Ce que la dépêche ne dit pas non plus, ni toi d'ailleurs :), c'est que lighttpd et mysqlproxy sont du même auteur : Jan Kneschke

    [^]Re: Et pourquoi pas mettre des requêtes... en memcache ?

    Posté par Greg () le 10/08/2007 à 18:06. (lien). Évalué à 2.

    MySQL fait déjà du cache sur les requêtes ... il suffit d'avoir pas mal de RAM :)

    • [^]Re: Et pourquoi pas mettre des requêtes... en memcache ?

      Posté par Maxime Ritter (page perso, ) le 10/08/2007 à 21:13. (lien). Évalué à 3.

      Je parle d'un memcache, pas du Query Cache de MySQL qui dans mon cas ne me sert pas (et j'ai même déjà vu le query cache tuer les performances).

      http://www.danga.com/memcached/


      What about MySQL 4.x query caching?

      MySQL query caching is less than ideal, for a number of reasons:

      * MySQL's query cache destroys the entire cache for a given table whenever that table is changed. On a high-traffic site with updates happening many times per second, this makes the the cache practically worthless. In fact, it's often harmful to have it on, since there's a overhead to maintain the cache.
      * On 32-bit architectures, the entire server (including the query cache) is limited to a 4 GB virtual address space. memcached lets you run as many processes as you want, so you have no limit on memory cache size.
      * MySQL has a query cache, not an object cache. If your objects require extra expensive construction after the data retrieval step, MySQL's query cache can't help you there.

      If the data you need to cache is small and you do infrequent updates, MySQL's query caching should work for you. If not, use memcached.