Calcul du hash d'une table automatisé en SQL

Calcul du hash d'une table automatisé en SQL - SQL/NoSQL - Programmation

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 :d


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 01-04-2009 à 15:46:39   

Reply

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.


---------------
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 01-04-2009 à 17:08:44    

J'ai rien compris ni à la question, ni à l'intérêt que ça pourrait avoir.[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

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
Un truc du genre "UPDATE Table, SET MonChampAHasher = MD5(MonChampAHasher)" devrait faire l'affaire.


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.[:pingouino]


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à :d


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 02-04-2009 à 09:51:56    

[:roane]
 
Et mettre en place un système de cache ce serait pas une bonne idée??


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 02-04-2009 à 09:57:06    

Thordax a écrit :


Je veux hasher une table directement et non un champ.


 

Thordax a écrit :


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à :d


Et on génére le hash sans accéder aux tables, bien sûr !  :lol:  
 
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.

Reply

Marsh Posté le 02-04-2009 à 09:57:46    

skeye a écrit :

[:roane]
 
Et mettre en place un système de cache ce serait pas une bonne idée??


Tu me parles en hébreu :d Explicite un peu plus ton idée, plz :o


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 02-04-2009 à 09:58:43    

macgawel a écrit :


Et on génére le hash sans accéder aux tables, bien sûr !  :lol:  
 
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.


Remarque, un simple horodatage de la dernière modif peut peut-être largement le faire, comme tu le dis [:klemton]


---------------
Atari 520 ST 256 Ko
Reply

Marsh Posté le 02-04-2009 à 10:03:36    

Thordax a écrit :

Tu me parles en hébreu :d Explicite un peu plus ton idée, plz :o


 
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).


---------------
Can't buy what I want because it's free -
Reply

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/


---------------
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 02-04-2009 à 10:51:03   

Reply

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]


---------------
Atari 520 ST 256 Ko
Reply

Sujets relatifs:

Leave a Replay

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