Por que os bancos de dados orientados a objetos não são usados ​​tanto quanto os bancos de dados relacionais? [fechadas]

18

Encontrei muitos sistemas de gerenciamento de banco de dados relacional (RDBMS). Mas recentemente usei o hibernate, o que me fez começar a pensar por que os bancos de dados orientados a objetos não são mais populares.

Se linguagens orientadas a objetos como Java ou C # são tão populares, por que os sistemas de gerenciamento de banco de dados orientados a objetos (OODBMS) também não são mais populares?

Rachel
fonte
1
A abordagem "NoSQL" é extremamente popular agora. Os RDBMSs são limitados e limitantes e, felizmente, estão perdendo terreno rapidamente.
SK-logic
O que você chama de oodb? O hibernate é apenas uma estrutura para se comunicar com rdbms com uma interface oo.
Simon Bergot 3/12/12
2
Pergunta semelhante foi feita em 2009 no SO, consulte stackoverflow.com/questions/1350044/… IMHO quase todas as respostas dadas ainda são válidas hoje.
Doc Brown
@Simon by oodb, refiro-me a bancos de dados orientados a objetos
1
@ Simon: Versant é um oodb (eu já vi na produção em duas empresas diferentes).
Giorgio

Respostas:

11

Existem várias razões.

  1. Muitos desenvolvedores são experientes apenas na modelagem de dados relacionais. Para usar bancos de dados OO, eles precisariam aprender uma maneira completamente diferente de modelar e pensar em dados. Isso é realmente difícil ou consome muito tempo.
  2. Os bancos de dados relacionais tiveram muito tempo para amadurecer. Até os bancos de dados relacionais gratuitos têm técnicas avançadas de otimização e indexação. Além disso, os dados relacionais são fáceis de armazenar e indexar. O mesmo não pode ser dito sobre os bancos de dados OO.
  3. Quando os modelos relacionais e OO começaram a surgir. A Relational tinha uma enorme vantagem de ser matematicamente "correta" e tinha o padrão para salvar e consultar dados. OO não tinha nada do tipo.
  4. [especulação] Muitos grandes jogadores investem muitos recursos na criação de seus DBs relacionais. Seria contraproducente oferecer suporte a OO DBs. Muitos deles investiram na integração dos princípios de OO no modelo relacional, tornando a maioria dos DBs atuais denominados objeto-relacional. Na IMO, esses modelos são piores que OO puramente relacionais ou puros.
  5. A última coisa a se notar é que muitos desenvolvedores realmente não entendem a maneira OO de modelar dados. Isso geralmente resulta em modelos anêmicos abaixo do ideal. Tantas empresas de desenvolvimento, que dependem de desenvolvedores baratos e inexperientes, preferem escolher um modelo relacional simples, ensinado em todas as faculdades de CS, do que optar por uma abordagem de OO difícil e não comprovada.
Eufórico
fonte
5
Eu concordo com todos os seus pontos, exceto o último. Eu acho que é mais fácil para os desenvolvedores bagunçar os bancos de dados relacionais do que os bancos de dados de objetos. Chaves compostas e relacionamentos desfeitos são muito comuns, mas me parece pelo menos um pouco mais difícil bagunçar uma hierarquia de classes.
Tjaart 3/12/12
@Tjaart bagunçar hierarquias de classe parece ser a norma para a maioria dos desenvolvedores em OO.
Bent
10

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.

vartec
fonte
"Ainda outra razão pela qual não há um impulso tão forte para o OODBMS é que existe a solução" OODBMS do pobre homem - ORMs. ": Muito bom ponto! +1.
Giorgio
Isso não é verdade. O MUMPS foi projetado em 1966 e somente em 1974, o primeiro projeto de pesquisa foi iniciado pela IBM para desenvolver o System R, o primeiro RDBMS do mundo. A Oracle só lançou seus RDBMs de primeira classe no mundo em 1979, no mesmo ano em que o InterSystems M veio à tona. A questão é o que aconteceu depois disso. A resposta é provavelmente que os ODBMS não foram otimizados para geração de relatórios, enquanto a maioria dos casos de uso de aplicativos LOB apresenta um grande desequilíbrio entre leitura e gravação em relação às leituras.
Alexey Zimarev 04/11
-2

Os OODBMS são bons em armazenar dados complexos. No entanto, na maioria das vezes, mesmo ao usar linguagens OO, os dados necessários são relativamente simples. Portanto, o RDBMS tradicional é mais adequado.

Pieter B
fonte
2
Os dados quase nunca são simples, e acho que você falha em explicar por que o OODB não é mais popular porque, afinal, o ORM está indo muito bem.
Tjaart 3/12/12