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)?
object-oriented
database
rdbms
Rachel
źródło
źródło
Odpowiedzi:
Istnieje wiele przyczyn.
źródło
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.
źródło
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.
źródło