OVH Cloud OVH Cloud

firebird et php?

4 réponses
Avatar
J-F Portala
BOnjour,
je travaille actuellement avec mysql php et apache.

Je voudrais migrer vers fierbird (en remplacement de mysql).

Quelqu'un a t il une experience sur ce type de migration ou plus simplement
sur l'utilisation de firebird avec php.

Merci de vos reponses.
Jeff

4 réponses

Avatar
Jerome PAULIN
J-F Portala wrote:
BOnjour,
je travaille actuellement avec mysql php et apache.

Je voudrais migrer vers fierbird (en remplacement de mysql).

Quelqu'un a t il une experience sur ce type de migration ou plus simplement
sur l'utilisation de firebird avec php.

Merci de vos reponses.
Jeff




Salut,

Firebird est grandement compatible avec Interbase, tu devrais donc
pouvoir utiliser le client Interbase de PHP.

Il n'y a pas de soucis majeur pour migrer les données de mySQL vers
Firebird (du moins, dans mon cas il n'y a pas eu de soucis).

A mon avis, il ne faut pas simplement migrer les données, mais aussi une
partie de l'applicatif PHP (en gros, tout ce qui te sert a simuler les
sous requetes, les triggers, les transactions et les procedures
stockées). Tu vas grandement simplifier ton code PHP (séparation de la
logique metier et de l'affichage) et y gagner en performance (il n'y a
aucune comparaison possible, tant l'ecart est grand, entre un traitement
sequentiel des données (remplacement d'une sous requetes en MySQL) et la
même chose via une procédure stockée).

gg
Avatar
J-F Portala
Merci de ta réponse.
J'ai consulté la doc PHP et il semble que les mêmes fonctions soient
utilisées pour
Firebird et Interbase.

Qu'entends tu par séparation logique métier et affichage?

J'ai un peu de mal à comprendre l'écart qu'il pourrait y avoir entre une
requête séquentielle en Mysql et une procédure stockée en firebird.
(Est ce que la notion de sous requete correspond au découpage d'une requête
en plusieurs?)

Je souhaite aussi migrer vers une base possédant des transactions (je n'ai
pas été convaincu par InnoDB).
(Lorsque j'archive une partie des tables dans des tables d'archivage, je
suis obligé de faire plusieurs requêtes, tester
la validité de la requête et revenir en arrière si une requête n'a pu
s'effectuer. Cela devient rapidement tres lours à gérer.
Normalement, les transactions devraient pouvoir simplifier tout cela.

J'ai une dernière question concernant les jointures. Je me suis aperçu que
Mysql était un peu lent sur les jointures.
J'utilise des tables avec des codes représentant des noms. Sur certaines
requêtes, je devais d'abord faire les calculs
sur la table avec les codes (entiers) dans une table temporaire, puis
j'utilise une autre requête avec des jointures pour obtenir les noms.
Qu'en est il avec Firebird? (peut -être y a t il des possibilites
d'optimisation dans Mysql que je ne maîtrise pas).

Encore merci de ton aide
Jeff


Jerome PAULIN a écrit dans le
message : cma7af$c6t$
J-F Portala wrote:
> BOnjour,
> je travaille actuellement avec mysql php et apache.
>
> Je voudrais migrer vers fierbird (en remplacement de mysql).
>
> Quelqu'un a t il une experience sur ce type de migration ou plus


simplement
> sur l'utilisation de firebird avec php.
>
> Merci de vos reponses.
> Jeff
>
>
Salut,

Firebird est grandement compatible avec Interbase, tu devrais donc
pouvoir utiliser le client Interbase de PHP.

Il n'y a pas de soucis majeur pour migrer les données de mySQL vers
Firebird (du moins, dans mon cas il n'y a pas eu de soucis).

A mon avis, il ne faut pas simplement migrer les données, mais aussi une
partie de l'applicatif PHP (en gros, tout ce qui te sert a simuler les
sous requetes, les triggers, les transactions et les procedures
stockées). Tu vas grandement simplifier ton code PHP (séparation de la
logique metier et de l'affichage) et y gagner en performance (il n'y a
aucune comparaison possible, tant l'ecart est grand, entre un traitement
sequentiel des données (remplacement d'une sous requetes en MySQL) et la
même chose via une procédure stockée).

gg
Avatar
Jerome PAULIN
J-F Portala wrote:
Merci de ta réponse.



De rien, je suis bien content quand on me repond, du coup j'essaye de
repondre quand je peux

Qu'entends tu par séparation logique métier et affichage?




J'essaye de coder la logique métier (les traitements) sur mon serveur
(sous forme de procedures stockées dans mon cas), du coup le programme
client ne s'occupe plus que de la présentation des données (formatage,
controles de coherence). Ca permet de facilement ecrire plusieurs
versions du programme client (par exemple, un programme en Delphi pour
l'utilisation sur le réseau local et un autre simplifié en php pour les
clients web), tout en facilitant la maintenance (pour mofifier un
traitement, j'ai juste besoin de modifier une procedure stockée).

J'ai un peu de mal à comprendre l'écart qu'il pourrait y avoir entre une
requête séquentielle en Mysql et une procédure stockée en firebird.
(Est ce que la notion de sous requete correspond au découpage d'une requête
en plusieurs?)




exemple : je souhaite imprimer des etiquettes UC (carton), et j'ai
besoin des N° des etiquettes pour imprimer un recap de ma palette.

Si j'ai besoin de faire 100 etiquettes, il faut que je fasse 200
requetes en MySQL (100 requetes pour creer l'etiquette + 100 requeteq
pour recuperer le numero), donc 200 aller/retour entre mon serveur et
mon serveur MySQl.

Avec Firebird, j'ai créé une procedure cree_etiquette(reference) qui
cree l'etiquette et retourne le numero d'etiquette. J'ai ensuite cree
une seconde procedure cree_serie_etiquette(nonbre_etiq,reference) qui
appelle cree_etiquette(reference) autant de fois qu'il le faut et qui
retourne la liste des etiquettes qui ont ete créées. Ainsi en 1 aller
retour, j'ai cree et recupere tout ce qu'il me faut, sans que cela ne
depende de la puissance de mon poste (ou de mon serveur php).

Sur une base en reseau local ce n'est pas tres significatif, pas contre
sur une base distante (via une LS a 256 Kb/s dans mon cas), c'est la
nuit et le jour (facteur de gain de l'ordre de 100)!!!

Je souhaite aussi migrer vers une base possédant des transactions (je n'ai
pas été convaincu par InnoDB).
(Lorsque j'archive une partie des tables dans des tables d'archivage, je
suis obligé de faire plusieurs requêtes, tester
la validité de la requête et revenir en arrière si une requête n'a pu
s'effectuer. Cela devient rapidement tres lours à gérer.
Normalement, les transactions devraient pouvoir simplifier tout cela.



Les transactions sont faites pour ca (commit pour valider, rollback pour
annuler les modifications). Je ne peux pas te parlet de INNODB, j'ai
jamais utilisé.


J'ai une dernière question concernant les jointures. Je me suis aperçu que
Mysql était un peu lent sur les jointures.
J'utilise des tables avec des codes représentant des noms. Sur certaines
requêtes, je devais d'abord faire les calculs
sur la table avec les codes (entiers) dans une table temporaire, puis
j'utilise une autre requête avec des jointures pour obtenir les noms.
Qu'en est il avec Firebird? (peut -être y a t il des possibilites
d'optimisation dans Mysql que je ne maîtrise pas).




Je ne trouve pas MySQL specialement lent dans le jointures, le tout est
de mettre en place des index pertinents.
Du coté Firebird, je n'ai rien constaté d'anormalement lent.

Encore merci de ton aide



De rien, si ca peut t'aider.

gg
Avatar
J-F Portala
merci de tes reponses rapides et efficaces.

Jeff