Il problema più grande che ho riscontrato è la mancanza di standardizzazione. Nel mondo RDBMS, se si conosce SQL, è possibile ottenere molto lontano con qualsiasi database casuale. Fondamentalmente tutti lo implementano, con variazioni minori. Non conosco un singolo RDBMS esistente che non faccia SQL: puoi quasi usare "RDBMS" e "SQL" in modo intercambiabile.
La cosa più vicina a un OODBMS è forse OQL, che è stato un completo fallimento.
Nessun database ha mai implementato gran parte di esso. Ho usato un OODBMS commerciale abbastanza carino un paio di anni fa, ma (dal 2007 o giù di lì, ed era nella versione principale 8 o 9) non supportava nemmeno l'interrogazione di un oggetto con il suo nome. Il manuale diceva semplicemente che questa parte di OQL non era ancora arrivata. (Non sono sicuro, ma potresti essere stato in grado di entrare in una chiamata nativa per farlo.)
La maggior parte dei database di oggetti che ho visto di recente hanno interfacce in linguaggio nativo piuttosto che un linguaggio di query come OQL. Il sistema che ho usato, per esempio, supportava (solo!) Perl e VB, IIRC. Limitare il pubblico a solo un paio di lingue (o costringerlo a scrivere involucri, come abbiamo fatto noi) non è il modo di conquistare gli amici.
Per questo motivo, non c'è concorrenza, e quindi nessun piano di backup facile. Se metti i tuoi dati in MS-SQL e Microsoft smette di supportarli, puoi probabilmente scaricare i tuoi dati in Postgres e portare le tue query, senza troppi problemi. (Potrebbe essere un sacco di lavoro, se hai un sacco di domande, ma non dubito che potresti farlo. È un dolore, ma non tecnicamente impegnativo.) O Oracle, o MySQL, o molti altri, entrambi commerciali e libero.
Non esiste una cosa simile con un OODBMS: se quello che stai usando va a pancia in su, o lo portano in una direzione che non ti è utile, o trovi che manca una caratteristica chiave di cui hai bisogno, puoi semplicemente scaricare i tuoi dati in un OODBMS concorrente e portare le tue domande. Invece, stai parlando di cambiare una libreria di base e fare enormi cambiamenti di architettura. Quindi realisticamente, sei limitato a un OODBMS commerciale di cui ti fidi davvero (puoi nominarne anche uno?) O un OODBMS open source di cui ti fidi a mantenere il team quando le cose vanno male.
Se questo suona come FUD, scusa, non intendevo quello. Ma sono stato lì, e dal punto di vista della gestione del progetto ho esitato a tornare indietro, anche se l'ambiente di programmazione può essere meraviglioso. Un altro modo per pensarci è: guarda come è popolare la programmazione funzionale oggi, nonostante sia una buona idea. OODBMS sono così, ma peggio, dal momento che non è solo il tuo codice, ma il tuo codice e i tuoi dati. Sarei felice di iniziare un importante progetto a Erlang oggi, ma esiterei comunque a utilizzare un OODBMS.
venditori OODBMS: per modificare questo, è necessario make it easy to leave you for your competitors. Si può scavare OQL e implementarlo, oppure farlo a livello di API come ODBC, o qualsiasi altra cosa. Anche un formato di dump standard (usando JSON?) E strumenti per l'importazione/esportazione da/per quello per diversi OODBMS, sarebbe un ottimo inizio.
"Se non è rotto non cambiarlo" è così stupido ... perché sta facendo qualcosa di meglio, o lo sviluppo di un software più veloce è una cosa negativa. Il mio ultimo computer non era rotto quando l'ho cambiato, è stato solo LENTO !!!!Sforzarsi per soluzioni migliori e più efficienti è il mio obiettivo come sviluppatore. – billy