Daniela Koller: Effizienz-Vergleich MySQL-Eintrag vs. Datei-Eintrag

Beitrag lesen

und was ist dann an den daten zitat "genau definierten Daten" ? die dateninhalte und anzahl der daten ist doch flexibel, ändert sich ständig. wie soll ich darauf rücksicht nehmen, wenn ich das programm schreibe, wo ich doch noch gar nicht weiss, welche daten reinkomen werden ?

Nein, ist sie nicht zwingend. Beispielsweise kann eine Applikation definieren, ich brauche immer nur die 10 (von mir aus auch 10000) letzten Einträge, die alten müssen nicht gespeichert werden weil uninteressant, und ich brauche sie in der Reihenfolge wie sie reinkommen und immer alle. Ich weis also, es sind alles Einträge von der Form, sie haben keinerlei Verbindung zueinander und es sind höchstens so viele. Das ist für die Zugriffsmethode genau genug, sequentielles Lesen ist da angesagt, in absolut jedem Fall.

Es gibt Daten die verlangen nur nach einer Sortierung.

und was machst du, wenn mein programm nun zwei sortierungen verlangt, wenn das eine vorgabe ist ?

Abwägen ob es immernoch sinnvoller ist, etwas selber zu implementieren oder nicht. Wenn nicht ein DBMS benutzen. Meine Daten müssen das jetzt aber nicht sein. Willst du es meiner Applikation und meinen Daten deswegen verbieten, kein DBMS zu benutzen weil deine Applikation mit anderen Daten ein DBMS benötigt?

das ist doch schlecht, wenn ich als benutzer daran gebunden bin, mich nach dem programm zu richten, obwohl ich gerne was anderes hätte.

Du als Benutzer willst das nicht, die Daten sind so, wie es die Natur vorsieht. Es gibt nicht für alle Daten der Welt mehrere Sichten. Es gibt sie für diesen angenommenen (und in der realen Welt durchaus auch existenten Fall) einfach nicht.

Es gibt nicht nur Daten die beliebig gefiltert werden können.

Doch, es gibt Anwendungen, da hat man sehr genaue Informationen über die Daten, inklusive Mengen, Arten, Beziehungen, genaue Datenstrukturen... (Falls dir noch was einfällt was bei Daten variabel sein kann, auch das kann bekannt sein)

wir reden hier aber von OLTP datenbanken. solche statischen datenbank kommen recht selten vor, bzw. abei handelt es sich in allre regel um abgeschlossene geschäftsjahre, wo data mining betrieben wird.

Nein, wir reden nicht von OLTP Datenbanken, genauso wenig von statistischen Datenbanken. Wir reden davon, das es Daten gibt, die von Natur aus klar definiert sind und die aus ihrer Natur heraus genau definiert sind und auch in ihrer Reihenfolge und ihrem Nutzen. Das dies nur ein begrenzter Teil der Daten ist, ist klar. Es spielt auch keinerlei Rolle wie selten dieser Fall ist. Er ist existent und häufig genug dass man nicht zwangsweise mit Datenbanken darauf zugreifen muss weil es grundsätzlich böse wäre, etwas anderes zu benutzen. Das einzige was ich und auch Christian dir begreiflich machen wollen, ist, das es nicht nur Datenbanken gibt und das Datenbanken nicht immer die ideale Lösung darstellen. Weder er noch ich behaupten, Datenbanken seinen immer oder meistens oder wie häufig auch immer die schlechtere Lösung. Sie sind nur auch nicht immer sie bessere Lösung.

dies funktioniert aber nun ganz anders. dort werden die daten wiederum nicht datensatz nach datensatz gespeichert. du verstrickst dich da immer weiter in spezialfällen, die mit der praxis gar nichts mehr gemeinsam haben.

