JeuWeb - Crée ton jeu par navigateur
Plusieurs bases de données: dans quels cas est-ce utile ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Plusieurs bases de données: dans quels cas est-ce utile ? (/showthread.php?tid=4744)

Pages : 1 2 3


Plusieurs bases de données: dans quels cas est-ce utile ? - php_addict - 16-04-2010

salut

je me pose la question suivante:

dans quels cas est-ce utile d'avoir Plusieurs bases de données?

- par exemple pour un forum interne (en restant connecté au jeu) je pense que c'est plutot une bonne idée. ou bien sur pour un forum externe...

mais par exemple est ce judicieux de faire une base pour les logs, une autre pour la messagerie privée, etc...

j'ai eu beau cherché sur internet je me pose aussi la question suivante:

est ce possible de faire des jointure INNER LEFT par exemple sur des champs qui sont sur des bases distinctes, et si oui est ce que l'on perd en performance?

pour eclairer ma lanterne, dans quels cas utilisez vous plusieurs bases de donnée pour un meme projet ?

bonne journée


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - keke - 16-04-2010

Ma réponse intuitive, c'est justement dans les cas :
- où le projet est dissocié (un forum ET un jeu = 2 bases. Si le forum rentre dans le jeu, 1 base)
- Tu as plusieurs versions de ton projet (selon la langue par exemple, mais aussi s'il y a des mondes différents qui ne peuvent pas communiquer)

je vois pas comme ça d'autres raison de distinguer.

Ma base de jeu à 150 tables à peu près.

kéké


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Allwise - 16-04-2010

Tu ne peux pas faire de liaisons entre des tables appartenant à différentes bases, du moins pas à ma connaissance.
Comme le dit Keke, Il est utile de séparer les bases de données pour avoir avoir plus de clarté et plus de modularité entre des projets différents.
Dans le cas d'un site/jeu + forum, si tu penses avoir besoin de faire des jointures entre les tables de l'un et l'autre, par exemple pour faire remonter sur le site les derniers commentaires du forum, ou pour faire remonter sur le forum les joueurs les plus actifs ou que sais-je, alors il vaut mieux mettre les tables des deux dans la même base de données.

Si en revanche les 2 entités sont totalement indépendantes, je serais pour des bdd distinctes. C'est plus simple pour les sauvegardes / restaurations, plus sûr : tu peux créer un user différent pour chaque bdd ( bien qu'on puisse assigner des droits table par table ). Tu peux également mettre des restrictions en terme de nombre de requêtes par heure distinctes, ça peut être utile dans certains cas.


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Roworll - 16-04-2010

(16-04-2010, 02:26 PM)Allwise a écrit : Tu ne peux pas faire de liaisons entre des tables appartenant à différentes bases, du moins pas à ma connaissance.

En fonction de la version de MySQL, ça peut fonctionner. Quasiment tous les gros SGDB supportent d'ailleurs cette fonctionnalité (vérifié sur MySQL 5.0.27)

Code PHP :
<?php 
SELECT
* FROM base1.table1
INNER JOIN base2
.table2 ON Table1.Champ1 = Table2.champ2

Inutile donc de tout foutre dans une seule et même base de données. Tu peux clairement séparer le forum du jeu lui même tout en faisant des requêtes croisées entre les deux.

Niveau perfs par contre, aucune idée.


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Allwise - 16-04-2010

Énorme, merci pour l'info... Du coup ça change pas mal de choses dans ma vision de la séparation des données. Je suis pour le cloisonnement des infos dans des BDD bien distinctes pour les raisons évoquées plus haut.


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Sephi-Chan - 16-04-2010

C'est le principe des schémas, poussé à mort dans Oracle d'ailleurs ! Par contre, j'ignorais que ça existait dans MySQL. Smile


Sephi-Chan


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - php_addict - 16-04-2010

bon, ben merci bien, je vois que cette question n'était pas si idiote alors :-)

EDIT:

mais alors comment fais tu pour pour te connecter à 2 bases en même temps?

perso pour 1 seule base je fais:

Code :
$PARAM_hote='localhost';
$PARAM_port='3306';
$PARAM_nom_bd='mabase';
$PARAM_utilisateur='utilisateur';
$PARAM_mot_passe='passe';
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe,);



RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Sephi-Chan - 16-04-2010

Peut-être qu'il suffit de ne sélectionner aucune base de données.
Et du coup, tu spécifies ta base dans chaque requête.


Sephi-Chan


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - php_addict - 16-04-2010

(16-04-2010, 05:41 PM)Sephi-Chan a écrit : Peut-être qu'il suffit de ne sélectionner aucune base de données.
Et du coup, tu spécifies ta base dans chaque requête.

j'ai essayé avec:

$PARAM_nom_bd=NULL;
et
$PARAM_nom_bd='';

ca ne fonctionne pas...


RE: Plusieurs bases de données: dans quels cas est-ce utile ? - Roworll - 16-04-2010

Il faut quand même que les bases de données soient sur le même serveur.
J'ai validé le fait que MySQL fait du Cross DB, pas du Cross Server (là on rentre dans le domaine des serveurs liés, ce qui est un cran au dessus).

Pour faire ta requête, il te suffit de te connecter à une seule base de données.
A partir du moment ou tu préfixes le nom de ta table avec le nom de ta base, comme dans mon exemple, le moteur sera capable de se débrouiller.