[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Datenspeicherung in Datenbanken (war: DigiKam und die alten Bilder)



On 04/08/2010 12:31 PM, Michael Schuerig wrote:
> Hier liegt allerdings eine Schwierigkeit, wenn man Daten in Datenbanken 
> speichert. Wenn alle Daten in strukturierten Textdateien liegen, INI 
> oder XML, dann ist die Wahrscheinlichkeit ziemlich groß, dass man beim 
> Backup eine konsistente Sicht zumindest der einzelnen Dateien bekommt. 
> 
> Bei Datenbanken sieht das anders aus. Wenn der Backup-Prozess gerade 
> dann eine (der) Datenbankdatei(n) kopiert während das DBMS in die 
> Datenbank schreibt, ist die Konsistenz der gesicherten Datei fragwürdig. 
Das gleiche passiert bei Dateien. Wenn ein backup stattfinden während
ein Prozess gerade die XML Datei schreibt, passiert das gleiche.

Oder um es anders zu sagen, es passiert generell wenn Inhalte
geschrieben werden, ob der Inhalt nun eine Datenbank ist oder XML oder
etwas anderes spielt da auch wieder keine rolle.

Ein Dateisystem generell kümmert sich nie um die Inhalte einer Datei,
volkommen egal ob es nun eine SQLite Datenbank ist oder eine textdatei.
Ein Programm muss diesen fall das es geschrieben wird während es
gebackupt wird also sowieso lösen, unabhängig davon was nun der Inhalt
der Datei ist.

Das Problem was du beschreibst trifft also genauso oft auf wie bei
"normalen" dateien.

> Das Backup braucht für den Kopiervorgang Zeit und bekommt daher eben 
> nicht die Sicht zu einem Augenblick auf die Datenbank. 
Das gleiche gilt für "normale" dateien. Auch Datenbanken sind
letztendlich normale Dateien im Dateisystem.

> Um ein sicheres Backup zu bekommen, muss man -- eigentlich -- entweder 
> vorher den Datenbankprozess beenden oder transaktional einen Dump
> ausführen und diesen sichern.
Das gleiche hast du auch bei nicht Datenbank dateien. Du musst entweder
den prozess beenden der die dateien anpasst oder locken etc.

> Ein solches Vorgehen ist, denke ich, üblich bei Benutzern, die 
> Datenbankserver nicht nur "zufällig" auf ihren Rechnern haben. 
Der Benutzer sollte sich eigentlich überhaupt nicht darum kümmern, nun
teilweise. Wenn ich natürlich ein Backup laufen habe, während eine
Applikation läuft die nunmal dateien verändert dann gibt es hier
natürlich schwierigkeiten.

1) Entweder muss das Backup programm diese Probleme lösen.
2) Oder man muss die Applikation vor dem backup schließen, vorallem wenn
man es nur händisch macht mittels copy&paste etc.

Und diese Regel gilt egal welchen Inhalt die Dateien nun haben.

Wie gesagt wenn du speicherformate wie XML oder sonstige Formate nutzt
ist es deswegen nicht automatisch sicher und einfach, und es können hier
die gleiche Probleme auftreten wie bei Datenbanken.

Den leztztendlich sind für das OS oder Backup alles nur Dateien, und
kennt den Inhalt der Dateien nicht, und irgendeine Applikation kann
diese während des lesens verändern.

> Bei 
> Benutzern, die gar nicht wissen, welche Datenbanken sie überhaupt haben, 
> sieht das wohl ganz anders aus. Nehmen wir den Fall KDE 4:
> 
> Akonadi und Nepomuk, die das Backend für die Speicherung von PIM-Daten 
> und für den "semantischen" Desktop bilden, starten (für jeden 
> angemeldeten Benutzer!) eine eigene MySQL-Instanz und eine Virtuoso-
> Instanz.
> 
> Digikam speichert seine Daten in einer SQLite-Datenbank.
> 
> Amarok verwendet ein eingebettetes (ohne eigenen Prozess) MySQL.
Und worauf willst du nun genau drauf hinaus das du mir sagst wie die
unterschiedlichen Anwendungen ihre Daten speichern?


Reply to: