Perché i database orientati agli oggetti non sono utilizzati tanto quanto i database relazionali? [chiuso]

16

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 sono più popolari.

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

    
posta Rachel 03.12.2012 - 11:38
fonte

3 risposte

11

Ci sono molti motivi.

  1. Molti sviluppatori hanno esperienza solo nella modellazione dei dati relazionali. Per utilizzare i database OO, avrebbero bisogno di apprendere un modo completamente diverso di modellare e pensare ai dati. Questo è davvero difficile o richiede molto tempo.
  2. I DB relazionali hanno avuto molto tempo per maturare. Anche i DB relazionali gratuiti hanno avanzate tecniche di ottimizzazione e indicizzazione. Inoltre, i dati relazionali sono facili da memorizzare e indicizzare. La stessa cosa non può essere detta sui database OO.
  3. Quando i modelli relazionali e OO hanno iniziato a emergere. Relazionale ha avuto un vantaggio enorme dal punto di vista matematico "corretto" e aveva lo standard per il salvataggio e l'interrogazione dei dati. OO non aveva nulla da ordinare.
  4. [speculazione] Molti grandi giocatori mettono molte risorse nel creare i propri DB relazionali. Sarebbe invece controproducente supportare i DB OO. Così molti di loro hanno invece investito nell'integrazione dei principi OO in un modello relazionale, rendendo la maggior parte degli attuali DB cosiddetti object-relazionali. IMO questi modelli sono peggiori del puro OO relazionale o puro [/ speculazione]
  5. [rant] L'ultima cosa da notare è che molti sviluppatori non capiscono il modo OO di modellare i dati. Questo di solito si traduce in modelli anemici subottimali. Così molte società di sviluppo, che si affidano a sviluppatori poco costosi e inesperti, preferiscono scegliere un modello semplice e relazionale, che viene insegnato in tutte le università CS piuttosto che scegliere un approccio OO difficile e non provato. [/ Rant]
risposta data 03.12.2012 - 12:21
fonte
9

Quando i database sono apparsi per la prima volta, OOP non era ancora il modo di programmare. I database relazionali, d'altra parte, hanno guadagnato molta trazione. E l'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. Primo, il vero OODBMS è davvero difficile da implementare. Nel caso di un database relazionale, una tabella e gli indici correlati sono strutture abbastanza semplici (ad esempio alberi B). Un'altra ragione è che c'è molta teoria dietro il modello relazionale, derivata direttamente dalla teoria degli insiemi matematici. Esistono metodi noti per progettare correttamente un database relazionale (si pensi alla normalizzazione, ecc.). E, ultimo ma non meno importante, le persone si sono già abituate a SQL molto.

Le soluzioni NoSQL moderne nella maggior parte dei casi non rappresentano un vero passo avanti verso OODBMS. Molti di loro sono ancora relazionali, solo spogliati di JOINs . Pochi di loro sono in realtà negozi di oggetti ma non sono veramente OODBMS, in quanto non sono a conoscenza delle relazioni tra gli oggetti.

Ancora un altro motivo per cui non c'è una spinta così strong per OODBMS è che ci sia la soluzione "OODBMS dei poveri" - ORM. Questo ha guadagnato enorme popolarità, poiché sono supportati da motori DB ben noti, stabili e testati, eppure forniscono la mappatura degli oggetti. Naturalmente, questi non sono veri OODB.

    
risposta data 03.12.2012 - 12:38
fonte
-2

Gli OODBMS sono in grado di memorizzare dati complessi. Tuttavia, la maggior parte delle volte, anche quando si utilizzano i linguaggi OO, i dati necessari sono relativamente semplici. Quindi gli RDBMS tradizionali sono più adatti.

    
risposta data 03.12.2012 - 11:58
fonte

Leggi altre domande sui tag