![]() |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Einige Dateisysteme bieten auch die Möglichkeit Dateien/Verzeichnisse via ID anzusprechen.
Man braucht da also keinen Dateinamen. Oder man sieht jeden vollständigen Dateipfad als einzelnen String an, welcher in einer Pfadtabelle gespeichert wird. > nur eine ID auflösen (hilft nur, bei wenigen Verzeichnissen und vielen Dateien) Und wer unbedingt will, kann noch weiter sparen, indem er nur einzelne Verzeichnisnamen und die Rootverzeichnisse speichert und diese dann als Baum untereinander verlinkt. > hier muß man halt erst wieder die Pfade rekursiv zusammensetzen |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Vielleicht kann ich die Frage etwas kondensieren.
Ich habe in einem Pfad zu einer Datei z.B. 10 Verzeichnisse, die alle eine ID (Word) haben, also 10 maximal fünfstellige Zahlen. Gibt es einen Algorithmus, der aus einer solchen Zahlenkombination - bei der auch die Reihenfolge stimmen müsste - eine eindeutige ID errechnen kann? Wie wäre es, wenn ich die Zahlen hintereinander schriebe und daraus einen Hashwert (z.B. MD4) errechnen würde. Wäre das nicht eindeutig? Wie machen die Profis sowas? |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Zitat:
Delphi-Quellcode:
liefert dir doch bereits diese Information.
If FileExists then
Zitat:
Zitat:
Zitat:
Zitat:
Inwieweit soll dir eine eindeutige ID dabei helfen, zu überprüfen, ob eine gegebene Datei incl. Pfad bereits eingetragen ist? Es sei denn, du verwendest keine automatisch erstellten Id, sondern einen Hash, den du aus Datei und Pfad erzeugst und als Primary Key festlegst. Aber hier mußt du natürlich aus dem gesuchten Dateinamen erstmal einen Hashwert erzeugen, um danach suchen zu lassen. Zitat:
Zitat:
Zitat:
|
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Ein vergleichbares Konzept wird bei der Backup-Software
![]() Die Pfade werden logischerweise auch gespeichert (ich vermute mal auch als Tree, obwohl die Katalog-Dateien auch sehr groß werden). Ab der Version 8.x läuft ein Dienst mit, der bei Dateiänderungen direkt den Hash-Wert neu berechnet um die Zeit bis zum wirklichen Anlaufen des Backups zu verkürzen. |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Ich bitte um Entschuldigung, ich dachte, es würde reichen, mich auf ein Detailproblem zu konzentrieren. Wie aus
![]() |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Wenn es auch um die Überprüfung von Dateiänderungen geht (Dateiname bleibt gleich, Änderungsdatum und ggf. Größe jedoch unterschiedlich), mußt du zur Berechnung eines eindeutigen Hashwerts natürlich auch Größe und Datum mit einbeziehen.
|
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Natürlich. Von jeder Datei wird aber ohnehin ein MD4 erstellt. In der DB werden Dateiname, MD4, Größe, Erstellungs- und letztes Änderungsdatum vermerkt. Wenn nun Dateiname, Pfad, Größe, Erstellungs- und letztes Änderungsdatum übereinstimmen, dann spare ich mir die erneute MD4-Berechnung und gehe von Identität aus. Da bei sehr großem Dateibestand der Prozentsatz der geänderten Dateien sehr klein ist, kann man sich so meist >99% der Arbeit sparen.
Retrospect ist natürlich toll, ich weiß aber nicht, ob ich so einen Dienst mitlaufen haben möchte. Insbesondere nicht, wenn ich Videobearbeitung mache. Ich glaube, ich verfolge jetzt erstmal den Ansatz, die Verzeichnisse mit ID zu versehen und für den Gesamtnamen ein MD4 zu speichern, was mich einheitlich 32 Byte kosten würde. Vielen Dank für eure Anregungen, und wenn jemand noch eine zündende Idee hat, immer her damit! |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Zitat:
Klar kann man das so implementieren, dass es fürchterlich stört, aber auch so, dass es eben nicht störend wirkt. Wenn die CPU sich langweilt, dann alles berechnen, was da ansteht, ansonsten vornehm zurückhalten und nicht bei jeder Änderung sofort die Berechnung anwerfen. |
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Ist natürlich richtig, wenn die Jungs das so geschickt machen. Womit auch Persaus Frage beantwortet wäre, was ein Profi ist :wink: Mir jedenfalls stehen solche Möglichkeiten wie die Implementierung eines solchen Dienstes nicht zur Verfügung. Was auch für die blockweise Datensicherung gilt.
|
AW: Hunderttausende Dateinamen mit Pfaden effizient in Datenbank speichern
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz