Forum: PC Hard- und Software Speichern einer großen Anzahl von Dateien


von Tek (Gast)


Lesenswert?

Hallo zusammen,

wir haben ein Prüfsystem das Bilddateien generiert. Zur 
Rückvervolgbarkeit und Diagnose des Systems werden die Bilder 
gespeichert. Pro Tag fallen so ca 40000 Bilder a 200kb an.

Im Moment werden die Files in einer Ordnerstruktur Jahr/Monat/Tag 
abgelegt, das handling der Files ist aber aufgrund der großen Menge 
problematisch. (Beim kopieren von Bildern aus 2 Tagen von einem 
Netzlaufwerk auf eine USB Platte wird 8h als geschätzte Zeit angezeigt)

Auf die einzelnen Bilder sollte ohne größeren Aufwand zugegriffen werden 
können daher halte ich ein archivieren in zb. Zip Dateien für keine gute 
Alternative.

Am liebsten wäre mir eine Art Datenbank auf die ich dann mit einem 
selbst erstellten Tool zugreifen und Bilder hinzufügen und suchen kann. 
Vom abspeichern der Bilder als BLOB in einer SQL Datenbank wird einem 
aber eigentlich bei so großen Mengen eher abgeraten.

Kennt jemand eine Möglichkeit wie man so etwas am besten angeht?

von jois3 (Gast)


Lesenswert?

Hi TeK,

wie man so etwas am besten angeht, hängt noch von einer Reihe weiterer 
Gegebenheiten ab.
Erstmal zum Bildformat: Ich vermute mal .jpg (.jpeg), d.h. nicht 
wirklich weiter komprimierbar. Das bedeutet, ein Zusammenfassen in 
zip-Dateien hat eher organisatorischen Charakter - aber genau dafür 
würde ich das in Erwägung ziehen.
Kann das Aufkommen irgendwie reduziert oder aggregiert werden? D.h. gibt 
es feststellbar gleiche Bilder, bzw. welche, die bekanntermaßen als 
nicht mehr relevant markierbar sind? Reicht es, die Unterschiede 
zwischen den Bildern zu speichern (das lohnt sich nur, wenn es nur 
geringe Unterschiede gibt, und jpeg ist dann auch ein eher unglückliches 
Speicherformat)? Oder reicht es sogar, wenn z.B. per OpenCV Aussagen aus 
den Bilder extrahiert und nur diese (gut komprimierbar) gespeichert 
werden? Ist gar nur eine Prüfsumme notwendig (auch hier ist jpeg eher im 
Weg)?

40000 Dateien in einem Ordner klingt anstrengend, je nach Zugriff. Wie 
soll auf die Dateien zugegriffen werden (nach welchen Kriterien)? Wenn 
z.B. die Stunde bekannt ist/sein soll, und die Dateien einigermaßen 
gleichverteilt über den Tag anfallen, dann bringt ein Einsortieren in 
Unterordner nach Stunden schon einiges, evtl. auch noch nach Minuten, 
z.B. ein Ordner "0941" für Bilder, die (tada) um 09:41 Uhr erstellt 
wurden. Oder eben (siehe oben) eine Zip-Datei pro Minute.

Und wenn die Daten in der Menge wirklich notwendig sind, dann solltest 
Du imho die Infrastruktur dafür auch aufbohren. 8h für 8GB (40k*200kb) 
klingt nicht gerade nach USB3...
Zum Kopieren: Am besten immer per Kommandozeile (und unter Windows am 
besten per XCopy/Robocopy). Die Vorschau auf Bilder deaktivieren, 
Ansicht auf Liste, sonst kann dies einem USB-Stick einiges abverlangen.

Gruß, jois3

von Peter II (Gast)


Lesenswert?

Ich würde die Bilder je Tag in ein TAR Archiv legen. (z.b. durch eine 
Jobs Nachts). Dazu würde ich in Datenbank (oder Textdatei) mir einen 
Index anlegen wo steht an welchen Offset welches Image im Tar beginnt 
und wie groß das Image ist - dann hat man auch einen sehr schnellen 
zugriff auf die Images.

