Objektorientierte Datenbanken?



  • Hallo zusammen,

    ich lese in letzter Zeit immer häufiger von objektorientierten
    Datenbanken. Da ich bisher nur mit relationalen Datenbanken
    gearbeitet habe frage ich mich jetzt wo der Unterschied
    zwischen den beiden ist.
    Besteht eine objektorientierte Datenbank noch aus Tabellen
    und Feldern oder hat sich da Grundsätzlich was geändert.

    Danke für eure Antworten.

    Bye Peter.



  • Der Unterschied ist eben genau der, dass die Daten als "Objekt" vorliegen. Die Grundlagen der Objektorientierung gelten auch hier (Datenkapselung, Vererbung etc.)

    Beispiel Relational:

    Mitarbeiter:
    ID - Vorname  - Name    - Alter
    1  - Dieter   - Müller  -    56
    2  - Paul     - Meyer   -    52
    

    Beispiel OO:

    Mitarbeiter1
    {
    Vorname = Dieter
    Name = Müller
    Alter = 56
    }
    
    Mitarbeiter2
    {
    Vorname = Paul
    Name = Meyer
    Alter = 52
    }
    

    Du hast also für praktisch für jeden Datansatz ein Objekt. Für den OO-Ansatz gibt es auch Klassen. D.h. statt einer Tabelle, wo du Spalten anlegst und Daten einträgst, erstellst du nun eine Klasse. Es ist möglich, dass Objekte die gleichen Attribute (Werte) enthalten, aber trotzdem noch unterschieden werden (Objektidentität). Bei dem relationalen Modell brauchst du einen separeten Schlüssel, um die dann zu unterscheiden.

    Wenn du z.B. eine Klasse Personen hast, kannst du die Klasse Mitarbeiter davon ableiten. Solche Funktionlitäten lassen sich einem RDBMS nicht realisieren. Kurzum: Die meisten Vorteile der OO - Programmierung gelten auch hier.



  • @CarstenJ,

    danke für die schnelle Antwort.
    Werde mich jetzt noch etwas tiefgreifender damit
    beschäftigen, aber für mein Verständniss war
    es sehr gut.

    Bye Peter.



  • Wenn man Daten in XML exprotiert - so wie im Buch von Marcus - , ist das dann OODB?



  • moechte nur darauf hinweisen das man immer zwischen OODBMS und ORDBMS
    unterscheiden sollte

    den OODBMS waren ein grosser hype der sich schon gelegt hat und es geht jetzt alles in richtung ORDBMS - speziell seit SQL 99 herausgekommen ist



  • @CarstenJ
    Und wie sieht es mit dem Speed aus ? Denn dies ist IMHO entscheidend. Es ist zwar schön wenn man Mitglieder aus Personen ableiten kann aber was bringt dies wenn ich die Mitglieder via RDBS und SQL schneller aus den Personen auslese als in einer OODBS ?
    Datenbanken entsprechen, meiner Meinung nach, nicht den Programmeirsprachen. Die Daten sind einfach statisch und da ist es schneller Indices anzulegen und so weiter. Die OOP bringt bei statischen Daten relativ wenig.



  • @JoelH:

    Zumindest bis jetzt sind OODB recht fette teile mit vergleichbarer Performance, aber mit höheren Hardware-Anforderungen.

    Die Motivation für OODB kommt ja nicht daher, daß man schnellere Datenbanken braucht oder daß OO so toll ist, sondern das eine OO Softwarearchitektur schlecht mit einem relationalen Backend zusammenpaßt - und man dort oft kompromisse machen muß.



  • peterchen schrieb:

    Zumindest bis jetzt sind OODB recht fette teile mit vergleichbarer Performance, aber mit höheren Hardware-Anforderungen.

    Kann ich nicht bestätigen. Wir verwenden in der Firma das OODBMS ObjectStore und portieren gerade die Datenbank nach DB/2. Der Speicherbedarf auf der Platte für die relationale DB ist deutlich größer als der für die OO-Datenbank (genaues kann ich nicht sagen, da die Portierung nicht abgeschlossen ist). Auch die Anforderungen an die sonstige Hardware scheinen beim RDBMS größer zu sein. Entsprechendes bei der Geschwindigkeit: Obwohl die Maschine, auf der das ObjectStore-System läuft wesentlich schwächer als die DB/2-Maschine ist, arbeiten beide Systeme subjektiv etwa gleich schnell. (Auch hier: keine Tests, einfach nach Gefühl!)
    Eine ObjectStore-DB ist (bei uns) lediglich eine einfache Datei. Wenn du eine DB zum Testen brauchst, kopierst du die Datei und fertig. Vielleicht braucht man noch eine weitere Datei, falls sich das Schema geändert hat. Ich möchte nicht wissen, welcher Aufwand es ist eine DB/2 zu kopieren!
    Und daß das Programmieren einer OO-DB einfach ein Traum ist, brauche ich wohl nicht zu erwähnen. Ich werde OStore ganz bestimmt vermissen!

    Stefan.


Anmelden zum Antworten