0

est un serveur de gestion de bases de données relationnelles, utilisant le langage SQL. Terme à terme, qu’est ce que cela signifie?

Serveur

D’abord, le caractère “Serveur” d’un MySQL est essentiel: cela signifie qu’il s’agit d’un logiciel tournant en continue sur une machine, destiné à recevoir des demandes de clients et à y répondre, en exposant une façade (API). C’est le premier point noir de nombreux amateurs ou auto-didactes: le serveur MySQL et le client (PHP par exemple) ne sont pas une seule entité mais bien deux acteurs d’une architecture client-serveur, passant donc par une “façade” (ou “interface”, ou “API”). C’est la raison pour laquelle je vous conseille de séparer la façade du serveur SQL (= ce que le client PHP peut requêter, par exemple dans PRAWD ce sont les procédures stockées) et le stockage interne du serveur SQL (les tables et leur structure). Vous pourrez ainsi altérer ou enrichir l’un (les tables de stockage par exemple) sans détruire l’autre (l’API du SQL est inchangée, et votre code PHP continue de fonctionner sans soucis).

Un serveur possède une interface publique: il en va de même pour votre serveur MySQL. Tâchez de ne pas exposer trop de chose, sinon, vous n’arriverez pas à le refactorer, le faire évoluer, et le maintenir.

Gestion

Deuxième rôle d’un serveur MySQL, la gestion de données. Un serveur SQL n’est pas qu’un gros conteneur de données dans lequel on balance les objets de son PHP (si vous faites cela, vous vous complexifiez certainement la vie dans votre code PHP et vous le rendez difficile à maintenir, voire très peu performant). C’est surtout un serveur capable de gérer ces données, pour vous donner directement les informations dont votre client (le code PHP) a besoin. Le principe n’est donc pas de dire “le serveur MySQL doit se plier aux objets PHP que contient mon client”, mais “le client PHP demande simplement au serveur MySQL les données directement nécessaires pour la page web”. La performance et la facilité d’utilisation de cette seconde approche sont décuplées par rapport à la première (souvent présentée dans les tutos type “Open Class Room”).

Beaucoup de logiques “business” (règles de votre jeu web par exemple) sont en fait des manipulations de données: le serveur SQL saura faire cela sans problème, de manière concise et efficace (le langage SQL est adapté à cela).

Bases de données relationnelles

Enfin, ce sont des bases de données relationnelles que MySQL gère, et non des bases de données “objets”. Souvent, on simplifie les choses en disant “1 table = 1 classe PHP”. Oui, c’est souvent approximativement le cas, mais on traite ici de tableaux de données, et non d’objets ou de classes avec des comportements (d’où l’absence “d’héritage” entre les tables, qui n’aurait pas de sens). C’est donc le rôle de MySQL de gérer les relations entre ces données et d’assurer leur intégrité. Par exemple, c’est dans les données du MySQL qu’on trouvera les taux de changes des ressources d’un jeu web, permettant alors au serveur MySQL de connaître la relation entre ces ressources, et de procéder aux échanges entre les joueurs lors d’un commerce (ou entre le joueur et le MdJ dans le cas d’un mécanisme de Marchand).

Ne sérialisez pas vos données: vous perdriez tout l’intérêt d’un serveur SQL.

0