Das größte Problem, das ich gesehen habe, ist der Mangel an Standardisierung. In der RDBMS-Welt kann man mit jeder beliebigen Datenbank ziemlich weit kommen, wenn man SQL kennt. Sie implementieren es im Grunde alle mit kleinen Abweichungen. Ich kenne kein einziges existierendes RDBMS, das nicht mit SQL arbeitet: Sie können "RDBMS" und "SQL" fast synonym verwenden.
Die nächste Sache für ein OODBMS ist vielleicht OQL, was ein völliger Fehler war.
Keine Datenbank hat jemals sehr viel davon implementiert. Ich habe vor ein paar Jahren ein ziemlich nettes kommerzielles OODBMS verwendet, aber es hat (ab 2007 oder so, und es war in der Hauptversion 8 oder 9) nicht einmal die Abfrage eines Objekts nach seinem Namen unterstützt. Das Handbuch sagte einfach, dass sie diesen Teil von OQL noch nicht erreicht hatten. (Ich bin mir nicht sicher, aber Sie könnten in einen nativen Anruf um dies zu tun haben).
Die meisten Objektdatenbanken, die ich kürzlich gesehen habe, haben native Sprachschnittstellen und keine Abfragesprache wie OQL. Das System, das ich verwendete, unterstützte zum Beispiel (nur!) Perl und VB, IIRC. Wenn Sie Ihre Zielgruppe auf nur ein paar Sprachen beschränken (oder sie zwingen, Wrapper zu schreiben, wie wir es getan haben), ist das nicht der Weg, Freunde zu gewinnen.
Aus diesem Grund gibt es keine Konkurrenz und daher keinen einfachen Backup-Plan. Wenn Sie Ihre Daten in MS-SQL ablegen und Microsoft diese nicht mehr unterstützt, können Sie Ihre Daten wahrscheinlich ohne Probleme in Postgres übertragen und Ihre Abfragen portieren. (Es könnte eine Menge Arbeit sein, wenn Sie viele Fragen haben, aber ich zweifle nicht, dass Sie es tun könnten. Es ist ein Schmerz, aber keine technische Herausforderung.) Oder Oracle oder MySQL oder viele andere, beide kommerziell und frei.
So etwas gibt es bei einem OODBMS nicht: Wenn das, was du benutzt, bleach-up geht oder es in eine Richtung führt, die dir nicht nützt, oder du findest, dass es eine wichtige Funktion fehlt, kannst du Töte deine Daten nicht einfach in einem konkurrierenden OODBMS und portiere deine Anfragen. Sie sprechen stattdessen davon, eine Kernbibliothek zu ändern und massive Architekturänderungen vorzunehmen. Sie sind also realistisch auf ein kommerzielles OODBMS beschränkt, dem Sie wirklich vertrauen (können Sie auch nur eins nennen?), Oder auf ein Open-Source-OODBMS, dem Sie vertrauen, dass Ihr Team es bei schlechtem Zustand erhält.
Wenn das klingt wie FUD, sorry, ich hatte nicht die Absicht. Aber ich war dort und aus Sicht des Projektmanagements zögere ich zurückzugehen, obwohl die Programmierumgebung wunderbar sein kann. Eine andere Art, darüber nachzudenken, ist: Schau dir an, wie populär funktionale Programmierung heute ist, obwohl es eine gute Idee ist. OODBMS sind so, aber schlimmer, da es nicht nur dein Code ist, sondern dein Code und deine Daten. Ich würde heute gern ein größeres Projekt in Erlang beginnen, aber ich würde immer noch zögern, ein OODBMS zu verwenden.
OODBMS-Anbieter: Um dies zu ändern, müssen Sie make it easy to leave you for your competitors. Sie könnten OQL ausgraben und das tatsächlich implementieren, oder Sie tun es auf der API-Ebene wie ODBC oder was auch immer. Sogar ein Standard-Dump-Format (mit JSON?) Und Tools für den Import/Export von/für mehrere OODBMS, wäre ein guter Anfang.
"Wenn es nicht kaputt ist, ändern Sie es nicht" ist so dumm ... warum macht etwas besser, oder die Entwicklung von Software schneller eine schlechte Sache. Mein letzter Computer war nicht kaputt, als ich ihn änderte, es war einfach LANGSAM !!!Das Streben nach besseren, effizienteren Lösungen ist mein Ziel als Entwickler. – billy