Une Bdd mysql par langue

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

jerome72
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 20
Inscription: 8 Oct 2004

Une Bdd mysql par langue

Message le Mar Oct 10, 2006 18:22

Bonjour,

Je suis entrain de créer un site traduit en francais, anglais et italien.
Pour gérer ces trois langues, j'ai créé une base de données par langue, chacune des trois bases ayant la meme structure. J'utilise des variables de session pour identifier la langue en cours.

Je voudrais savoir si ma méthode est bonne : cela peut-il poser des problèmes d'avoir sur le même site des connexions à plusieurs bases de données, en termes de ressources / performances ?

Merci d'avance
Jerome


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Mar Oct 10, 2006 18:29

pourquoi tu ne rajoutes pas juste un champ Langue pour les tables où il y a du contenu ?

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mar Oct 10, 2006 18:38

Multiplier les bases de données est très lourd.
Comme le dit finstreet, une seule db avec un champ "langue" serait beaucoup plus adapté.

jerome72
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 20
Inscription: 8 Oct 2004

Message le Mar Oct 10, 2006 18:49

Merci pour vos réponses!

Pourquoi est-ce plus lourd de multiplier les bases ?


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Mer Oct 11, 2006 8:40

ou gere ca en tables :

fr_table1
fr_table2
fr_table3

en_table1
en_table2
en_table3

...

jerome72
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 20
Inscription: 8 Oct 2004

Message le Mer Oct 11, 2006 9:20

Bonjour,

Je suis d'accord sur le principe de créer une table par langue.

Mais je souhaite vraiment savoir en quoi il est déconseillé de gérer cela dans plusieurs bases. Cela peut-il poser des problemes en termes de ressources ou de performances, et si oui pour quelle raison?

Merci d'avance


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Mer Oct 11, 2006 9:37

Si ton utilisateur change de langue, il va falloir que tu te déconnecte d'une database, pour te connecter à une autre, et ainsi de suite à chaque changement de langue.

C'est beaucoup plus léger en termes de ressources de changer de table que de base.

Tu peux même ne pas avoir à changer de table mais juste de champ, exemple :

Table : news
Attributs : id, Date, texte_fr, texte_en, texte_ita, etc....

Comme ca tu gère simplement l'affichage de la bonne langue comme ca :
Code: Tout sélectionner
"SELECT date, texte_$lang FROM news;"


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Mer Oct 11, 2006 9:46

>> Si ton utilisateur change de langue, il va falloir que tu te
>> déconnecte d'une database, pour te connecter à une
>> autre, et ainsi de suite à chaque changement de langue.

je ne comprend pas, a chaque requete on se connecte à la base, donc en quoi cela est-il génant de se conencter à des bases differentes à chaque requete ?

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mer Oct 11, 2006 9:52

Pas daccord. Il est plus optimisé de se connecter une seule fois. ça évite des multiples transferts inutiles de données (et maintiens un socket activé plus longtemps, mais à moins que tu n'ait un sleep() qui dire une minute, c'est dérisoire)

Par contre, la raison de dadovb n'est pas correcte dans le sens ou en changeant de langue, tu recharge la page. Et là, de toute façon, tu te reconnecte.

De mon point de vue, il vaut mieux faire des champs "langue" sur une seule dbcar lorsque tu fait une modification dans ta db ou ton code, elle est répercutée partout. tu n'a pas de problèmes d'erreur suite à un oubli d'ajout d'un champ dans une autre langue.

Et d'un point de vue mémoire, il vaut mieux n'avoir qu'un seul gros fichier que plein de petits (ca permet plus difficilement de s'y retrouver lorsque c'est textuel. mais là, ca ne l'est pas. c'est une db)


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Mer Oct 11, 2006 9:54

pas daccord, tu multiplie les chances d'avoir du max_user_connection en gardant ta BDD ouverte durant toute l'execution du script, le conseil d'ouvrir et fermer la connexion à chaque requete vient de mon hebergeur qui lui préconise àa

jerome72
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 20
Inscription: 8 Oct 2004

Message le Mer Oct 11, 2006 9:55

dadovb a écrit:Si ton utilisateur change de langue, il va falloir que tu te déconnecte d'une database, pour te connecter à une autre, et ainsi de suite à chaque changement de langue.


C'est effectivement le cas, mais je ne comprend pas bien pourquoi c'est plus lourd en termes de ressources, ou alors j'ai du mal coder ma connexion aux bases.

J'ai un fichier connexion.php, header.php et index.php
Le header.php (qui contient l'entete de la page HTMl) fait un include("connexion.php").
Le connexion.php crée la connexion et la selection de la base.
A chaque rafraichissement de page, et a chaque fois que l'on clique sur un lien, le header.php est appelé, qui appelle lui-même le connexion.php
Alors, qu'il n'y ait qu'une seule base ou plusieurs, j'ai du mal a saisir quelle différence il y a puisque même avec une seule base il y a a chaque fois une nouvelle connexion. Pour résumer, meme si on est connecté à la base, dés qu'on clique un lien, on s'y reconnecte de suite...
Peut etre que ma méthode de connexion exprimée ci-dessus est mauvaise ??


rog
WRInaute passionné
WRInaute passionné
 
Messages: 1662
Inscription: 21 Sep 2006

Message le Mer Oct 11, 2006 9:58

moi j'aime bien le système en multi base

si chaque base contient l'intégralité des données pour une langue et qu'il n'ya pas besoin de se connecter à une autre pour rechercher des infos

il n'y a que des avantages :

1 le changement de langue se fait juste par le changement de config d'acces à la base

2 ça permet de cloisonner les modifs par traducteur

rog

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Message le Mer Oct 11, 2006 9:59

[quote="e-kiwi]pas daccord, tu multiplie les chances d'avoir du max_user_connection en gardant ta BDD ouverte durant toute l'execution du script, le conseil d'ouvrir et fermer la connexion à chaque requete vient de mon hebergeur qui lui préconise àa[/quote]
Et ta solution est plus consommatrice en ressources vu que tu déconnecte et reconnecte un socket à chaque requete. Chacune a ses avantages & inconvénients. Mais excepté en mutualisé ovh, les problèmes de max_user_connection n'arrivent jamais (tous mes sites fonctionne comme cela par ailleurs)


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Mer Oct 11, 2006 9:59

jerome72 a écrit: Pour résumer, meme si on est connecté à la base, dés qu'on clique un lien, on s'y reconnecte de suite...
Peut etre que ma méthode de connexion exprimée ci-dessus est mauvaise ??


Tu ne referme pas tes connexions, une fois ta requete traitée ?

Sinon, comme a dit, je sais plus qui juste au-dessus, le principal désavantage de plusieurs databases, ca va etre quand tu vas faire des modifs : rajouter / supprimer des champs, il faudra le faire dans chaque database.


dadovb
WRInaute passionné
WRInaute passionné
 
Messages: 2050
Inscription: 22 Nov 2005

Message le Mer Oct 11, 2006 10:00

kazhar a écrit:Par contre, la raison de dadovb n'est pas correcte dans le sens ou en changeant de langue, tu recharge la page. Et là, de toute façon, tu te reconnecte.


Effectivement, il est temps que j'arrete de dire des conner*es, je vais me recoucher.

Une Bdd mysql par langue

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités