Forum: PC Hard- und Software Datenbank zur Dateiverwaltung (mit user defined Logik)


von Daniel (Gast)


Lesenswert?

Hallo,

ich habe folgende Idee/Anforderungen, die ich am Beispiel von
Bilddatei beschreibe.

Ich habe viele Dateien, die im Dateisystem echt(keine links) mehrfach
unter verschiedenen Ordnern liegen. Die Ordnerbezeichnungen spiegeln
im Grunde genommen eine Sortierungsansicht, wie "schöne Blumen".
Dasselbe File liegt aber zB im Ordner, der chronologisch "Oct.2008"
benannt ist. Durch gewachsene Unordnung kann man nicht davon
ausgehen, dass chronologische Ordner alle Datei beinhalten.
Darum würde ich gerne (jetzt kommt mein unfachlicher Unsinn)
alle diese Dateien in eine Datenbank reinlegen, die aber durch
eine Art Filter von jeder Datei Hash Wert mitspeichert, sodass
Mehrfacheincheckungen erkannt werden. Danach würde ich gerne
verschiedne "Views/Sichtweisen" deklarieren wollen und nach
und nach die Dateien einsortieren.

Welche Datenbank bietet sich hierfür an? Ich könnte
selber Skripts schreiben (Python || Ruby), die obengennanten Filter
implementiert. Wie verheirate ich dann mein Skript mit der Datenbank?
Gibt es eine Art "callback" von DB zu externen Skripts zur 
Vorverarbeitung
etc?

Ich suche keine fertige "nur Musik||Bilder||etc Verwaltungssoftware".
Ich bin den schönen GUIs nicht abgeneigt, wenn ich die Abläufe
auch intern skriptmässig (mysql?) kontrollieren kann.

Grüsse, Daniel

von ... .. (docean) Benutzerseite


Lesenswert?

Auch wenn du kein fertiges Tool willst...

Picasa bietet eine Funktion zum Suchen doppelter Bilder, Dateinamen sind 
dabei egal

Unter Tools->Sonstiges->Doppelte Bilder finden

von Peter (Gast)


Lesenswert?

das einfachste könnte sein, das man zu jedem Bild eine Stichwort datei 
anlegt und dort in jede Zeile ein Stichwort reinschreibt.

Wenn man jetzt etwas sucht kann man einfach die Textdatein parsen und 
rausfinden wo das gesuchte Stichwort drin steht.

Klar eine Datenbank ist bei sehr vielen Bilder schneller. Dafür muss sie 
aber extra verwaltet werden.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Hallo!

Daniel schrieb:
> Welche Datenbank bietet sich hierfür an? Ich könnte
> selber Skripts schreiben (Python || Ruby), die obengennanten Filter
> implementiert. Wie verheirate ich dann mein Skript mit der Datenbank?

Für solche Zwecke bietet sich z.B. MySQL an, weil es ein
Datenbanksystem ist, für das umfangreiche und ausgereifte(?)
Integrationen in die gebräuchlichen Skriptsprachen wie Python oder
Ruby existieren. Gerade bei Webanwendungen verwendet man ja gerne
MySQL o.ä.. Da es sich bei der Anwendung ja auch nicht um eine
Eintagsfliege handelt, ist es auch nicht unwichtig, darauf zu
achten, dass die Skriptsprache und Datenbank mit hoher Wahrschein-
lichkeit auch noch von den in fünf oder zehn Jahren aktuellen
Betriebssystemen unterstützt werden. Und davon kann man bei MySQL
ganz sicher ausgehen.

Bei der Erstellung des Datenbankschemas sollte man sich überlegen, ob
man die Fotos als sog. BLOBs (binary large objects) in der Datenbank
speichert oder außerhalb als Dateien. Für die erste Variante würde
natürlich sprechen, dass man alles auf einem Haufen hätte, für die
zweite, dass man die Datenbank selbst nicht mit großen Binärdateien
überfrachtet.

Es bietet sich dabei auch an, die Dateien nicht unter ihren Original-
namen zu speichern, sondern z.B. unter ihren SHA1/SHA256 als Dateinamen.
Falls man Bildbearbeitungen zulässt, muss man natürlich darauf achten,
dass das veränderte Bild einen neuen Dateinamen bekommt, da der alte ja
nicht mehr zum Hashwert passt.

Das verteilte Versionskontrollsystem Git, wie es für die Linux-Kernel-
entwicklung verwendet wird, referenziert seine eigenen Objtekt übrigens
auch ausschließlich über deren Hashwerte. Dadurch ist es sehr einfach,
eine Konsistenzprüfung durchzuführen, sowohl in Hinblick auf
versehentliche Änderungen als auch "böswillige" Manipulationen.

Ich gehe davon aus, dass man im Netz auch schon etliche Pakete oder
Bibliotheken finden, mit deren Hilfe man die ggf. in den Bildern
enthaltenen EXIF-Informationen extrahieren kann, um sie direkt in der
Datenbank zu speichern. Damit ermöglicht man dann ja auch eine Sor-
tierung, z.B. nach Aufnahmezeit (sofern die Kamerauhr korrekt 
eingestellt
ist).

Gruß
Andreas Schweigstill

von Daniel (Gast)


Lesenswert?

>Picasa bietet eine Funktion zum Suchen doppelter Bilder, Dateinamen sind
>dabei egal
>Unter Tools->Sonstiges->Doppelte Bilder finden

Ich habe Bilder als ein Beispiel genannt. Ein Anderes wäre zB die
Verwaltung von Datenblättern und Application Notes. Einmal nach
Hersteller, einmal nach Bauteilgruppe und einmal nach Projekten
wo die schon verbaut sind. Diese Sichten sind doch beliebig
erweiterbar.

Apropos Picasa, ich hätte es nicht gerne, wenn google sich meine
Familienbilder ansieht.

Für Doppeldateien finden könnte ich selbst ein Skript schreiben, das ist
eine Sache von höchstens einer Stunde.

>Klar eine Datenbank ist bei sehr vielen Bilder schneller. Dafür muss sie
>aber extra verwaltet werden.

Ich könnte auch ohne DB auskommen, sowie ich mich bis jetzt davor
gedrückt habe. Aber ich bin so aufgelegt etwas Neues zu probieren :)

von Daniel (Gast)


Lesenswert?

@Andreas

ist auch folgendes in MySQL machbar: Datenbank läuft, wahrscheinlich
als Server. A,B Clients laufen auch. A modifiziert ein
Datenbankeintrag => Event/Interrupt/Callback, wie man es nennt,
wird im Client B ausgelöst?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

MySQL kennt Trigger und Funktionen welche bei bestimmten Aktionen 
(Insert/Update) Ausgeführt werden können. Den Client über Änderungen zu 
benachrichtigen geht aber nicht. Wie soll das auch aussehen?

Ansonsten ist deine Beschreibung auch recht nebulös. Wo ist den jetzt 
das Problem? Was soll z.B. mit "doppelten" Dateien geschehen? Willst du 
später die Dateistruktur ggf. anpassen? Oder einfach nur einen Überblick 
gewinnen was wo ist?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.