AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller Suche
Thema durchsuchen
Ansicht
Themen-Optionen

Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller Suche

Ein Thema von juergen · begonnen am 4. Jul 2015 · letzter Beitrag vom 12. Jul 2015
Antwort Antwort
Seite 2 von 4     12 34      
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 11:19
Die Frage von mkinzler halte ich für durchaus wichtig.
Wie soll das Programm sich bei Änderungen im Dateisystem verhalten?
Jede Persistierung egal wie sie erfolgt entfernt sich zwangsläufig von der Realität im Dateisystem. Eine suche in den persistierten Daten findet demnach entweder Leichen oder "übersieht" Neueinträge.
Ob eine DB Persistierung den erfofften Geschwindigkeitsvorteil gegenüber einer Dateisystemsuche erbringt und der Aufwand dazu im Verhältnis steht, wäre eine Frage, die man näherungsweise mit kleinem Aufwand anhand von Testdaten prüfen könnte.

Hübsch wäre vielleicht, sich in die Änderungen des FS zu hooken und so die Persistierung on the fly synchron zu halten.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 11:57
Man kann das Programm doch mit der Suche im Explorer vergleichen. Die indizierten Orte (Ordner) werden auch laufend überwacht (bzw. per Benachrichtigung bei einer Änderung).

Die einzige Frage ist, ob diese Indizierung permanent erfolgen soll (Dienst) oder nur wenn die Anwendung läuft.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 12:10
Die Frage von mkinzler halte ich für durchaus wichtig.
Wie soll das Programm sich bei Änderungen im Dateisystem verhalten?
Ja, das ist wichtig. Weil es wohl hier um so was ähnliches wie bei meiner privaten mp3-Verwaltung geht, schreib ich mal, wie ich das hier gelöst habe: In einer Config-Datei speichere ich beim Anlegen neuer Dateien die jeweiligen Pfade. Bei einer Aktualisierung gehe ich (mittlerweile in einem eigenen Thread) diese Pfade durch und schaue nach, ob eine Datei verändert wurde. Die Änderungen werden im Hintergrund ohne die Anzeige zu stören über eine separate TTable-Komponente in die DB geschrieben. Für die Anzeige verwende ich eine TQuery. Somit reicht ein "Refresh" der TQuery wenn die Aktualisierung fertig ist, um diese auch auf den Bildschirm zu bringen. Man bekommt also von der Aktualisierung gar nichts mit.

In der DB selber werden nur die Dateinamen gespeichert. Diese sind generell so aufgebaut: {Interpret} - {Titel}.mp3. Ein kleines Tool ermöglicht das physikalische Umbenennen vorhandener mp3-Dateien (Interpret+Titel eingeben, und dann Datei umbenennen). Das Datei-Datum wird mit dem Erscheinungsdatum oder Aufnahmedatum belegt. Die Zeit ist bei erfassten Dateien immer 00:00:00. So sieht man auch im Explorer neue/veränderte Dateien. Interpret, Titel, Datum/Zeit, Erscheinungsjahr, Land, Genre, Rhytmus und Dateiname sind indizierte Felder. Interpreten, Land, Genre und Rhytmus werden wegen einheitlicher Schreibweise über LookUp's aus entsprechenden DB's gefüllt. Somit ist die Suche und das Filtern (z.B. nur ein Interpret) von Daten sehr schnell.

Vielleicht hilft's ja?
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#14

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 12:41
Für mich ist die Frage die sich stellt die: sollen die Infos für die Nachwelt gesichert werden? Denn dafür wäre eine Datenbank durchaus geeignet. Eine Bank ist immer dann gut, wenn man etwas für eine gewisse Zeit da ablegen will, z. B. Geld auf Bank bringen oder Adressen in einer Datenbank ablegen. Oder geht es hier nur um das Einlesen von Informationen zwecks temporärer Verarbeitung?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 13:31
@Popov

Es geht hier rein um die Performance und die Datenbank soll als Cache herhalten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 19:33
Hallo zusammen,

