Hallo Ilja,
Das geht recht problemlos auch mit Dateien.
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.
Du hast mich nicht verstanden. Das ist doch gar nicht nötig. Bei
einer fixen Datensatzlänge weiss ich genau, wo ich schreiben oder
lesen muss. Da muss ich immer höchstens *einen* Datensatz lesen,
bei einer Suche etwas mehr (abhängig vom Sortier-Verfahren).
yo, und genau hier setze ich an und zwar ganz genau bei den worten
"etwas mehr". wenn du weisst, wie ein b-Baum oder bitmap indize
funktioniert, dann würde dir das "etwas mehr" viel konkreter
werden.
Glaube mir, ich weiss durchaus, wie Sortier- und Such-Algorithmen
funktionieren.
und es gibt noch viel mehr eigenschaften, die datenbanken
schneller machen, so zum beispiel das cachen von daten, etc.
Diese Caches werden durch den Kommunikations-Overhead locker wieder
aufgeholt.
natürlich at auch das betriebsystm einen cache ode reine
festplatte. aber dort werden auch andenre operationen ausgeführt,
die mit den daten gar nichst zu tun haben. insofern fliegen dort
bestimmte informationen der datenbank viel schneller wieder raus,
wohingegen die datenbank teilweise gar nicht mehr auf die platte
zugreifen muss.
Dafür muss ein (ziemlich komplexer) Interpreter angeworfen werden,
ein Optimizer, etc, pp.
muss auch nur höchstens *einen* Datensatz schreiben, uU sogar nur
einen *Teil* des Datensatzes. Was meinst du, wie eine Datenbank
das macht? Die macht das genau so, nur verallgemeinert.
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?
und es gibt sogar noch weitere mechanism. in eine datei muss die
änderunng sofort durchgeführt werden. eine datenbank braucht das
nicht sofort auf die platte schreiben und trotzdem ist die
änderung wirksam.
Dito Dateien. Gerade auf RAID-Systemen werden Änderungen viel
später geschrieben, als sie in Auftrag gegeben wurde.
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.
Da kann ich selber entscheiden, wie ich suche. Ob binär, ob
per Hash-Index, das bleibt völlig mir überlassen.
nein, da irrst du dich.
Wobei?
ein indize ist nicht immer schneller,
Habe ich auch nicht gesagt.
[...] ABER die entscheidung für einen indize und welchen ist
unabhängig davon, ob ich meine eigene "umgebung" benuntze oder
nicht.
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?
auch bei deiner eigenen umgebung wird in aller regel ein indize
viel helfen. und um ihn nutzen zu können, muss ich ihn vorher
erstellt haben. und genau das macht eine blosse dateisicherung
nicht.
Nochmal, langsam zum mitschreiben: Ich brauche keine Indizes. Ich
kann problemlos auch ohne arbeiten.
such mal aus 1 millionen datensätze einen bestimmten eintrag
ohne einen solchen indize zu besitzen. eine blosse
dateispeicherung wird das nämlich nicht tun.
Das brauche ich auch nicht.
wen du daten schnell finden willst, warum brauchst du es dann
nicht ? sag mal eine begründung, warum du auf den
geschwindikeitsvorteil verzichten willst, genau das war ja
seine frage ?
Seine Frage war eine ganz andere als das, was wir hier diskutieren.
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.
und dann wirst du sehen, dass eine datenbank um ein vielfaches
schneller ist.
Nein. Bei einer binären Suche z. B. wird der Aufwand
logarithmisch, da sind maximal ln 1000000 / ln 2 = 20 Vergleiche
notwendig.
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. Du solltest dich echt mal darüber
informieren, wie Datenbanken intern arbeiten. Die kochen auch nur
mit Wasser, auch da hats nur binäre Suchbäume, B-Bäume oder Hash
Tables.
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.
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 auch beim schreiben muss eine datenbank nicht immer gleich
alle daten schreiben, sondern eben nur die wirklich neuen,
Dito bei Dateien.
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?
und die daten der firma wurden enmal aufgenommen und damit ist
es gut. natürlich kannst du jetzt auch solche verweise einbauen.
aber wie bereits gesagt, dann machst du genau das, was eine
datenbank macht, nämlich anfangen logisch einzuteilen, indize
zu erstellen, etc.
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.
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.
Wirklich, der einzige Grund, warum man Datenbanken benutzen sollte
ist der, dass wenige Leute das auch noch wirklich so hinkriegen
und es eine Heidenarbeit ist.
ich glaube, du solltest dich ein wenig mehr mit datenbanken
auseinander setzten und vor allem mit den hintergründen, warum
sie enstanden sind. ansonsten würdest du das nicht sagen.
Dazu muss ich ja nun nichts mehr sagen.
Grüße,
CK
--
Der Verstand steht ueber allem. Was durch die Vorstellungskraft nicht geschaffen werden kann, existiert nicht.