Verständnisfrage hash

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.559
Hi

Bin gerade dabei, die Datenbank von Plex zu verstehen. Da ist mir aufgefallen, dass Cover nicht unter ihrem Namen, sondern unter dessen sha1 hash abgespeichert werden. Da fragte ich mich, was es generell für einen Sinn hat, Sachen unter ihrem hash Wert zu speichern, oder anzusprechen, wenn man damit keine Verschleierung, wie bei Passwörtern erreichen möchte.

Schließlich könnte ich auch jedes Cover mit der ID des entsprechenden Eintrags in der DB versehen und das ganze wäre besser nachvollziehbar. Trotzdem werden für solche Sachen immer wieder gerne hash-Werte benutzt.
Warum?

Gruß
lordg2009
 
Hashes wurden ursprünglich für eine schnelle Zuordnung entwickelt. Wenn du das Cover hast kannst du über den hash-Algorithmus jederzeit den Hash ableiten, aber keine ID.

Zusatz: außerdem haben hashes den Vorteil der Eindeutigkeit: ein und das selbe wird immer unter dem selben Hash agbelegt, man bekommt keine Dubletten (muss im gegensatz aber auf Kollisionen achten, die Eindeutigkeit gilt bei Hashes nur in eine Richtung)
 
Zuletzt bearbeitet:
Bleiben wird bei diesem Beispiel:

Die Zuordnung per hash müsste doch langsamer sein, da ich auf die ID + Zusatzinformation als string immer erst die hashfunktion anwenden muss.
Die Eindeutung habe ich bei Speicherung unter der ID auch. Setzt ich die ID in der DATENBANK, UNIQUE, PRIMARY KEY und AUTO_INCREMENT, so gibt es jede ID nur einmal.
Zusätzlich gilt die Ableitbarkeit in beide Richtungen und Kollisionen spielen keine Rolle.
 
Ja, die Ermittlung des Hashes dauert etwas, ist aber einfacher als das Objekt selbst zu benutzen. Aber mit der ID hast du keine Eindeutigkeit. Niemand hindert dich daran Cover1 mit der ID 7 und nochmals mit der ID 22 zu verknüpfen. Aber de Hash wird immer "fdghi3f56h" sein (reine Beispiele ;-)

Außerdem: du hast nun Cover1 vorliegen, wie ermittelst du unter welcher ID es in der Datenbank steht? Den Hash bekommst du ganz einfach über den Algorithmus.


Beide Varainten haben ihre Berechtigung, es kommt auf die Einsatzszenarien an welches besser geeignet ist. Ob es im vorliegenden Fall eine gute Idee ist den Hash zu verwenden kann ich so ohne weiteres nicht sagen.
 
Jetzt verstehe ich, was du mit der Eindeutigkeit meinst und es ergibt Sinn, danke dir ;)
 
Je nach Organisation der Daten ist der Zugriff über einen Hash bei ausreichender Anzahl an Daten auch wesentlich schneller machbar. Hashes haben also eine ganze Menge Vorteile :)
 
Zurück
Oben