Calcul du hash d'une table automatisé en SQL - SQL/NoSQL - Programmation
Marsh Posté le 01-04-2009 à 16:54:23
vu que tu parles de php, j'en déduis que ta bd doit être du mysql. Y'a la fonction MD5() dans mysql
Un truc du genre "UPDATE Table, SET MonChampAHasher = MD5(MonChampAHasher)" devrait faire l'affaire.
Marsh Posté le 01-04-2009 à 17:08:44
J'ai rien compris ni à la question, ni à l'intérêt que ça pourrait avoir.
Marsh Posté le 02-04-2009 à 09:43:42
rufo a écrit : vu que tu parles de php, j'en déduis que ta bd doit être du mysql. Y'a la fonction MD5() dans mysql |
Je veux hasher une table directement et non un champ.
skeye a écrit : J'ai rien compris ni à la question, ni à l'intérêt que ça pourrait avoir. |
En fait, l'intérêt réside dans les accès de la base. Dans un logiciel, on fait une requète pour aller chercher une liste (longue en général) de clients, avec leurs détails.
On fait cette requète en permanence, ce qui ralentit fortement le système.
Ce qu'on voudrait faire, c'est limiter les accès en base, et ne faire un accès à la table que lorsque celle-ci a un hash différent de celui qu'on a enregistré en mémoire.
Si SQL pouvait permettre de générer toutes les secondes un hash de toutes ses tables, ça pourrait être hyper pratique de ce côté là
Marsh Posté le 02-04-2009 à 09:51:56
Et mettre en place un système de cache ce serait pas une bonne idée??
Marsh Posté le 02-04-2009 à 09:57:06
Thordax a écrit : |
Thordax a écrit : |
Et on génére le hash sans accéder aux tables, bien sûr !
Propositions :
1. A la modification de la table, modifier une autre table (ou un fichier) en y mettant la date de dernière modification, ou le hash si tu y tiens.
2. Revoir le travail en amont - conception de la BDD et du programme.
La plupart du temps, une requête trop longue à traiter et/ou trop souvent répétée est symptomatique d'une erreur de conception.
On peut essayer de compenser en bidouillant, mais :
- ça reste de la bidouille,
- on s'expose à d'autres problèmes similaires (ou pas)
- ça complexifie le programme pour rien.
Marsh Posté le 02-04-2009 à 09:57:46
skeye a écrit : |
Tu me parles en hébreu Explicite un peu plus ton idée, plz
Marsh Posté le 02-04-2009 à 09:58:43
macgawel a écrit : |
Remarque, un simple horodatage de la dernière modif peut peut-être largement le faire, comme tu le dis
Marsh Posté le 02-04-2009 à 10:03:36
Thordax a écrit : Tu me parles en hébreu Explicite un peu plus ton idée, plz |
Tu enregistres le résultat de ta requête ailleurs qu'en base (dans un cache, donc...cf memcached et autres systèmes dédiés, tout dépend du type d'appli.), et ensuite tu ne retournes chercher dans la base que quand ton cache est invalidé (timeout, invalidation via d'autres opérations...dépend de l'appli encore une fois).
Marsh Posté le 02-04-2009 à 10:51:03
Ce coup du hash, ça me rappelle un topic, y'a pas longtemps, d'un gars qui voulait convertir un nb en chaîne et inversement pour accéder, selon lui, plus rapidement aux enregistrements de la table. On lui a alors parlé des index Thordax, est-ce que t'utilises bien les index sur les champs qui te servent pour faire les jointures dans tes requêtes?
Et si t'es sous mysql, y'a ce script de customisation de mysql qui peut t'aider (augmentation du cache de requêtes de mysql, par ex) : http://www.day32.com/MySQL/
Marsh Posté le 02-04-2009 à 15:00:58
Ouaip, pareil, la notation par index de table, un genre de table de log peut valoir le coup, le hash est un concept long et lourd [ctb proof]
Marsh Posté le 04-04-2009 à 15:58:46
http://dev.mysql.com/doc/refman/5. [...] cache.html
http://www.siteduzero.com/tutoriel [...] e-php.html
http://www.sitepoint.com/article/c [...] rformance/
Marsh Posté le 01-04-2009 à 15:46:39
Ma question est simple et attend une réponse courte : SQL permet-il le hachage en live d'une table entière, ou pas ?
Sinon, au pire, via php je fais une ptite fonction qui toutes les minutes reprend le résultat d'un "SELECT * FROM Table", calcule son hash et l'envoie en table, mais je voulais savoir si c'est possible en directement via SQL
---------------
Atari 520 ST 256 Ko