AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Image in Datenbank speichern - nur einmal
Thema durchsuchen
Ansicht
Themen-Optionen

Image in Datenbank speichern - nur einmal

Ein Thema von NoGAD · begonnen am 11. Apr 2021 · letzter Beitrag vom 11. Apr 2021
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

Image in Datenbank speichern - nur einmal

  Alt 11. Apr 2021, 13:50
Huhu.

Wie handhabt man es im Allgemeinen, dass eine Datenbank nicht zu groß wird, wenn Bilder mit gespeichert werden?

Meine Idee ist, dass ein Bild, welches hinzugefügt wird, mittels SHA512 als String abgelegt wird.

Würde das ausreichen oder gibt es eventuell den unwahrscheinlichen Fall, dass es zwei gleiche SHA512-Hashes für unterschiedliche Bilder gibt?


LG Mathias
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Image in Datenbank speichern - nur einmal

  Alt 11. Apr 2021, 14:54
Du meinst, den Hash zusätzlich zum Bild abzuspeichern um Doubletten zu erkennen, oder?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#3

AW: Image in Datenbank speichern - nur einmal

  Alt 11. Apr 2021, 16:31
Um Dubletten zu verhindern, speichere ich zusätzlich die MD5-Checksumme. Eindeutiger Index auf die Spalte. Beim Einfügen einer Dublette kracht es dann und ich kann darauf reagieren.

Das ist ein 128-Bit langer Wert. Das reicht vollkommen aus.

Theoretisch kann es bei jedem Hash Dubletten geben, da immer mit einer endlichen Menge von Bit ein Objekt aus einer unendlichen Menge von Objekten abgebildet werden soll. Mit einer endlichen Menge von Bit kann man aber eine unendliche Menge nicht vollständig abbilden.

Es ist also egal welchen Hash Du nimmst. Die Möglichkeit von Dubletten ist nicht auszuschließen. Die Wahrscheinlichkeit von Dubletten tendiert aber gegen 0. (Mir sind mit der MD5-Checksumme noch keine Dubletten untergekommen, egal ob Bilder oder sonstige Dateien.)

Siehe z. B. DNA oder Fingerabdrücke. Auch dort kann es theoretisch Dubletten geben. Die Wahrscheinlichkeit ist jedoch sehr gering (Ausnahme DNA bei eineiigen Mehrlingen, die unterscheiden sich aber dann immernoch in den Fingerabdrücken.)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Image in Datenbank speichern - nur einmal

  Alt 11. Apr 2021, 20:21
Wer den Notfall abfangen will, der kann nach einem gefundenen Hash immernoch die beiden Daten byteweise vergleichen und eine Fehlermeldung ausgeben, wenn identisch.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Image in Datenbank speichern - nur einmal

  Alt 11. Apr 2021, 22:35
Vielen Dank!

Du meinst, den Hash zusätzlich zum Bild abzuspeichern um Doubletten zu erkennen, oder?
Ja, das meinte ich

Liebe Grüße
Mathias
Mathias
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz