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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Calcul du hash d'une table automatisé en SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Calcul du hash d'une table automatisé en SQL

n°1868352
Thordax
Shop smart. Shop S-Mart !
Posté le 01-04-2009 à 15:46:39  profilanswer
 

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
mood
Publicité
Posté le 01-04-2009 à 15:46:39  profilanswer
 

n°1868398
rufo
Pas me confondre avec Lycos!
Posté le 01-04-2009 à 16:54:23  profilanswer
 

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
n°1868404
skeye
Posté le 01-04-2009 à 17:08:44  profilanswer
 

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 -
n°1868573
Thordax
Shop smart. Shop S-Mart !
Posté le 02-04-2009 à 09:43:42  profilanswer
 

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
n°1868574
skeye
Posté le 02-04-2009 à 09:51:56  profilanswer
 

[: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 -
n°1868580
macgawel
Posté le 02-04-2009 à 09:57:06  profilanswer
 

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.

n°1868581
Thordax
Shop smart. Shop S-Mart !
Posté le 02-04-2009 à 09:57:46  profilanswer
 

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
n°1868583
Thordax
Shop smart. Shop S-Mart !
Posté le 02-04-2009 à 09:58:43  profilanswer
 

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
n°1868585
skeye
Posté le 02-04-2009 à 10:03:36  profilanswer
 

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 -
n°1868619
rufo
Pas me confondre avec Lycos!
Posté le 02-04-2009 à 10:51:03  profilanswer
 

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
mood
Publicité
Posté le 02-04-2009 à 10:51:03  profilanswer
 

n°1868714
Thordax
Shop smart. Shop S-Mart !
Posté le 02-04-2009 à 15:00:58  profilanswer
 

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
n°1869502
el muchach​o
Comfortably Numb
Posté le 04-04-2009 à 15:58:46  profilanswer
 

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

  Calcul du hash d'une table automatisé en SQL

 

Sujets relatifs
[SQL] Bdd avec LEFT JOIN, tri sur deux champsCalcul des extrémas d'une série de N nombres
[SQL Server 2005] Execute, droit refuséeSQL SERVER: Retourner la 2ème ligne...
[SQL]Problème pour lancer phpmyadmin sous linux KDE[SQL] Comportement jointure sur clé de type varchar
Notification Mail dans Plan de Maintenance SQL 2005Problème lors de l'ajout d'une BDD Sql server sous Visual Studio
Requête union SQL sous Accesstable relationnelles, vues objet et héritage
Plus de sujets relatifs à : Calcul du hash d'une table automatisé en SQL


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