|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
jerome72 Nouveau WRInaute
Inscrit le: 08 Oct 2004 Messages: 20
|
Posté le : Mar Oct 10, 2006 19:22 Sujet du message: Une Bdd mysql par langue |
|
|
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

Inscrit le: 10 Juil 2005 Messages: 9400
|
Posté le : Mar Oct 10, 2006 19:29 Sujet du message: Une Bdd mysql par langue |
|
|
| pourquoi tu ne rajoutes pas juste un champ Langue pour les tables où il y a du contenu ? |
|
| |
|
 |
kazhar WRInaute accro

Inscrit le: 09 Jan 2004 Messages: 6040 Localisation: Somewhere only I know
|
Posté le : Mar Oct 10, 2006 19:38 Sujet du message: Une Bdd mysql par langue |
|
|
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
Inscrit le: 08 Oct 2004 Messages: 20
|
Posté le : Mar Oct 10, 2006 19:49 Sujet du message: Une Bdd mysql par langue |
|
|
Merci pour vos réponses!
Pourquoi est-ce plus lourd de multiplier les bases ? |
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12159 Localisation: Toulouse
|
Posté le : Mer Oct 11, 2006 9:40 Sujet du message: Une Bdd mysql par langue |
|
|
ou gere ca en tables :
fr_table1
fr_table2
fr_table3
en_table1
en_table2
en_table3
... |
|
| |
|
 |
jerome72 Nouveau WRInaute
Inscrit le: 08 Oct 2004 Messages: 20
|
Posté le : Mer Oct 11, 2006 10:20 Sujet du message: Une Bdd mysql par langue |
|
|
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 accro

Inscrit le: 22 Nov 2005 Messages: 1270
|
Posté le : Mer Oct 11, 2006 10:37 Sujet du message: Une Bdd mysql par langue |
|
|
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: |
"SELECT date, texte_$lang FROM news;"
|
|
|
| |
|
 |
e-kiwi Modérateur

Inscrit le: 23 Déc 2003 Messages: 12159 Localisation: Toulouse
|
Posté le : Mer Oct 11, 2006 10:46 Sujet du message: Une Bdd mysql par langue |
|
|
>> 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 ? |
|
| |
|
 |
kazhar WRInaute accro

Inscrit le: 09 Jan 2004 Messages: 6040 Localisation: Somewhere only I know
|
Posté le : Mer Oct 11, 2006 10:52 Sujet du message: Une Bdd mysql par langue |
|
|
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

Inscrit le: 23 Déc 2003 Messages: 12159 Localisation: Toulouse
|
Posté le : Mer Oct 11, 2006 10:54 Sujet du message: Une Bdd mysql par langue |
|
|
| 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
Inscrit le: 08 Oct 2004 Messages: 20
|
Posté le : Mer Oct 11, 2006 10:55 Sujet du message: Une Bdd mysql par langue |
|
|
| 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 accro

Inscrit le: 21 Sep 2006 Messages: 1662 Localisation: sapucaia do sul (RS)
|
Posté le : Mer Oct 11, 2006 10:58 Sujet du message: Une Bdd mysql par langue |
|
|
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 |
|
| |
|
 |
kazhar WRInaute accro

Inscrit le: 09 Jan 2004 Messages: 6040 Localisation: Somewhere only I know
|
Posté le : Mer Oct 11, 2006 10:59 Sujet du message: Une Bdd mysql par langue |
|
|
[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 accro

Inscrit le: 22 Nov 2005 Messages: 1270
|
Posté le : Mer Oct 11, 2006 10:59 Sujet du message: Une Bdd mysql par langue |
|
|
| 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 accro

Inscrit le: 22 Nov 2005 Messages: 1270
|
Posté le : Mer Oct 11, 2006 11:00 Sujet du message: Une Bdd mysql par langue |
|
|
| 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. |
|
| |
|
 |
| |
|
|