Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1517 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Où stocker les petites données ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Où stocker les petites données ?

n°2095495
Tempus_Fug​it
tempinou
Posté le 16-08-2011 à 17:19:20  profilanswer
 

Bonjour, je me pose une question au niveau "performance".
 
Je développe en PHP5.
 
Prenons l'exemple de personnes qui ont chacune une nationalité.
J'ai donc une table avec les personnes  
(id, nom, id_nationalité)
18, Paul, 1
22, Charles 2
23, François, 2
 
et une table nationalité
(id, nationalité)
1, Belge
2, Française
3, Espagnole
 
On considère donc que Charles et François sont de nationalité Française et Paul de nationalité Belge.
 
Je m'interroge sur l'utilité de la table nationalité qui impose à mon goût un accès SQL superflux (même si je peut utiliser la fonction JOIN au sein de la même requête, ça me fait un table de plus). Il serait plus simple de tenir la liste des nationalités en Constante dans mon script PHP puisque la liste des pays ne risque pas de changer, mais on perd l'aspect pratique en cas d'ajout de nationalité (ex de l'éclatement de la yougoslavie) (obliger de modifier les constantes du script php plutôt que faire un ajout propre dans la DB).
 
Ne serait-il pas plus pertinent de stocker cette donnée (la nationalité) avec SQLite ou en utilisant simplement un fichier XML ? Mais en même temps cela nécessite un accès en lecture de fichier.
 
Au final, pour des données superflux mais qui nécessites d'être organisées en SGBD, je me demande s'il vaut mieux privilégier Mysql ou l'accès fichier (sqlite, xml) d'un point de vue technique (ressources utilisées) et logique (bonne méthode de programmation) ?
 
Je me pose la même question pour l'internationalisation de mon site, entre l'utilisation des constantes, des SGBD ou encore du format XML, je m'interroge sur le moyen idéal de stockage des traductions qui ne sont pas vouées à évoluer régulièrement mais doivent être gérées dynamiquement (ajout, modification, suppression).
J'ai lu quelques docs sur Gettext, cette solution est-elle vraiment au dessus du lot par rapport au XML et SimpleXML/DOM ?
 
Merci


Message édité par Tempus_Fugit le 16-08-2011 à 17:22:08
mood
Publicité
Posté le 16-08-2011 à 17:19:20  profilanswer
 

n°2095496
rufo
Pas me confondre avec Lycos!
Posté le 16-08-2011 à 17:30:44  profilanswer
 

Pour la nationalité, tu peux stocker dans la table "personnes" un indice pointant dans une liste fixe d'une variable "array" de php.
après, suffit de récupérer le libellé :
ex :

Code :
  1. $CONF_NAT = array(
  2.                            'en' => "French", "Belgium",...),
  3.                            'fr' => "Française", "Belge", ...)
  4.                           );


 
dans ta table, toutes les personnes françaises auront leur champ "nationalité  à 0 et belge à 1 ;)
 
Si ta liste des nationalités peut évoluer, alors une table qui stocke l'ID de la nationalité (ID commun à toutes les langues) et pour avoir le libellé dans la langue, aller dans une table qui stocke l'ID de la langue, le code langue (en, fr...) et la traduction du libellé.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2095499
Tempus_Fug​it
tempinou
Posté le 16-08-2011 à 17:35:36  profilanswer
 

Donc Mysql est plus performant et surcharge moins le serveur pour "ce type de données" que XML ou SQLite ?
Par ce type de données je veux dire: petit listing très peu sensible aux mises à jours mais fréquemment utilisé (à chaque requête sur une personne).
 
J'avais peur d'utiliser Mysql pour tout et rien, ça multiplie les tables, je ne voulais pas en faire trop.
 
Merci pour ta réponse.

n°2095508
rufo
Pas me confondre avec Lycos!
Posté le 16-08-2011 à 17:59:04  profilanswer
 

mysql ou fichier de conf php ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2095575
Oliiii
Posté le 17-08-2011 à 09:20:49  profilanswer
 

un sgbd est toujours plus performant qu'un fichier xml pour ce genre de chose.
Fais un join dans ta query pour avoir toutes les infos d'un coup.
Tu gardes la flexibilité et les perfs.
 
Si la table est utilisée souvent, le sgbd la gardera en ram.
 
Du xml ca sert a echanger des données entre application qui ne se connaissent pas, dans les autres cas il y a toujours une meilleur solution.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Où stocker les petites données ?

 

Sujets relatifs
gérer N partie avec des données partagées pour un wargame.[PHP, MYSQL] Réaliser un classement avec données de plusieurs tables
[PHP] Retrouver à la page précédente les données renseignéespb récupération des données dans un formulaire
Soucis d'affichage de données dans un popup DHTML.pb récupération des données dans un tableau et leur affichage
Modélisation d'un gestionnaire de données en graphe.Mise en page d'après une fichier de données
Problème création base de données relationnelle sur AccessImportations données
Plus de sujets relatifs à : Où stocker les petites données ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR