-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Wednesday 04 September 2002 21:31, Josef Spillner wrote:
On Wednesday 04 September 2002 20:31, Konrad Rosenbaum wrote:
Transaktionen sind dazu da Nutzer/Prozesse voneinander zu isolieren, also zu verhindern, dass unterschiedliche Prozesse widerspruechliche Daten erzeugen. Es gibt da ein ganzes Buendel von Szenarien:
Dafür ist unter anderem MVCC da, was von Oracle (?) abstammt.
MultiVersion Concurrency Control ist eine optimierte Implementation von Transaktionen. Hier ist es moeglich, dass mehrere Prozesse auf den selben Datensaetzen arbeiten und dabei unterschiedliche Versionen sehen. Allerdings darf nur einer davon schreiben, sonst geht die Konsistenz verloren. Beispiel:
A liest (sieht Version 18 von SELECT meinespalte FROM meintab) B liest (sieht auch Version 18 ...) C liest (sieht auch Version 18 ...) B schreibt (und erzeugt damit Version 19) B ist fertig A/C lesen weiter (sehen immernoch 18) C versucht zu schreiben (18 ist aelter als 19, Rollback [je nach Implementation koennte ein Restart kommen]) A ist fertig (kein Problem, 18 war in sich konsistent, der naechste Aufruf von A wird 19 zeigen)
Jedenfalls geht es darum, die Daten konsistent zu halten, und wenn nach einem Stromausfall aus einer 1 eine 0 wird, verstößt das auch gegen das ACID-Prinzip.
Um genau zu sein gegen C (Consistency).
Datenbank-basierte Dateisysteme gibt es auch noch...
Bitte kein Oracle Marketing!
DB-basierte Dateisysteme sind so ziemlich der groesste Schwachsinn, den die erfunden haben (neben dem Marketinggag mit dem "i" in der Version): fuer ein FS gibt es keine Moeglichkeit Anfang und Ende einer Transaktion anzuzeigen, ausser Locks und die kann man viel besser mit einem normalen FS abbilden.
Wie der von mir zitierte Artikel schon sagt: - --------- If what you want is raw, fast storage, use a filesystem. If you want to share it among multiple boxes, use NFS. If you want simple reliability against simplistic failure, use mirroring. Want a SQL interface to it all? Use MySQL.
Now, if what you want is data storage that guarantees a certain number of invariants in your data set, that allows for complex operations on this data without ever violating those constraints, that isolates simultaneous users from each other's partial work, and that recovers smoothly from just about any kind of failure, then get your self a real RDBMS. - ----------
Konrad
- -- Never shown Star Trek episodes #20: Riker: "Mr. Worf, do you see that?" Worf: "No, Sir." Riker: "Perhaps if you open your eyes now?"