von Icke ®. (49636b65)


Lesenswert?

Tek schrieb:
> Vom abspeichern der Bilder als BLOB in einer SQL Datenbank wird einem
> aber eigentlich bei so großen Mengen eher abgeraten.

Vom Abspeichern solch großer Datenmengen ist generell abzuraten, egal 
wohin.
Nee im Ernst, die Datenbank ist sicher noch die bessere Variante. Bei 
gleicher Gesamtdatenmenge dauert das Bewegen vieler kleiner Dateien 
durch den Overhead des Öffnens/Schließens um Größenordnungen länger als 
bei einer großen Datei. Und bei euren enormen Datenmengen wird auch die 
Sicherung/Rücksicherung äußerst zeitaufwendig und in absehbarer Zeit 
unbeherrschbar. Also klarer Rat zur Datenbank, ggfs. Aufteilen in 
mehrere Datenbanken.

: Bearbeitet durch User
von Der Andere (Gast)


Lesenswert?

Icke ®. schrieb:
> Also klarer Rat zur Datenbank,

Dann sollte man aber vieleicht mal nach NOSQL Datenbanken schauen.
Key Value oder Dokumentenzentrierten Datenbanken dürften besser auf das 
Problem passen und bessere Performance und skalierbarkeit bieten.

Gibt es vieleicht spezielle Bilddatenbanken für sowas?

von Peter II (Gast)


Lesenswert?

Icke ®. schrieb:
> . Und bei euren enormen Datenmengen wird auch die
> Sicherung/Rücksicherung äußerst zeitaufwendig und in absehbarer Zeit
> unbeherrschbar. Also klarer Rat zur Datenbank, ggfs. Aufteilen in
> mehrere Datenbanken.

auf keinen Fall würde ich sagen, klar eine große Datenbank klingt 
einfacher. Hat aber den großen Nachteil das man nicht einen kleinen Teil 
der Daten wiederherstellen kann. Wenn man jeden tag in ein Tar packt 
kann man tageweise Sichern und Widerherstellen. Für jeden Tag eine 
Datenbank ist unhandlich.

Auch das Sichern ist nicht wirklich einfach, weil man schlecht von der 
Datenbank Differenzen ermitteln kann im schlimmsten fall wird bei sicher 
jeden Tag die Datenbank komplett kopiert.

Wie haben auch über 50.000.000 Dateien auf einen System liegen. Nur 
kostet das dann etwas mehr als ein einfaches NAS.

von mh (Gast)


Lesenswert?

Das sind ~8GB pro Tag. Das ist nicht viel. Auch 40000 Dateien pro Tag 
sind nicht viel.

Du solltest genauer erklären was ihr genau machen wollt. Wenn dir nur 
das kopieren auf eine USB-Festplatte zu lange dauert, musst du 
herausfinden warum es so lange dauert. 16Gb in 40000 Dateien sollte 
keine 8 Stunden dauern.

von ergo (Gast)


Lesenswert?

RIAK KV kann sowas z.B.

von Stefan F. (Gast)


Lesenswert?

Die Dateimanager von Windows und Ubuntu Linux tun sich mit vielen 
Dateien sehr schwer. Sie sind langsam und neigen bei so viele Dateien 
dazu, sich spontan aufzuhängen oder auch mal Dateien auszulassen.

Der Tip mit der Kommandozeile war schon goldrichtig - bei beiden 
Betriebsystemen.

Eine Datenbank bringt Dir den Vorteil, dass sie die Dateien 
(=Datensätze) indiziert, so dass du schneller suchen kannst. Aber wonach 
willst du suchen? Vermutlich nur nach Zeitstempel, richtig? Das kannst 
du in deinem gruppierten Dateisystem genau so gut.

Bei Kopieren von Massendaten wird die Datenbank hingegen keinen 
wesentlichen Vorteil haben. Im Gegenteil, da der Kopiervorgang auch das 
Aktualisieren des Index mit sich bringt, kostet es sogar vielleicht 
sogar noch extra Zeit.

