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


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

merci.

imaginons que je fasse un SELECT sans jointure sur mabase1 et un SELECT sans jointure sur mabase2 dans le meme controleur (meme page):

je le precise où? dans chacune de mes requetes ou j'ouvre quand meme 2 connexions PDO ?

genre:

$connexion_mabase1 = new PDO()
$connexion_mabase2 = new PDO()


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

Une seule connexion où tu spécifies le nom d'une base de données, peu importe laquelle.
Puis tu fais des requêtes normales sauf que tu devras préfixer chaque nom de table par la base de données concernée.

Code :
SELECT table_xxx.champ_un, table_yyy.champ_deux FROM base_une.table_xxx AS table_xxx
INNER JOIN base_deux.table_yyy AS table_yyy ON table_yyy.id = table_xxx.id

Sauf erreur de ma part.

@tchaOo°


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

A mon sens, ca n'apporte aucun avantage par rapport à une convention de nommage du style mp_messages, mp_destinataire, mp_alerte, user_info, user_ressources, user_batiments, etc.

Puisque les requêtes ne seront pas plus courtes, autant préfixer toi même tes noms de table, et ca t'éviteras de te poser la question des perfs, qui ne seront certainement pas meilleures.

Une base distincte pour le forum peut être une idée discutable, mais te retrouver avec 15 bases n'est à mon sens pas une bonne idée.

Même si la plupart des jeux tournent sur des dédiés, il faut signaler aussi que certains hébergeurs de mutualisés limitent le nombre de bases, donc ca peut jouer des tours.


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

(17-04-2010, 12:14 AM)nicodd a écrit : Une base distincte pour le forum peut être une idée discutable, mais te retrouver avec 15 bases n'est à mon sens pas une bonne idée.

je suis d'accord avec toi, je ferais ca pour le forum interne et externe, mais je pense aussi le faire pour certaine table qui vont nécessiter des opérations de maintenance avec peu etre des taches CRON (logs, messagerie privée surabondante et autres données périssables)

en tout cas merci pour vos avis


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

je vois pas vraiment l'intéret de faire plusieurs base, mySQL peut gérer pleines de tables sans aucun soucis, d'autant plus qu'avec un bon système de préfixe, aucun risque de s'y perdre.

Coté sécurisation, je vois pas non plus ce que sa apporte, si je pirate une base, je piraterais les autres.

Un des intérêt serait effectivement dans une optique de version, même si je préfèrerais stocker les anciennes base dans des fichiers SQL, mit avec la version en question, histoire d'archiver proprement.

Un autre serais de faire plusieurs univers sur un seul serveur, j'avais fais sa pendant un moment et sa marchais pas mal du tout Smile

Phenix


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

De même je vois pas l'intérêt et je le déconseille car la connexion à la bdd à moins d'utiliser les connexions persistantes c'est quand même quelques choses qui prend beaucoup de temps.
Donc évidement c'est pire si on en met 2!


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

On ne parle pas de problèmes de préfixes. Il suffit de lire les autres interventions.

Un des arguments utilisé est de dire que la séparation des tables dans plusieurs bases de données est une question d'organisation. En gros, une base pour un projet/type d'application.

Personnellement, c'est un choix que je préfère et la longueur des requêtes n'est en soit pas une réelle contrainte. Notamment via l'utilisation d'une DAO qui s'occuperait de construire les parties chiantes de ta requête.


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

L'intérêt réside effectivement dans l'organisation, mais ce que je voulais dire, c'est que cloisonner les bdd d'un projet dans des bases distinctes permet de gérer plus facilement la répartition des droits que les utilisateurs ont sur ces bases.

Par exemple, si j'ai un jeu et un site web qui n'ont aucun rapport et qui ne donneront lieu à aucune jointure, je vais pas les mettre dans la même base en jouant les préfixes. Je vais les mettre chacune dans une BDD distincte, et je vais créer un utilisateur pour chaque base. Ainsi, si un mot de passe venait à être découvert à cause d'une faille quelconque, seulement l'un de mes deux sites serait impacté.
De même, si un défaut entraîne un grand nombre de requêtes sur un site, en jouant sur les restrictions du nombre de requêtes par user, je peux "brider" l'un de mes projets sans pénaliser les autres.

Enfin, pour les sauvegardes, je préfère avoir un dump par projet, et non pas un dump avec tout dedans. Car si j'ai besoin de restaurer juste le forum par exemple, je vais pas restaurer le reste.
Et c'est quand même plus simple d'écrire mysqldump mabase > dump.sql que mysqldump mabase table1 table2 tablex... > dump.sql.

Après je suppose que c'est une question d'habitude.


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

Oui mais là c'est pas vraiment pour plusieurs projet:
Citation :mais par exemple est ce judicieux de faire une base pour les logs, une autre pour la messagerie privée, etc...

Déjà que pour le forum c'est discutable vis à vis du fait qu'on peut vouloir faire quelques choses de très intégré. Mais alors si on commence à faire des bdd pour chaque module du jeu ben moi je dis non.

Ceci étant pour le dump je suis d'accord, mais on peut aussi faire un dump d'une ou plusieurs tables...

Pour le vol de mot de passe, si on te vole les mot de passe du jeu, je suis quasi sur que pour au moins les 3/4 des joueurs on peut aussi accéder au forum même si c'est un forum externe. Qui utilise un mot de passe différent sur un le forum officiel d'un jeu?

Non à mon sens seul l'argument des projets complètements distinct est recevable.


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

Je vois d'autres avantages à la séparation des bases de données mais cela demande une certaine préparation à l'installation :
- Répartition des données sur plusieurs volumes. En répartissant les BDD sur différents disques, on évite les ralentissements dus au temps d'accès (I/O). D'autre part cela peut permettre de mieux répartir l'espace disque utilisé.
- Avoir des bases partagées entre plusieurs applications. Un forum, une base de log système ou une table de login unique pour plusieurs jeux par exemple.
- Avoir des politiques de sauvegarde différentes pour chaque BDD. Faire un dump de certaines tables seulement peut s'avérer dangereux pour l'intégrité de la base dans son ensemble (on rajoute une table, on l'oublie dans le dump..). Dans le cas de bases séparées, on peut faire des dumps complet quotidiens pour certaines bases, hebdomadaires pour d'autres sans se casser la tête.
- La prise de contrôle d'Oracle sur MySQL laisse envisager la possibilité dans un futur plus ou moins proche de pouvoir contrôler plus efficacement les ressources allouées à chaque BDD (mémoire, CPU, niveau de priorité).

Je conviens que sur la plupart des projets développés ici, tous ces arguments n'ont que peu de sens. Mais dans le cadre d'un développement d'ampleur/pro, ils ne sont pas à déconsidérer.