einleitend zuerst mal das Anwendungsgebiet des Tools, dann wird wohl einiges klarer:
- Im geschäftl. Bereich dient es dazu jede Woche einmal ein Serverlaufwerk mit ganz vielen Dateien neu einzulesen.
Dann, z.B. während eines Kunden-Telefonats, kann ich *schnell* mit meinem Tool irgendein Dokument suchen und direkt aus der Suchvorschau öffnen. Ggf. muss ich die Suche ständig wiederholen, bis das gewünschte Dokument gefunden wurde! Mein Gegenüber wartet... Auf Grund der Datenmenge (ca. 500.000 Dateien) ist die Performance eben wichtig.
- Im privatem Bereich dient das Tool vorwiegend zum Einlesen von MP3-Dateien und Fotos, der Suche nach Liedern, wo die genaue Schreibweise nicht immer 100% bekannt ist (verschiedene Such-Algorithmen) und die Bearbeitung der Dateien (Stapelbearbeitungen zum taggen oder umbenennen...). Weiterhin kann das Ergebnis der Suchvorschau direkt an meinen Musikplayer übergeben werden um z.B. eine Playliste zu erstellen...

Die Dateiinformationen müssen *nicht* permanent neu eingelesen werden (zumindest im Moment).

Ich hatte heute nun mal begonnen mit einer SQLite-DB etwas zu experimentieren. Dazu habe ich ca. 140.000 Dateipfade+Dateinamen in eine DB mit nur einer Tabelle gepumpt. Die Tabelle hat nur 2 Felder => AutoInc (Integer) und Dateipfad (255 VarChar). Nun, ich bin erst mal ernüchtert was die Suchgeschwindigkeit angeht.
Weiterhin hatte ich zum testen mal mit SQLite Maestro-Programm gespielt. Das Suchen dauerte dort auf jeden Fall länger wie meine momentane Suche in einer TStringList! Allerdings weiß ich nicht wie die Suche dort funktioniert. Das Maestro-Programm nutzt wohl auch das Quantumgrid zur Anzeige. Ob jetzt das Grid die Daten filtert oder eine Query weiß ich nicht.
Ich habe gelesen, dass evtl. InMenory-Lösungen hierfür hilfreich wären.

Insgesamt habe ich einfach keinerlei Erfahrung in dem Bereich und daher kostet alles viel Zeit.
Da der Aufwand für mich im Moment überhaupt nicht einschätzbar ist (wer weiß was mich bei Nutzung einer DB noch alles so erwartet), werde ich wohl eher das mir fehlende Datei-Datum zusätzlich in meiner TStringList irgendwie speichern.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 20:01
Nach was suchst Du? hat das Feld einen Index?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 22:21
Würde es nicht reichen sich zu merken wo die Datei ist und dann, wenn man sie braucht, die Infos auszulesen?

Was du jetzt vor hast klingt für mich, was Microsoft mal geplant hatte, das Dateisystem in eine DB zu überführen. Sie haben es aber nie verwirklicht.

Weil das Problem ist doch letztendlich die Datei schnell zu finden. Die Infos auslesen dauert doch wohl nur Millisekunden. Also würde ich den Dateinamen und den Speicherort in der DB ablegen und den Dateinamen indexieren. Wenn es mehrere gleichnamige Dateien gibt, kann man sie am Speicherort identifizieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 22:36
Zitat:
Was du jetzt vor hast klingt für mich, was Microsoft mal geplant hatte, das Dateisystem in eine DB zu überführen.
Wie kommst Du darauf, er legt ja nur die Pfade ab, nicht den Inhalt.
Markus Kinzler
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#20

AW: Konzeptfrage: Datenhaltung vieler Datei-Infos und deren Darstellg mit schneller S

  Alt 5. Jul 2015, 22:47
Wenn ich das richtig verstehe, geht es dir nicht um eine schnelle gezielte Dateisuche, sondern um einen rasch reagierenden Dateifilter, der aber meistens die komplette Tabelle durchsuchen muss, weil der gesuchte Namensteil nicht unbedingt am Anfang des Dateinamens steht.

In so einem Fall ist eine in-Memory Lösung wie zum Beispiel eine Stringliste sicher schneller als jede Datenbank.

Abhängig davon, wie so ein Dateifilter bei dir genau aussehen kann, sind aber sicher Optimierungen möglich, um das zu beschleunigen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 22:14 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