30 juin 2006

Technologie client/serveur, ou partage de fichiers ?

Le moteur Hyper File est proposé en version client/serveur, en plus de la version initiale utilisant une technologie séquentiel indexé (ISAM). Alors client/serveur ou séquentiel indexé ?

Un gestionnaire de base de données (SGBD) n'a qu'une finalité, permettre l'accès aux données. Seule la méthode d'accès aux données va déterminer si l'on travail en client/serveur, ou en séquentiel indexé. La différence est très simple, en séquentiel indexé chaque poste client a directement un accès aux fichiers de données, afin d'effectuer interrogations et mises à jour. En client/serveur à l'inverse, les postes clients n'ont pas accès aux fichiers de données, ils communiquent avec un programme sur le serveur qui lui, et lui seul, dispose de l'accès aux fichiers de données.

Cette différence assimilée, les avantages et inconvénients de ces deux techniques d'accès coulent de source :

- performances : avantage client/serveur !
Le serveur traite les demandes des clients (requêtes SQL), et ne retourne que des résultats. Le trafic réseau généré est nettement diminué, d'ou un accroissement des performances générales très significatif. Attention si vous effectuez des comparaisons (bench), il faut bien tenir compte dans vos résultats de l'incidence du trafic réseau. Un traitement donnant des temps de réponse similaires avec les deux techniques d'accès en test à partir d'un poste de développement, verra ses performances s'écrouler en accès séquentiel si le réseau est très chargé à un instant donné. Attention toutefois, la contrepartie de la diminution du trafic réseau, est l'augmentation du travail sur le serveur. Processeur et quantité de mémoire doivent donc évoluer en conséquence sur le serveur.

- sécurité : avantage client/serveur !
Seul le moteur sur le serveur à un accès aux fichiers de données, qu'il ouvre de façon exclusive. C'est un gage de sécurité, aucun autre poste ou processus ne peut accéder au contenu des données. D'autre part le moteur accède aux données qui dans le cas générale sont pour lui en local, ce qui limite les risques en cas d'anomalie sur le réseau. A l'inverse en séquentiel indexé, si un poste ou un périphérique réseau est défaillant, il n'y a un risque pour les données qui seront manipulées. Le moteur gère d'autre part les connexions et les autorisations à partir de groupes et d'utilisateurs.

- accessibilité : avantage client/serveur !
L'accès aux données en séquentiel indexé se fait par un simple partage des données sur une ressource réseau. Avantage séquentiel indexé ? Oui pour la simplicité d'installation et d'accès via un réseau local. Mais dès qu'il s'agit d'étendre les possibilités, le principe client/serveur reprend l'avantage. En effet le partage d'un disque pour un accès séquentiel n'est permis que dans un contexte local. Alors que l'accès à un moteur Hyper File client/Serveur sera possible dans tout type de situation, car aucun partage n'est requis. Ainsi le client/serveur permettra un accès à la base pour les postes du réseau, mais également pour les postes connectés via Internet.

- programmation : avantage client/serveur !
L'utilisation de requêtes permet de tirer pleinement partie du moteur Hyper File Client/Serveur. Un programme existant effectuant uniquement des lectures enregistrement par enregistrement restera utilisable en client/serveur. D'ailleurs le W-Langage permet de passer facilement de données exploitées en client/serveur, à des données exploitées en séquentiel indexé. Une FAQ donne le principe à utiliser.

- installation/configuration : avantage séquentiel indexé !
En effet pour le déploiement d'une application le moteur client/serveur peut apporter des contraintes qui n'apparaissent pas avec un accès en séquentiel indexé. C'est la contre partie de la facilité d'accès qui s'en suit, de la gestion des utilisateurs ... Mais la tâche reste simplifiée, car l'installation de l'application propose d'embarquer l'installation d'un moteur Hyper File Client/Serveur. D'autre part pour assurer une migration, la commande "HCopieFichier" permet de transférer des données d'une base utilisée en séquentiel indexé, vers une base Hyper File Client/Serveur (voir également principe de connexions donné dans la FAQ).

En conclusion, privilégiez le déploiement des applications en vous appuyant sur la technologie client/serveur !

Ce billet est un peu long veuillez m'en excuser. J'espère qu'il pourra aiguiller certains lecteurs sur les avantages et inconvénients de ces techniques d'accès.

6 commentaires:

Anonyme a dit…

Article très intéressant, moi qui n'ai pas encore eu l'occasion de mettre en place une gestion client/serveur, je saurai quoi faire le moment venu :)

Anonyme a dit…

Petite question sur le client/serveur :
Pourquoi depuis que j'ai changé ma base classic vers C/S , la première page s'ouvre plus lentement (écart 30s)?
Après , y a plus de probléme c'est vraiment + rapide mais la programmation doit etre revue (requete à la place des filtres ....)

Elian Lacroix a dit…

Il pourrait s'agit d'une mise en cache du serveur, nécessaire à
l'exécution d'une de vos requêtes.
J'ai rencontré un cas similaire sur une interrogation contenant un
LIKE sur un mémo texte d'un fichier de 60 000 d'enregistrements. La
première exécution demandait 50 secondes, toutes les suivantes au maximum 2 secondes. Une solution a été trouvée avec un appel de
la fonction "HOptimiseRequete", je vous conseille d'effectuer un test
dans cette direction, en vous aidant de l'analyseur de performances
(ce qui me donne l'idée d'un prochain billet !) pour repérer le
traitement qui freine le lancement.

Anonyme a dit…

Je trouve que vos explications sont trés interressantes et ça m'a aidé à trouver la meilleure solution pour l'accées à distance à une BD via internet , mais je me demande si je dois garder le contrôle de blocage des enregistremments de la base lors de modifications ou d'ecritures sur un fichier , ou est ce que le serveur Manta se chargera de le faire sans prendre compte des instructions que j'ai programmé ,
par exemple :
BOUCLE
HAjoute(ETIQUETE)
SI HErreurBlocage() ALORS
Multitâche(200)
SINON
SORTIR
FIN
FIN
Car j'ai eu quelques problémes chez un client recement convertie en HF C/S et je doute que c'est dû à ça .
si vous pouvez m'aider sur ce point et merci.

Elian Lacroix a dit…

Tout dépend de votre appel de la fonction "HSurErreur" que vous allez faire au début de votre projet. En effet, il vous permettra d'indiquer si vous prenez en charge le test des blocages après les fonctions Hyper File, ou au contraire si vous laissez le mécanisme automatique s'exécuter. Ce dernier est généralement la meilleure alternative.

Anonyme a dit…

enfin quelqu'un d'extérieur qui a compris qu'il fallait donner des explications sur le mot client/serveur car windev est assez avare en matière d'explications