Où stocker les petites données ?

Où stocker les petites données ? - SQL/NoSQL - Programmation

Marsh Posté le 16-08-2011 à 17:19:20    

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
Reply

Marsh Posté le 16-08-2011 à 17:19:20   

Reply

Marsh Posté le 16-08-2011 à 17:30:44    

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
Reply

Marsh Posté le 16-08-2011 à 17:35:36    

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.

Reply

Marsh Posté le 16-08-2011 à 17:59:04    

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
Reply

Marsh Posté le 17-08-2011 à 09:20:49    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed