Perché i database orientati agli oggetti non vengono usati tanto quanto i database relazionali? [chiuso]


18

Mi sono imbattuto in molti sistemi di gestione di database relazionali (RDBMS). Ma recentemente ho usato l'ibernazione che mi ha fatto iniziare a chiedermi perché i database orientati agli oggetti non siano più popolari.

Se i linguaggi orientati agli oggetti come Java o C # sono così popolari, perché non sono più popolari anche i sistemi di gestione dei database orientati agli oggetti (OODBMS)?


1
L'approccio "NoSQL" è estremamente popolare ora. Gli RDBMS sono limitati e limitanti e, fortunatamente, stanno perdendo rapidamente terreno.
SK-logic,

Cosa definisci oodb? ibernazione è solo un framework per comunicare con rdbms con un'interfaccia oo.
Simon Bergot,

2
Una domanda simile è stata posta nel 2009 su SO, vedi stackoverflow.com/questions/1350044/… IMHO quasi ogni risposta fornita è ancora valida oggi.
Doc Brown,

@Simon di oodb, intendo database orientati agli oggetti

1
@Simon: Versant è un oodb (ho visto in produzione in due diverse aziende).
Giorgio,

Risposte:


11

Ci sono molte ragioni.

  1. Molti sviluppatori hanno esperienza solo nella modellazione di dati relazionali. Per utilizzare i database OO, dovrebbero imparare un modo completamente diverso di modellare e pensare ai dati. Questo è davvero difficile o richiede molto tempo.
  2. I DB relazionali avevano molto tempo per maturare. Anche i DB relazionali gratuiti hanno avanzato tecniche di ottimizzazione e indicizzazione. Inoltre, i dati relazionali sono facili da archiviare e indicizzare. Non si può dire la stessa cosa dei database OO.
  3. Quando iniziarono a emergere modelli relazionali e OO. Relational aveva un enorme vantaggio sul fatto che era matematicamente "corretto" e che era standard per il salvataggio e l'interrogazione dei dati. OO non aveva nulla di simile.
  4. [speculazione] Molti grandi attori mettono molte risorse nella creazione dei loro DB relazionali. Al contrario, sarebbe controproducente supportare OO DB. Così tanti di loro hanno invece investito nell'integrazione dei principi OO nel modello relazionale, rendendo la maggior parte dei DB attuali cosiddetti oggetti relazionali. IMO questi modelli sono peggiori della pura OO relazionale o pura. [/ Speculazione]
  5. [rant] L'ultima cosa da notare è che molti sviluppatori non capiscono davvero il modo OO di modellare i dati. Questo di solito si traduce in modelli anemici non ottimali. Tante società di sviluppo, che si affidano a sviluppatori economici e inesperti, preferirebbero scegliere un modello semplice e relazionale, che viene insegnato in tutte le università CS piuttosto che scegliere un approccio OO duro e non provato. [/ Rant]

5
Sono d'accordo con tutti i tuoi punti tranne l'ultimo. Penso che sia più facile per gli sviluppatori confondere i database relazionali rispetto ai database degli oggetti. Le chiavi composte e le relazioni interrotte sono molto comuni, ma mi sembra almeno un po 'più difficile confondere una gerarchia di classi.
Tjaart,

@Tjaart rovinare le gerarchie di classi sembra essere la norma per la maggior parte degli sviluppatori in OO.
Bent

10

Quando sono comparsi i database per la prima volta, OOP non era ancora il modo di programmare. I database relazionali, d'altra parte, hanno guadagnato molta trazione. E SQL introdotto negli anni 80 da IBM divenne rapidamente lingua franca di tutti i database.

Quando OOP è diventato popolare ci sono stati alcuni tentativi, ma ci sono alcuni problemi. Innanzitutto, il vero OODBMS è davvero difficile da implementare. Nel caso di un database relazionale, una tabella e gli indici correlati sono strutture abbastanza semplici (es. Alberi B). Un'altra ragione è che c'è molta teoria dietro il modello relazionale, che deriva direttamente dalla teoria dell'insieme matematico. Esistono modi noti per progettare correttamente un database relazionale (si pensi alla normalizzazione ecc.). E, ultimo ma non meno importante, le persone si sono già abituate molto a SQL.

Le soluzioni NoSQL odierne nella maggior parte dei casi non sono in realtà un passo verso OODBMS. Molti di loro sono ancora relazionali, solo spogliati JOINs. Pochi di essi sono in realtà negozi di oggetti ma non sono realmente OODBMS, poiché non sono a conoscenza delle relazioni tra gli oggetti.

Un altro motivo per cui non esiste una spinta così forte per OODBMS è che esiste una soluzione "OODBMS per poveri" - ORM. Ciò ha guadagnato enorme popolarità, in quanto supportati da motori DB noti, stabili e testati, eppure forniscono la mappatura agli oggetti. Naturalmente, questi non sono veri OODB.


"Un altro motivo per cui non esiste una spinta così forte per OODBMS è che esiste una soluzione" OODBMS per poveri "- ORM.": Ottimo punto! +1.
Giorgio,

Non è vero. MUMPS è stato progettato nel 1966 e solo nel 1974, il primo progetto di ricerca è stato avviato da IBM per sviluppare System R, il primo RDBMS al mondo. Oracle ha rilasciato i suoi primi RDBM di livello commerciale solo nel 1979, lo stesso anno in cui InterSystems M è venuto alla luce. La domanda è cosa è successo dopo. La risposta è probabilmente che gli ODBMS non sono stati ottimizzati per il reporting, mentre la maggior parte dei casi d'uso delle applicazioni LOB presenta un forte squilibrio tra lettura e scrittura rispetto alle letture.
Alexey Zimarev,

-2

Gli OODBMS sono bravi a memorizzare dati complessi. Tuttavia, la maggior parte delle volte, anche quando si usano le lingue OO, i dati necessari sono relativamente semplici. Quindi i RDBMS tradizionali sono più adatti.


2
I dati non sono quasi mai semplici e penso che non riesca a spiegare perché OODB non sia più popolare perché dopo tutto ORM sta andando molto bene.
Tjaart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.