Datenbanken allgemein

Hallo,

kann mir jemand mit einfachen Worten den Unterschied zwischen einer Datenbank und einer Datenhaltung in ISAM-Dateien erklären?

Ich habe gelesen, dass das Halten von Daten in ISAM-Dateien uralt ist, aber noch verwendet wird. Ich habe auch schon ISAM-Dateien gesehen und ich kenne z.B. eine Access-Datenbank. Optisch ist das schon was anderes. Aber wie lässt sich am besten die Datenbankeigenschaft erklären? Wiki habe ich schon bemüht, klingt schlüssig, aber es hat noch nicht „klick“ bei mir gemacht.

Vielleicht hat einer von Euch die richtigen Worte oder einen schönen Link?

Danke und viele Grüße
Monroe

Eigener Erklärungsversuch… So richtig?
ich habe da gerade was gefunden, demnach habe ich das so verstanden:

Im Grunde ist es egal, ob man Daten per Datenbank oder Datei speichert. Allerdings bringt die Datenbank diverse Dinge „von Natur aus“ mit. Zum Beispiel die Zugriffsmöglichkeiten und Benutzerrechte.

Bei einer ISAM-Datei muss das alles mühselig programmiert werden. Die Benutzerrechte können nicht einfach auf ein Feld gelegt werden, sondern müssen einzelnd abgefragt werden. Für den schnellen Zugrif mus manuell ein Index auf die gewünschten Felder gelegt werden.

Neue Felder können in einer Datenbank einfach hinzugefügt werden, bei einer ISAM-Datei geht das nicht so fix und die ganze Datei muss hinterher reorganisiert werden.

Wenn das so korrekt ist, würde mir das schon mal reichen :smile:

VG
Monroe

Fast beinahe
Moin, Monroe,

das ist alles nicht falsch, trifft es aber nicht ganz. Eine Datenbank zeichnet sich dadurch aus, dass Beziehungen zwischen den Daten selbst Bestandteil der Daten sind und dass diese Beziehungen vom DBMS abgesichert werden.

Bei ISAM weiß kein Satz etwas von einem anderen, bei IMS gibt es nur die Parent-Child-Beziehung (mit Tricks noch ein wenig mehr), SQL nutzt die Kardinalität und die Oprtionalität zur Konstruktion der Beziehungen und befreit den Datendesigner von den hierarchischen Abhängigkeiten des IMS.

Wichtigstes Kriterium jedoch sind die Datendefinitions- und die Datenmanipulationssprache - das sind offene, sauber dokumentierte Schnittstellen, nichts wird in selbstgestrickten Programmen versteckt. Größter Vorteil: Eine Datenbank kann ohne Anwendungsprogramm weitergegeben werden.

Gruß Ralf

Hallo Ralf und Monroe,
das möchte ich aber noch ein wenig ergänzen. Eigentlich ist die Frage ja „etwas schief“, weil sie zwei verschiedene Ebenen zusammenbringt. Eine DB (oder eigentlich ein Datenbanksystem) abstrahiert ja den Datenzugriff und verbirgt damit die Art des Zugriffes auf die Daten vor dem User. Insofern ist die DB die obere Ebene und der Zugriff (z.B. eben ISAM) mindestens eine Ebene tiefer angesiedelt. Das eine schliesst das andere nicht aus, nicht umsonst ist die wohl häufigste Speicher/Zugriffs-Methode von MySQL die MyISAM-Engine, eine Weiterentwicklung von ISAM
http://de.wikipedia.org/wiki/MyISAM
http://de.wikipedia.org/wiki/MySQL#Offizielle_Engines

Beides zu vergleichen heisst nun nicht unbedingt Äpfel mit Birnen zu vergleichen, aber vielleicht Äpfel mit Boskoop oder Autos mit Motoren :wink:

Viele Grüße
Marvin

Jetzt verstehe ich gar nichts mehr :frowning:
Hallo,

verstehe ich nicht. Wahrscheinlich fehlt mir der Hintergrund. Letztendlich war ich nach der letzten Antwort halbwegs sicher, das ein wenig verstanden zu haben und das hat mir für mein heutiges Vorhaben Sicherheit gegeben. Es wurde nicht danach gefragt, also aktuell nicht mehr so wichtig.

