Ilja: Effizienz-Vergleich MySQL-Eintrag vs. Datei-Eintrag

Beitrag lesen

yo,

und genau das geht eben nicht, aus diesem grund gibt es
datenbanken. stell dir mal vor, du hast deine datendateien und
ein programmierer findet nun eine besser möglichkeit daten zu
speichern und wieder abzurufen. dann muss nicht nur er sein
programm ändern, sondern alle anderen programe müssen dies auch
tun.

Das hat ja gar nichts mit der Effizienz zu tun. Dieser Vorteil von
Datenbanken ist unbestritten.

die frage nach dem sinn von datenbanbken ist aufgekommen, dies oben war die antwort dazu. danach habe ich mich mit der effizienz auseinandergestetzt.

Diese Caches werden durch den Kommunikations-Overhead locker wieder
aufgeholt.

was ich einfach mal anzweifel. auf die festplatte zuzugreifen ist wesentlich langsamer als ein paar overhead anweisungen.

Dafür muss ein (ziemlich komplexer) Interpreter angeworfen werden,
ein Optimizer, etc, pp.

für den es widerum auch einen cache gibt und somit ausführungpläne ebenfalls schon vorliegen oder ich ihm genau sagen kann, wie man vorgeht.

nein, wie oben beschrieben geht sie anders vor. nimm einen update
befehel, die datenbank wird viel schneller wissen, wo sich der
datensatz befindet, ergo kann sie auch schneller schreiben.

Quatsch. Warum sollte eine DB das schneller wissen?

woher willst du den ohne indizierung wissen, welche datenzätze alle angefasst werden müssen, ohne einen full scan durchzuführen ?

Dito Dateien. Gerade auf RAID-Systemen werden Änderungen viel
später geschrieben, als sie in Auftrag gegeben wurde.

aber nur wenn sie über eine batterie pufferung verfügen, ansonsten ist dieser cache auszuschalten, weil es sonst zu inkonsisten im falle eines plattencrash kommt.

Indizes sind ein Hinweis für die Datenbank, dass es sich hier
lohnen kann, auf eine andere Art als linear zu suchen. Das
heisst, bei einer eigenen Umgebung brauche ich keine Indizes.
nein, da irrst du dich.

Wobei?

ob sich ein indize lohnt oder nicht, hat nichts mit einer datenbank oder eigenen lösung zu tun. es kann sich durch aus auch bei einer eigenen lösung lohnen, linear zu suchen.

Hae? Natürlich ist die Entscheidung, ob ich einen Idex benutze und
welche, unabhängig von meiner Umgebung. Das habe ich doch gar nicht
bestritten?

doch siehe oben. da schreibst du, bei einer eigenen umgebung braucht man keinen indize, sprich keine sortierung und nichts anderes ist ein indize.

Nochmal, langsam zum mitschreiben: Ich brauche keine Indizes. Ich
kann problemlos auch ohne arbeiten.

das würde bedeuten ohne sortierung zu arbeiten, bzw. maximal mit nur einer und dann muss auch jedesmal der gesamte datenbestand sortiert werden, wenn neue einträge hinzukommen oder alte gelöscht werden.

Und ich brauche Indizes nicht, weil ich selber bestimme, wie meine
Daten physikalisch organisiert sind. Es gibt durchaus
Speichermethoden, die einem das Suchen ohne Indizes erlauben.

wo wir wieder bei der datenabhängikeit wären und vor allem, kann sie nur auf eine besttimmte art und weise optimieren. eine datenbank kann dass unterschiedlich.

ohhhh, ich glaube jetzt sehe ich deinen denkfehler. erstens sind
eventuell die 20 vergleiche immer noch mehr als über eine datenbank.

Quatsch. Auch eine Datenbank muss sogar uU mehr als 20 Vergleiche
starten, da sie im Normalfall nicht mit Bin-Bäumen sondern mit
B-Trees (Balanced Trees) arbeitet.

das ist schlicht falsch diese aussage. datenbanken kennen mehr als nur den b-baum, zum beispiel auch einen bitmap indize. es liegt an mir, welchen ich erstellen will.

ABER die daten liegen in keiner sortierung vor, dort liegt dein
denkfehler.

Natürlich liegen sie sortiert vor. Ich entscheide, wie die Daten
physikalisch vorliegen, also kann ich sie auch sortiert speichern.

na klar, und wenn neue daten dazu kommen, geändert oder gelöscht werden, dann sortierst du einfach mal so nebenbei den gesamten datenbestand gleich immer mit. aber egal, ich werde dir eine einfach aufgabe stellen, die du mit deiner methode nicht lösen wirst. was ist, wenn du eine sortierung über den nachnamen brauchst, aber auch eine über den ort einer person. damit hättest du zwei unterschiedliche sortierungen, könntest aber nur eine physikalisch abbilden, es sei denn, du speichert die kompletten daten zweimal ab oder aber du führst indize ein, wo wir wieder bei datenbanken sind und warum sie effektiver arbeiten.

du muss jeden datensatz anfassen.

Nö.

ohne sortierung geht das nicht

Ich bestimme, wie die Daten vorliegen, also kann ich sie auch
sortiert speichern.

und genau das wirst du nicht schaffen, sobald es mehere sortierungen gibt und ich bezweifel, dass du die erste sortierung mit rein bringst bei einer laufenden datenbank, wo sich datenbestände ändern. und dann fässt du alle an.

und auch beim schreiben muss eine datenbank nicht immer gleich
alle daten schreiben, sondern eben nur die wirklich neuen,

Dito bei Dateien.

wie soll das gehen, jemand ändert daten, die dann aber nicht festgeschrieben werden und ein anderer greift auf die daten zu und dort sind sie nicht aktuell, da im gegensatz zu datenbanken hier direkt auf die dateien zugefriffen wird. eine datendank kann dies aber abfagen, da dort nicht diekt zugegriffen wird.

auch das ist falsch. nehmen wir an, er speichert eine bestellung.
dazu braucht man in der dateispeicherung alle daten, zum beispiel
welche firma bestellt hat mit ihreren gesamten daten. eine
datenbank wird diese daten nicht mehr speichern, da sie
logische verknüpfungen zwischen den einzelnen entities kennt,
die über primär und fremdschlüssel realisiert sin.

Ja. Und? Glaubst du ernsthaft, dass kann ich nicht auch mit Dateien
so machen?

nein, kannst du nicht es sei den, du machst genau das, was eine datenbank nun mal machen muss, um das zu erreichen. aber dann haben wir ja eben ein DBMS.

Umgekehrt wird ein Schuh draus. Die Datenbank macht das
verallgemeinert, was man früher "zu Fuss" gemacht hat. Und da ich
weiss, wie die Daten aussehen, brauche ich keine Indizes.

nein, eine datenbank macht wesentlich mehr, als man früher in der lage war zu tun.

Wie gesagt. Der Grund, warum man (unter diesem Gesichtspunkt) eine
Datenbank benutzt, ist die Tatsache, dass es eine Heidenarbeit ist,
das ganze per Fuss zu machen.

nein wie bereits oben gesagt und von dir auch nicht angezweifelt ging es primär um datenunabhängigkeit.

Ilja