Dlaczego bazy danych zorientowanych obiektowo nie są wykorzystywane tak często, jak relacyjne bazy danych? [Zamknięte]

18

Natknąłem się na wiele systemów zarządzania relacyjnymi bazami danych (RDBMS). Ale ostatnio użyłem hibernacji, co sprawiło, że zacząłem się zastanawiać, dlaczego bazy danych zorientowane obiektowo nie są bardziej popularne.

Jeśli języki zorientowane obiektowo, takie jak Java lub C #, są tak popularne, to dlaczego nie są również bardziej zorientowane obiektowo systemy zarządzania bazami danych (OODBMS)?

Rachel
źródło
1
Podejście „NoSQL” jest obecnie niezwykle popularne. RDBMS są ograniczone i ograniczające i, na szczęście, szybko tracą swoją pozycję.
SK-logic
Co nazywacie oodb? hibernacja to tylko platforma do komunikacji z rdbms za pomocą interfejsu oo.
Simon Bergot,
2
Podobne pytanie zostało zadane w 2009 roku na SO, patrz stackoverflow.com/questions/1350044/... IMHO prawie każda udzielona odpowiedź jest nadal aktualna.
Doc Brown,
@ Simon autorstwa oodb, mam na myśli obiektowe bazy danych
1
@ Simon: Versant to oodb (widziałem w produkcji w dwóch różnych firmach).
Giorgio

Odpowiedzi:

11

Istnieje wiele przyczyn.

  1. Wielu programistów ma doświadczenie tylko w relacyjnym modelowaniu danych. Aby korzystać z baz danych OO, musieliby nauczyć się zupełnie innego sposobu modelowania i myślenia o danych. Jest to albo bardzo trudne, albo dość czasochłonne.
  2. Relacyjne bazy danych miały dużo czasu na dojrzewanie. Nawet darmowe relacyjne bazy danych mają zaawansowane techniki optymalizacji i indeksowania. Ponadto dane relacyjne są łatwe do przechowywania i indeksowania. Tego samego nie można powiedzieć o bazach danych OO.
  3. Kiedy zaczęły pojawiać się modele relacyjne i OO. Relacyjny miał ogromną przewagę, że był matematycznie „poprawny” i miał swój standard zapisywania i odpytywania danych. OO nie miał nic w tym rodzaju.
  4. [spekulacja] Wielu dużych graczy wkłada wiele zasobów w tworzenie swoich relacyjnych baz danych. Zamiast tego wspieranie OO DB byłoby bezproduktywne. Tak wielu z nich zainwestowało w zintegrowanie zasad OO w model relacyjny, dzięki czemu większość obecnych DB jest tak zwana relacyjno-obiektowa. IMO te modele są gorsze niż czysty relacyjny lub czysty OO. [/ Spekulacja]
  5. [rant] Na koniec należy zauważyć, że wielu programistów tak naprawdę nie rozumie sposobu OO modelowania danych. Zwykle skutkuje to nieoptymalnymi modelami anemicznymi. Tak wiele firm deweloperskich, które polegają na tanich i niedoświadczonych programistach, woli wybrać prosty, relacyjny model, który jest nauczany we wszystkich szkołach CS, niż wybrać twarde i niesprawdzone podejście OO. [/ Rant]
Euforyk
źródło
5
Zgadzam się ze wszystkimi twoimi punktami oprócz ostatniego. Myślę, że dla programistów łatwiej jest popsuć relacyjne bazy danych niż obiekty obiektowe. Złożone klucze i zerwane relacje są bardzo powszechne, ale wydaje mi się, że trochę trudniej jest zepsuć hierarchię klas.
Tjaart,
@ Tjaart psuje hierarchie klas wydaje się być normą dla większości programistów w OO.
Wygięty
10

Kiedy bazy danych pojawiły się po raz pierwszy, OOP wciąż nie był sposobem na programowanie. Z drugiej strony relacyjne bazy danych zyskały dużą przyczepność. A SQL wprowadzony w latach 80-tych przez IBM szybko stał się lingua franca wszystkich baz danych.

Kiedy OOP stało się popularne, były pewne próby, ale są pewne problemy. Po pierwsze, prawdziwe OODBMS jest naprawdę trudne do wdrożenia. W przypadku relacyjnej bazy danych tabela i powiązane indeksy są dość prostymi strukturami (np. B-drzewa). Innym powodem jest to, że za modelem relacyjnym kryje się wiele teorii, wywodzących się bezpośrednio z matematycznej teorii zbiorów. Znane są sposoby prawidłowego zaprojektowania relacyjnej bazy danych (pomyśl normalizację itp.). I wreszcie ludzie już przywykli do SQL.

Współczesne rozwiązania NoSQL w większości przypadków nie są tak naprawdę krokiem w kierunku OODBMS. Wiele z nich jest nadal relacyjnych, tylko pozbawionych JOINs. Niewiele z nich jest w rzeczywistości magazynami obiektów, ale tak naprawdę nie są OODBMS, ponieważ nie są świadomi relacji między obiektami.

Jeszcze innym powodem, dla którego OODBMS nie ma tak silnego nacisku, jest to, że istnieje rozwiązanie OODBMS „biedaka” - ORM. To zyskało ogromną popularność, ponieważ są wspierane przez dobrze znane, stabilne i przetestowane silniki DB, ale zapewniają mapowanie do obiektów. Oczywiście nie są to prawdziwe OODB.

vartec
źródło
„Kolejnym powodem, dla którego OODBMS nie jest tak silny, jest to, że istnieje rozwiązanie OODBMS„ biedaka ”- ORM.”: Bardzo dobra uwaga! +1.
Giorgio
To nieprawda. MUMPS został zaprojektowany w 1966 r. I dopiero w 1974 r. IBM rozpoczął pierwszy projekt badawczy w celu opracowania System R, pierwszego na świecie RDBMS. Firma Oracle wypuściła swoje pierwsze na świecie komercyjne RDBM dopiero w 1979 roku, w tym samym roku, w którym pojawiła się InterSystems M. Pytanie brzmi, co się potem wydarzyło. Odpowiedź jest prawdopodobnie taka, że ​​ODBMS nie zostały zoptymalizowane do raportowania, podczas gdy większość przypadków użycia aplikacji LOB ma duży brak równowagi w odczycie i zapisie w stosunku do odczytu.
Aleksiej Zimariew
-2

OODBMS są dobre w przechowywaniu złożonych danych. Jednak przez większość czasu, nawet przy użyciu języków OO, potrzebne dane są stosunkowo proste. Tak więc tradycyjne RDBMS są bardziej odpowiednie.

Pieter B.
źródło
2
Dane prawie nigdy nie są proste i myślę, że nie wyjaśniasz, dlaczego OODB nie jest bardziej popularny, ponieważ w końcu ORM ma się bardzo dobrze.
Tjaart,