Ich denke, ich habe genug praktische Erfahrung um reichlich mit Daten gearbeitet zu haben, wo Datenbanken nicht die ideale Lösung sind. Genauso gibt es Daten, idealerweise in Datenbanken gehalten wird und ein anderer Teil in Files. Ich habe auch mit reichlich Daten gearbeitet, wo Datenbanken die ideale Lösung waren, aber deswegen muss ich doch nicht Datenbanken einsetzen, wo ich effizienter mit anderen Zugriffsmethoden arbeiten kann. Gerade ein Logfile ist so ein Fall wo ich es nicht in Datenbanken packen würde solange ich nur die zeitliche Auswertung brauche. Bei Logfiles ist das auch der Normalfall das ich nur diese Auswertung brauche. Wenn mein PC Ärger macht, dann schau ich ins Fehlerlog rein und fange unten an zu lesen. Ich habe da nicht das geringste andere Interesse daran. Wenn jetzt hingegen ein Statistiker kommt und diese Daten liest, ist er an anderem interessiert, aber muss ich als PC-Besitzer dafür eine Methode wählen, die für mich weniger optimal ist (Bevor du widersprichst, ich habe keine Lust dir mit einem Haufen Mathe und Assembler und so zu beweisen dass es das ist).

Nein, die habe ich nicht zwangsläufig. Die Daten und Anwendungen schreiben mir das evtl vor, evtl aber auch nicht.
Warum schreibst du mir viele Benutzer vor wenn meine Anwendung die per Definition nicht haben kann?

wiedr speziallfall. di regel ist, mehrere benutzer/programme arbeiten an den daten gleichzeitig.

Nein, ist es nicht, vielleicht in deinem Umfeld. Müssen deswegen alle meine Programme Datenbanken benutzen obwohl es nicht nötig ist?

Ehm, was glaubst du was ein Checkpoint ist? Achja, der Abschluss der Transaktion.

ein checkpoint ist kein abschluss einer transaktion, sie werden auch gesetzt wenn keine transaktionen durchgeführt werden. des weiteren sind transaktionen auch ohne einen checkpoint abgeschlossen, da sie sichin den redo dateien befinden. fällt ein dbms aus, bevor ein checkpoint gesetzt wurde aber schon bei abgeschlossener transaktion, ist das dbms durchaus in der lage, diese transaktion auszuführen. ein checkpoint ist also kein abschluss einer transaktion. ein checkpoint schreibt daten vom cache in die datendateien.

Oracle hat ein Haufen Begriffe, inklusive dem der Datenbank neu (falsch im Vergleich mit der Datenbanktheorie) definiert. Wenn du von der Oraclespezifischen Definition redest, musst du das sagen, ansonsten geh ich von der Definition aus, wie sie die Datenbanktheorie vorgibt.

Und wo liegen die Änderung die innerhalb einer Transkation geschrieben werden? Ja, auf der HD, weil nur dann kann man Rollforwards und Rollbacks machen wenn ein kleineres Malheur passiert.

nein, nicht alle änderungen der daten liegen auch in den datendateien auf der festplatte. ein teil befindet sich in den redo dateien, die jeweils die anweisungen enthalten, aber keine daten an sich.

Die Anweisungen enthalten die neuen Daten. Spielt also keine Rolle ob Anweisungen oder Daten gespeichert wird. Oracle macht es so wie du sagst, andere DBMS wieder anders...

Weist du was das Problem ist? Du schreibst allen Anwendungen vor, die Fähigkeiten eines DBMS zu benötigen. Das ist aber nicht so. Ob ein volles DBMS benötigt wird, sagen nur die Daten und die Anwendung aus. Wenn nur minimalste Teile eines DBMS benötigt werden weil die Anwendung einfach nicht mehr braucht und auch nicht mehr brauchen wird, dann ist es manchmal auch sinnvoller, nur diese kleinsten Teile zu schreiben die man braucht.

ok, sagen wir nur ein benutzer greift auf die daten zu, die daten stehen alle schon vor der programmierung fest, ändern sich also nicht und es darf maximal über eine sortierung gesucht werden. desweiteren weiss man, dass sich die strukturen und dateninhalte nie ändern werden und auch in zukunft die daten von nur einem programm und nur einer person zur gleichen zeit genutzt werden. dann gebe ich dir recht, dann braucht man kein dbms. und nun überlge mal, ob das sinn macht.

Ich habe nicht von Dateninhalten geredet...

Gruss Daniela