Für mich als neugieriges Kind wäre es natürlich trotzdem klasse, das zu verstehen. Ich habe schon ISAM-Dateien, z.B. auf einer Unix-Shell gesehen und ich habe z.B. Tabellen aus SQL-Abfragen gesehen (das ist doch eine DB?). Nur sehe ich nix ausser einen optischen Unterschied und den schon im Posting vorher genannten Punkten.

Vielleicht habe ich nächste Woche die Chance, dass mir das jemand am lebenden Beispiel erklärt. Mag einfacher sein.

Danke für Eure Mühen, ich denke, dass mir da wirklich ein wenig Hintergrund zum Verstehen fehlt.

VG
Monroe

Moin, Monroe,

ich auch nicht :smile:))

ISAM1 erlaubt die Sätze auf zwei Arten auszulesen: In der Zugangsfolge oder einzeln per Satznummer („Der 28. Satz“), mehr nicht. Eine Datenbank gibtdie Daten in beliebiger Reihenfolge zurück, was aber viel wichtiger ist, sie liefert die (vorher festgelegten) Zusammenhänge zwischen den Daten.

Jetzt mal kurz zu den Grundlagen:

Wenn Du einen Datenträger anschaust, findest Du nichts als Bytes, hintereinander angeordnet. Um an die Daten zu kommen, musst Du wissen, wie sie organisiert sind.

Einfachster Fall: SAM, Sequential Access Method - ein Satz nach dem anderen, auseinanderzuhalten durch einen Delimiter oder durch Angabe der Satzlänge. Kein gezielter Zugriff auf einzelne Sätze (außer dem ersten) ist nicht möglich.

Verbesserung: ISAM, Indexed Sequential Access Method. Zur sequentiellen Datei wird ein Verzeichnis hinzugefügt, das aus einer Satz(reihenfolge-)nummer und einer physikalischen Adresse besteht, nämlich der Position des Satzanfangs relativ zum Dateianfang. Eine kleine Software, die access method, kriegt die Satznummer, rechnet die Byteadresse aus und liefert den gesuchten Satz zurück.

VSAM noch in aller Kürze: Indextabelle besteht aus Schlüsselwert und Zeiger, damit ist das Suchen nach Schlüsselwerten möglich. Eine VSAM-Datei hat beliebig vile Satzarten; wie die Satzarten zusammenspielen, weiß nur der Programmierer.

Erst jetzt kommt die Datenbank: Wie Satzarten logisch zusammenhängen, wird in speziellen Tabellen (meist SysCatalog genannt) per Data Definition Language beschrieben beschrieben. Eine Data Manipulation Language erlaubt das Einfügen, Ändern, Löschen, vor allem aber das sinnvolle Anordnen von Sätzen, die zusammengehören.

Uff.

Nochmal zur Erinnerung: Auf dem Datenträger ist auch eine relationale Datenbank erstmal nur eine endlose Folge von Bytes. So, wie sie der Anwender sieht, können die Daten nicht abgelegt werden, deshalb kommt erstmal die DML, dann irgendeine access method, bei DB2-Datenbanken zB VSAM.

Gruß Ralf

1Mein letzter Zugriff auf eine ISAM-Datei muss etwa 1976 erfolgt sein.

1 Like

Moin, Marvin,

Eigentlich ist die Frage ja „etwas schief“

mitnichten:

kann mir jemand mit einfachen Worten den Unterschied zwischen
einer Datenbank und einer Datenhaltung in ISAM-Dateien erklären?

Gruß Ralf

Hallo Monroe,

verstehe ich nicht.

Um Himmelswillen, ich wollte dich nicht verwirren. Mach es wie in Gerichtsfilmen, wenn der Richter zu den Geschworenen sagt: „Vergessen sie alles, was der Verteidiger gerade gesagt hat und berücksichtigen sie es nicht bei ihrer Urteilsfindung.“ Halte dich einfach an das, was Ralf gesagt hat. Das ist schon ok (hoffe, das verwirrt dich nicht noch mehr).

Für mich als neugieriges Kind wäre es natürlich trotzdem
klasse, das zu verstehen. Ich habe schon ISAM-Dateien, z.B.
auf einer Unix-Shell gesehen und ich habe z.B. Tabellen aus
SQL-Abfragen gesehen (das ist doch eine DB?). Nur sehe ich nix
ausser einen optischen Unterschied und den schon im Posting
vorher genannten Punkten.