Letztendlich ist das Dateisystem selbst schon eine Datenbank - nur mit 
fest vorgegebener Struktur des Index, nämlich dem Inhaltsverzeichnis.

von Icke ®. (49636b65)


Lesenswert?

Peter II schrieb:
> Auch das Sichern ist nicht wirklich einfach, weil man schlecht von der
> Datenbank Differenzen ermitteln kann im schlimmsten fall wird bei sicher
> jeden Tag die Datenbank komplett kopiert.

Dafür wurden transaction logs erfunden.

von Icke ®. (49636b65)


Lesenswert?

mh schrieb:
> Das sind ~8GB pro Tag. Das ist nicht viel. Auch 40000 Dateien pro Tag
> sind nicht viel.

Doch, das ist schon eine ganze Menge, wenn man nicht gerade in einem 
Rechenzentrum sitzt und auf hochperformante SANs speichert, sondern mit 
Technik aus dem SoHo-Bereich klarkommen muß.

von Georg (Gast)


Lesenswert?

Tek schrieb:
> Beim kopieren von Bildern aus 2 Tagen von einem
> Netzlaufwerk auf eine USB Platte wird 8h als geschätzte Zeit angezeigt

Muss das ein Netzlaufwerk sein? Ich würde die USB-Platte an die Maschine 
anschliessen, die die Bilder speichert.

Georg

von Peter II (Gast)


Lesenswert?

Icke ®. schrieb:
> Peter II schrieb:
>> Auch das Sichern ist nicht wirklich einfach, weil man schlecht von der
>> Datenbank Differenzen ermitteln kann im schlimmsten fall wird bei sicher
>> jeden Tag die Datenbank komplett kopiert.
>
> Dafür wurden transaction logs erfunden.

und dann willst du beim restore erst mal das Backup einspielen und dann 
noch 356 diffs dazu?

Und was ist wenn du 1 Datei aus dem Backup brauchst?

von Possetitjel (Gast)


Lesenswert?

Icke ®. schrieb:

> mh schrieb:
>> Das sind ~8GB pro Tag. Das ist nicht viel. Auch 40000
>> Dateien pro Tag sind nicht viel.
>
> Doch, das ist schon eine ganze Menge, wenn man nicht
> gerade in einem Rechenzentrum sitzt und auf hochperformante
> SANs speichert, sondern mit Technik aus dem SoHo-Bereich
> klarkommen muß.

Es stört aber eher die Anzahl, nicht das Datenvolumen.

