Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Objekt-Datenbank
thepaul
myCSharp.de - Member



Dabei seit:
Beiträge: 151
Herkunft: Jena

Themenstarter:

Objekt-Datenbank

beantworten | zitieren | melden

Hi,

ich habe gestern was von der Objektdatenbank db4o (http://db4o.com/) gelsen und das gleich mal ausprobiert.
Das ganze ist total simpel: ZUm speichern schreibt man einfach DB.Set(Object);

Auslesen ist genauso simpel. Nebenbei soll das ganze noch viel schneller sein als mit relationalen Datenbanken.

Meine Frage: Wenn man hier im Forum guckt, benutzt der Großteil relationale Datenbanken. Warum nimmt man nicht die Objekt-datenbank, womit "alles" einfacher und schneller geht?
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 476

beantworten | zitieren | melden

Zitat
Original von thepaul
Meine Frage: Wenn man hier im Forum guckt, benutzt der Großteil relationale Datenbanken. Warum nimmt man nicht die Objekt-datenbank, womit "alles" einfacher und schneller geht?

hallo thepaul,

wenn du das Objekt so verwenden kannst wie du es in die Datenbank schreibst mag das sicher stimmen. Ich selbst bin mit Objektdatenbanken noch nicht in Berührung gekommen, aber ich denke sobald du dich nicht mit dem einen Objekt begnügen kannst, sondern andere Objekte in Abhängigkeit von diesem Objekt abfragen möchtest oder beispielsweise eine Summe über eine Auswahl von Objekten bilden möchtest, bist du über eine relationale Datenbank schneller.

Das ist meine Vermutung, da ich aber wie gesagt nicht mit Objektdatenbanken arbeite, bzw. auch nicht meine relationalen Daten auf Objekte mappe, kann ich keine gesicherte Auskunft geben

-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de
private Nachricht | Beiträge des Benutzers
Timur Zanagar
myCSharp.de - Member

Avatar #avatar-3412.jpg


Dabei seit:
Beiträge: 1.457

beantworten | zitieren | melden

Ob nun eine OODB oder RDBMS schneller oder langsamer ist hängt von vielen Faktoren ab.

Man sollte auch bedenken, dass es bis heute (zumindest habe ich keine gefunden) keine OODB als kostenlose Version für den kommerziellen Einsatz gibt.

Desweiteren sind relationale Datenbanken in Firmen und Anwendungen sehr verbreitet.

OODB haben sich bis heute noch nicht 100%ig durchgesetzt.
private Nachricht | Beiträge des Benutzers
_daniel_
myCSharp.de - Member



Dabei seit:
Beiträge: 227

beantworten | zitieren | melden

Wenn ich das bei db4o richtig verstehe, ist der interne (auch kommerzielle) Einsatz kostenlos. Erst wenn die Software außerhalb des eigenen Unternehemens eingesetzt wrid entstehen kosten.

Meiner Erfahrung nach, bringt eine Objektdatenbank je "komplizierter" ein Objekt ist immer mehr Vorteile und Geschwindigkeit.
Eine Klasse mit beispielsweise nur Name und Ort als Properties ist wohl schneller in deiner RDMBS, sobald aber die Verzweigungen immer Tiefer werden, mehrere Tabellen abgefragt werden müssen gewinntn die OODB an Geschwindigkeit.

Auch habe ich festgestellt, dass bei einer OODB die sinnvolle Setzung von indexes essentiel ist, um performante Abfragen zu haben.

Am besten du lädst dir mal db4o herunter (da du ja db4o angesprochen hast) und experimentierst etwas damit. Wichtig ist aber, dass du dich vollständig von der RDBMS welt löst und nicht mit parent IDs usw alles verknüpfen willst.
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

Die Performance wird maßgeblich über die Art des Zugriffes bestimmt. RDBMS kennen nur die Abfrage als Zugriff. OODMBS kennen dagegen IMMER den navigierenden Zugriff (Hangeln über Beziehungen). Für bestimmte Arten von Zugriffsstrukturen kann dies einen enormen Performancevorteil bieten. Der Client-Cache kann dann auch nochmal ordentlich Speed bringen. Ganz schlecht ist allerdings eine Abfrage über Navigation nachzubilden (gib mir alle Objekte vom Typ X, suche nach Kriterium Y und gehe zu Sub-Objekt). Das wird grottenlahm, weil alle Objekte zunächst vom Server zum Client übers Netzwerk müssen.

Generell kann man - wie schon von meinem Vorredner gesagt - behaupten, dass komplexe JOINS oftmals deutlich langsamer als Navigation sind. Das kann Zehnerpotenzen ausmachen.

Sofern OODMBS auch serversieitge Anfragen unterstützen (tun fast alle) bewegt man sich im Prinzip in der Welt der RDMBS. Die Performance ist dann vergleichbar.

Rein theoretisch haben daher OODMBS mehr Potential.

Aber dass sich bessere Lösung nicht immer durchsetzen hat man ja schon bei VHS und Video2000 gesehen.
private Nachricht | Beiträge des Benutzers