Aber da ich es nicht lassen kann (überlies es, wenn Du magst), alles was ich sagen wollte, war folgendes: Auch unter MySQL gibt es MyISAM-Dateien (moderne ISAM-Dateien), nur daß Du sie eben nicht siehst, bzw. nichts mit ihnen zu tun hast, weil MySQL sie vor dir verbirgt, bzw. dir die Arbeit abnimmt.

Tut mir leid, daß ich dich so durcheinander gebracht habe.
Viele Grüße
Marvin

Hallo Ralf,

Eigentlich ist die Frage ja „etwas schief“

mitnichten:

kann mir jemand mit einfachen Worten den Unterschied zwischen
einer Datenbank und einer Datenhaltung in ISAM-Dateien erklären?

Na gut, Du hast Recht, so schief war die Frage nicht. Allerdings denke ich, wenn ich deine Antwort lese
/t/datenbanken-allgemein/5207927/6
daß wir beide das gleiche gemeint haben, Du als alter Datenbank-Hase hast es nur besser ausgedrückt :wink:
Ich als pedantischer Mensch wollte einfach darauf hinweisen, daß Datenbanksysteme und ISAM-Dateien sich auf verschiedenen Ebenen bewegen, einer sehr abstrakten (DBS) und einer sehr maschinennahen (ISAM) und daß da kein Gegensatz bestehen muss, sondern sich das eine (DBS) sehr wohl des anderen (ISAM) bedienen kann.
Aber wie ich sehe, war dies nicht so sehr die Frage und den Gegensatz habe ich da mehr in die Frage (und wohl auch in deine erste Antwort) hineininterpretiert.

Viele Grüße
Marvin

so vielleicht?
Hallo,

ich hoffe, dass jetzt richtig verstanden zu haben

Wenn ich das nochmal ganz banal mit eigenen Worten formulieren darf: Eine ISAM-Datei ist an sich „dumm“. Ohne ein Stück Software, die auf diese Datei zugreift, die Daten sortiert, löscht, ändert usw. ist sie wertlos.

Dieses „Stück“ Software muss wahrscheinlich genau die Dateistruktur kennen, um darauf zuzugreifen?

Bei eine Datenbank ist an sich schon überlebensfähig, weil sie die logischen Zusammenhänge zwischen den Daten und deren Anordnung selbst verwaltet?

Aus Endverbrauchersicht ist es aber zunächst mal egal, wie die Daten gehalten werden, so lange die eingesetzte Software die ISAM-Dateien verwaltet. Nur das weitergeben der Daten wird sich schwierig gestalten, weil sie keinem Standard entsprechen. Richtig?

Danke Euch :smile:

VG
Monroe

Hallo Monroe,

verstehe ich nicht.

Um Himmelswillen, ich wollte dich nicht verwirren. Mach es wie
in Gerichtsfilmen, wenn der Richter zu den Geschworenen sagt:
„Vergessen sie alles, was der Verteidiger gerade gesagt hat
und berücksichtigen sie es nicht bei ihrer Urteilsfindung.“
Halte dich einfach an das, was Ralf gesagt hat. Das ist schon
ok (hoffe, das verwirrt dich nicht noch mehr).

Kein Problem :smile: Ist ja auch nicht ganz einfach, wenn hier so unterschiedliche Wissenstände aufeinander prallen… Ich habe nie eine Ausbildung in dem Bereich genossen, sehe aber im Job oft diese ISAM Dateien. Man schnappt so einiges auf und eben auch „mit einer Datenbank wäre es einfacher“. Nur den Hintergrund habe ich nie so richtig verstanden.

VG
MOnroe

VG
Monroe

Hi Monroe,

Dieses „Stück“ Software muss wahrscheinlich genau die
Dateistruktur kennen, um darauf zuzugreifen?

eigentlich ist es noch viel schlimmer: Die Software lässt sich so schreiben, dass nur dieser eine Programmierer versteht, was da abläuft.

Der Rest deiner Überlegungen passt schon.

Gruß Ralf

Hi Marvin,

was ich noch vergessen hatte:

Beides zu vergleichen heisst nun nicht unbedingt Äpfel mit
Birnen zu vergleichen, aber vielleicht Äpfel mit Boskoop

nö, Apfel mit Butzen :smile:))

Gruß Ralf

Hallo,

vielen Dank für die Antworten und die Geduld.

Das hier:

eigentlich ist es noch viel schlimmer: Die Software lässt sich
so schreiben, dass nur dieser eine Programmierer versteht, was
da abläuft.

… erklärt übrigens Vieles :smile:)

VG und schöne Pfingsten
Monroe