8GByte (=8'000 MByte) gehen in 5 Minuten (=300s) über den
USB.

Das letzte Buch, das ich eingescannt habe, hat 600 Seiten
zu je 40MByte. Die Nachbehandlung lässt sich mühelos auf
einem 10 Jahre alten PC machen.

von Possetitjel (Gast)


Lesenswert?

Tek schrieb:

> Pro Tag fallen so ca 40000 Bilder a 200kb an.
>
> Kennt jemand eine Möglichkeit wie man so etwas
> am besten angeht?

Bilder viertelstundenweise als tar-Archive zusammenfassen.
Automatisiert natürlich.

Für einen Tag (=24h) gibt das 96 Dateien mit je 400
Bildern, also je tar-File ca. 80MByte.

Topmoderne graphische Filemanager (wie der Midnight
Commander:) können direkt mit tar-Archiven umgehen, d.h.
diese wie Verzeichnisse "öffnen". Der wahlfreie Zugriff
ist dadurch nicht eingeschränkt.

von Nop (Gast)


Lesenswert?

Icke ®. schrieb:
> Doch, das ist schon eine ganze Menge, wenn man nicht gerade in einem
> Rechenzentrum sitzt und auf hochperformante SANs speichert, sondern mit
> Technik aus dem SoHo-Bereich klarkommen muß.

Man "muß" nicht mit Technik  klarkommen, die für so einen Anwendungsfall 
nicht gedacht und auch nicht sonderlich geeignet ist. Sie ist ja 
deswegen so günstig, weil sie für sowas eben nicht gebaut wurde.


Ansonsten, Dateimanager haben mit sowas Probleme, weil und wenn sie von 
Anfängern programmiert wurden (egal ob unter Linux oder bei MS). Da wird 
dann mit 50 Dateien getestet "ja geht", und das war's. Manchmal waren 
die Deppen auch bei der Entwicklung des Dateisystems, da kann der 
Dateimanager dann auch nichts mehr retten.

Siehe auch hier, da sind Shlemiels drin:
http://www.joelonsoftware.com/articles/fog0000000319.html

Alternativ auch Sortieralgorithmen, die bei 50 noch gehen, bei 40.000 
nicht mehr. Bubblesort etwa. Wer sowas in einen Dateimanager verbaut, 
gehört geschlagen.

von Philipp K. (philipp_k59)


Lesenswert?

Fileserver+ Dateinamen richtig wählen/Ondemand umbeschriften..

Eine Parallele Datenbank mit Timestamp und eindeutigem Stempel 
erstellen.. geht ja einfach da man nach Dateien Erstelldatum seit 
letztem Sync sucht.

Ich hab mal ähnliches mit CSV und einem kleinen Tool gemacht..

Die Files wurden wild in einem Ordner abgelegt, nach jedem Auftrag  hat 
man ein einfaches Batch/Java Programm geöffnet das alle Daten wie 
Auftragsnumme,Produktnummer abgefragt hat und das ganze dann passend 
verteilt, umbenannt und einsortierte.

von mh (Gast)


Lesenswert?

Icke ®. schrieb:
> mh schrieb:
>> Das sind ~8GB pro Tag. Das ist nicht viel. Auch 40000 Dateien pro Tag
>> sind nicht viel.
>
> Doch, das ist schon eine ganze Menge, wenn man nicht gerade in einem
> Rechenzentrum sitzt und auf hochperformante SANs speichert, sondern mit
> Technik aus dem SoHo-Bereich klarkommen muß.

Solange man nicht versucht über eine Netzwerkverbindung auf jede Datei 
einzeln zuzugreifen, sollte das kein Problem sein.

von Possetitjel (Gast)


Lesenswert?

Nop schrieb:

> Man "muß" nicht mit Technik  klarkommen, die für so
> einen Anwendungsfall nicht gedacht und auch nicht
> sonderlich geeignet ist.

Ach so.

Niemand hat je erfolgreich einen UseNet-Server auf
PCs betrieben. Soso.

> Ansonsten, Dateimanager haben mit sowas Probleme, weil
> und wenn sie von Anfängern programmiert wurden (egal ob
> unter Linux oder bei MS).

Nein -- weil sie von Anfängern für Zwecke eingesetzt werden,
für die sie völlig ungeeignet sind.

Wozu - zum Henker! - braucht man zur sinnvollen, d.h.
automatisierten Behandlung von Dateien eine DATEIMANAGER ?

Du stellst wohl auch extra eine Hilfskraft ein, die jedes
Bild mit der Maus in den passenden Unterordner zieht?

> Manchmal waren die Deppen auch bei der Entwicklung des
> Dateisystems,

Ja... zum Beispiel die grünen Bubis, die FAT entwickelt
haben.

SCNR

von Icke ®. (49636b65)


Lesenswert?

Peter II schrieb:
> und dann willst du beim restore erst mal das Backup einspielen und dann
> noch 356 diffs dazu?
>
> Und was ist wenn du 1 Datei aus dem Backup brauchst?

Es gibt mittlerweile Backup-Software wie VEEAM, die sogar in der Lage 
ist, einzelne Nachrichten von Exchange-Postfächern aus dem Backup 
wiederherzustellen. Sollte also nicht allzu schwer lösbar sein.
Nur mal zum Vergleich, die Dateianzahl des TE wächst pro Jahr um einen 
zweistelligen Millionenbetrag. Bei dateibasierter Speicherung würde ein 
kompletter Restore Tage dauern, wenn keine sauteure Storagetechnik 
vorhanden ist.

von Icke ®. (49636b65)


Lesenswert?

Possetitjel schrieb:
> Es stört aber eher die Anzahl, nicht das Datenvolumen.

Mein Reden:

Icke ®. schrieb:
> Bei
> gleicher Gesamtdatenmenge dauert das Bewegen vieler kleiner Dateien
> durch den Overhead des Öffnens/Schließens um Größenordnungen länger als
> bei einer großen Datei.

von Icke ®. (49636b65)


Lesenswert?

mh schrieb:
> Solange man nicht versucht über eine Netzwerkverbindung auf jede Datei
> einzeln zuzugreifen, sollte das kein Problem sein.

Denkste, das ist sehr wohl auch dann problematisch, wenn die Dateien auf 
lokalen Laufwerken bewegt werden. Ich rede aus Erfahrung.

von Peter II (Gast)


Lesenswert?

Icke ®. schrieb:
> Nur mal zum Vergleich, die Dateianzahl des TE wächst pro Jahr um einen
> zweistelligen Millionenbetrag. Bei dateibasierter Speicherung würde ein
> kompletter Restore Tage dauern, wenn keine sauteure Storagetechnik
> vorhanden ist.

nein, wie schon oben geschrieben, einfach jeden Tag in ein TAR packen 
und gut ist. Dann kann man mit Hilfe einer Index Datei sogar sofort auf 
den Inhalt zugreifen.

Backup und Restore ist dann keim Thema mehr, weil man es nur noch mit 
365 Dateien a 8GB zu tun hat.

von Possetitjel (Gast)


Lesenswert?

Icke ®. schrieb:

> mh schrieb:
>> Solange man nicht versucht über eine Netzwerkverbindung
>> auf jede Datei einzeln zuzugreifen, sollte das kein
>> Problem sein.
>
> Denkste, das ist sehr wohl auch dann problematisch, wenn
> die Dateien auf lokalen Laufwerken bewegt werden. Ich
> rede aus Erfahrung.

Also besteht die Lösung darin, die Dateien blockweise
zusammenzufassen. Rechenbeispiel steht weiter oben.

Ich verstehe die Diskussion nicht. (Muss ich Gott sei
Dank auch nicht...)

von Nop (Gast)


Lesenswert?

Possetitjel schrieb:

> Niemand hat je erfolgreich einen UseNet-Server auf
> PCs betrieben. Soso.

Das ging ganz am Anfang, als das nicht viel mehr als Mailboxen waren. 
Gut, heute würde es wieder gehen, so wie das Usenet geworden ist.

> Nein -- weil sie von Anfängern für Zwecke eingesetzt werden,
> für die sie völlig ungeeignet sind.

Es gibt keinen Grund, wieso ein Dateimanager bei 40.000 Dateien versagt, 
wenn z.B. ls funktioniert. Außer schlampiger Programmierung mit mies 
skalierenden Algorithmen, und die sollte man auch in Dateimanagern nicht 
verwenden.

Sind übrigens dieselben Trottel, die auch sowas wie Testtools machen. 
Die funktionieren gut mit 50 Signalen. Zeichnet man damit 5000 auf, 
dauert es Stunden, bis sich alleine die Oberfläche mal aufbaut. Und dann 
stürzt sie ab.

> Wozu - zum Henker! - braucht man zur sinnvollen, d.h.
> automatisierten Behandlung von Dateien eine DATEIMANAGER ?

Dafür nicht. Um ins Verzeichnis reinzusehen dagegen schon.

> Ja... zum Beispiel die grünen Bubis, die FAT entwickelt
> haben.

Nö, FAT war schon nicht so schlecht - für Disketten. Idiotisch wurde es 
aber, als man damit angefangen hat, auf Festplatten loszugehen. 
Vermutlich veranlaßt durch inkompetente Manager, die "zack zack mal eben 
schnell los los mir doch alles egal" gedacht haben.

von Tek (Gast)


Lesenswert?

Danke für die vielen Antworten

jois3 schrieb:
> Erstmal zum Bildformat: Ich vermute mal .jpg (.jpeg), d.h. nicht
> wirklich weiter komprimierbar. Das bedeutet, ein Zusammenfassen in
> zip-Dateien hat eher organisatorischen Charakter - aber genau dafür
> würde ich das in Erwägung ziehen.

Die Bilder kommen aus einer Bildverarbeitung und sind unkompremiert nur 
so kann nachträglich mit anderen Parametern nochmal ausgewertet werden. 
Platztechnisch könnte da also auch noch was rausgeholt werden.

Übergeordnet gibt es eine Datenbank die mittels einer ID mit den Files 
verknüpft ist.

Der Zugriff auf die Bilder ist unterschiedlich:
Für nachträgliche Auswertungen werden z.B. alle Bilder von einer Woche 
benötigt da wären Tagesarchive unproblematisch.

Es kann aber auch sein das man mal eine Liste mit 100 Bildern verteilt 
über die letzten vier Wochen benötigt. Mit Archiven bräuchte man dann 
irgend ein Tool das die dann aus den entsprechenden Dateien extrahiert.

von Peter II (Gast)


Lesenswert?

Tek schrieb:
> Es kann aber auch sein das man mal eine Liste mit 100 Bildern verteilt
> über die letzten vier Wochen benötigt. Mit Archiven bräuchte man dann
> irgend ein Tool das die dann aus den entsprechenden Dateien extrahiert.

was aber für jemand der Programmieren kann überhaupt kein Aufwand ist.

von Tek (Gast)


Lesenswert?

Peter II schrieb:
> was aber für jemand der Programmieren kann überhaupt kein Aufwand ist.

Nachdem ich mir die Antworten hier durchgelesen habe ist die Tagesarchiv 
variante auch mein Favorit.
Bisher war es halt recht bequem weil man auch zum "nur Office PC User" 
sagen konnte: Hier such dir Deine Dateien einfach aus der Ordnerstruktur 
raus.

von Icke ®. (49636b65)


Lesenswert?

Tek schrieb:
> Mit Archiven bräuchte man dann
> irgend ein Tool das die dann aus den entsprechenden Dateien extrahiert.

Egal welche Lösung du bevorzugst, die Software muß in jedem Falle 
angepaßt werden. Ohne Anpassung denkbar wäre allenfalls ein Lösung, die 
bspw. realtime die Archive auf Hardlinks mountet, sodaß die Software 
scheinbar auf eine Ordnerstruktur zugreift.

von ergo70 (Gast)


Lesenswert?

Wie gesagt, RIAK KV angucken, oder minio.io wenn die IDs und Metadaten 
eh in einer separaten Datenbank liegen.

von Tek (Gast)


Lesenswert?

ergo70 schrieb:
> Wie gesagt, RIAK KV angucken, oder minio.io wenn die IDs und Metadaten
> eh in einer separaten Datenbank liegen.

Schau ich mir mal an, danke!

von Possetitjel (Gast)


Lesenswert?

Nop schrieb:

> Es gibt keinen Grund, wieso ein Dateimanager bei 40.000
> Dateien versagt, wenn z.B. ls funktioniert. Außer
> schlampiger Programmierung mit mies skalierenden
> Algorithmen, und die sollte man auch in Dateimanagern
> nicht verwenden.

Ich glaube, wir brauchen nicht weiter zu streiten.
In der Kritik an stümperhafter, schlecht skalierender
Software sind wir ja einer Meinung.

Mein Punkt war ein ganz anderer: Hier wurde die
Behauptung in die Welt gesetzt, dass "der PC für
sowas eben nicht geeignet" ist -- und diese Aussage
ist schlicht und ergreifend Schwachsinn.

Wer so etwas schreibt, hat aus meiner Sicht entweder
einfach keine Ahnung, oder will provozieren - oder
beides.

von Der Andere (Gast)


Lesenswert?

Tek schrieb:
> Bisher war es halt recht bequem weil man auch zum "nur Office PC User"
> sagen konnte: Hier such dir Deine Dateien einfach aus der Ordnerstruktur
> raus.

Mit einem installierten 7-zip kannst du das weitgehend auch mit zip 
files.

Ich würde eher die oben vorgeschlagenen 15min oder maximal. 
Stundenarchive benutzen, sonst wirds unübersichtlich.

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.