Quando os bancos de dados apareceram pela primeira vez, o OOP ainda não era o caminho para programar. Os bancos de dados relacionais, por outro lado, ganharam muita força. E o SQL introduzido nos anos 80 pela IBM rapidamente se tornou a língua franca de todos os bancos de dados.
Quando o OOP se tornou popular, houve algumas tentativas, mas existem alguns problemas. Primeiro, o OODBMS verdadeiro é realmente difícil de implementar. No caso de um banco de dados relacional, uma tabela e índices relacionados são estruturas bastante simples (por exemplo, árvores B). Outra razão é que há muita teoria por trás do modelo relacional, ela é diretamente derivada da teoria matemática dos conjuntos. Existem maneiras conhecidas de projetar corretamente um banco de dados relacional (pense em normalização etc). E por último, mas não menos importante, as pessoas já se acostumaram muito ao SQL.
As soluções NoSQL modernas na maioria dos casos não são realmente um passo em direção ao OODBMS. Muitos deles ainda são relacionais, apenas despojados JOINs
. Na verdade, poucos deles são armazenamentos de objetos, mas não são verdadeiramente OODBMS, pois não têm conhecimento das relações entre os objetos.
Ainda outra razão pela qual não há um impulso tão forte para o OODBMS é que existe a solução "OODBMS do homem pobre" - ORMs. Isso ganhou enorme popularidade, pois eles são apoiados por mecanismos de banco de dados bem conhecidos, estáveis e testados, mas fornecem o mapeamento para objetos. Obviamente, esses não são verdadeiros OODBs.