Version 1.0 de la librairie mysql_protocol


Cette nouvelle version apporte le support des procédures stockées. Vous pouvez la télécharger depuis ma page GitHub ou bien l’installer grâce à l’outil OPAM.

mysql_protocol est une librairie développée en langage OCaml et implémente le protocole client/serveur natif de MySQL. Il est ainsi possible d’effectuer des requêtes depuis un programme OCaml sans avoir à utiliser d’interface avec la librairie C.

Publicités

Gestion d’une structure d’arbre sous MySQL


  • Introduction :

Il est très courant d’avoir à stocker une structure d’arbre dans une base de données. Par exemple, pour enregistrer l’organisation hiérarchique d’une entreprise ou bien pour représenter les catégories et sous-catégories des articles d’un site web.

La façon la plus simple de procéder est d’ajouter simplement à la table concernée un champ « identifiant_parent » qui servira à stocker l’identifiant du noeud parent. Ainsi, pour stocker l’arbre suivant :

      A
  ---------
  |       |
  B       C
        -----
        |   |
        D   E
      -----
      |   |
      F   G

nous aurions les enregistrements suivants :

identifiant    identifiant_parent
A                 NULL
B                 A
C                 A
D                 C
E                 C
F                 D
G                 D

Le noeud « A » qui est la racine de l’arbre n’a évidemment aucun parent c’est pourquoi l’identifiant du parent est dans ce cas mis à NULL.

Cette technique de représentation d’un arbre a comme avantage sa très grande simplicité. Elle a par contre l’inconvénient de nécessiter pour certains traitements l’envoi de plusieurs requêtes SQL de manière récursive. En effet, pour retrouver tous les noeuds enfants de « C », il n’est pas possible de le faire directement via une seule requête SQL. Il faut tout d’abord récupérer les enfants de « C » puis, pour chaque enregistrements trouvés, récupérer à leur tour leurs enfants.

Nous allons donc voir une autre méthode plus complexe mais aussi plus performante pour stocker dans une base SQL une structure d’arbre.

Lire la suite

Gestion d’un cache SQL sous Zend Framework


  • Introduction

Nous allons voir comment éviter l’envoi inutile de requêtes SQL identiques lors de l’exécution d’un script PHP utilisant Zend Framework. L’idée est de mettre en cache le résultat de chaque nouvelle requête SQL. Pour ensuite être capable de renvoyer directement le résultat mis en cache dans le cas où les données de la base utilisées par cette requête n’ont pas été modifiées. En effet, si nous sommes capable de vérifier qu’aucun enregistrement des tables concernées par la requête n’a été modifié depuis la mise en cache, nous sommes certain de pouvoir renvoyer directement le résultat en cache puisque la sélection de données sera forcément identique. Attention toutefois, nous partons du principe que les requêtes ne comportent pas de conditions de sélection extérieures aux données elles-mêmes. Une requête qui comporterait par exemple une condition sur l’heure courante pourrait voir son résultat changer même si les données sur lesquelles portent la requête ne sont jamais modifiées. Il vous faudra donc veiller à utiliser à bon escient ce mécanisme de cache.

Lire la suite

Mise en place d’un historique des enregistrements sous MySQL


  • Pourquoi faire ?

Dans une base de données, il peut être très utile de disposer d’un historique des modifications successives des enregistrements. Cela permet par exemple de gérer des versions de vos données avec la possibilité de revenir à une version précédente ou bien de pouvoir visualiser les différences entre deux versions. Cela peut également être utile dans le cas où, pour des raisons de sécurité par exemple, vous souhaitez être capable de savoir quel utilisateur a effectué quelles modifications sur les données.

  • Mécanisme utilisé

Nous allons donc voir comment mettre en place ce système avec MySQL 5.x et supérieur. La technique utilisée est celle des « triggers ». Sous ce terme un peu barbare se cache simplement la possibilité de déclencher une ou plusieurs requêtes SQL lorsqu’un enregistrement est ajouté, modifié ou bien supprimé dans une table SQL donnée. Grâce à ce mécanisme, vous pourriez par exemple compter le nombre de fois où une table est modifiée. Nous allons utiliser ce système de triggers pour mettre en place notre historique des enregistrements.

Lire la suite