¿Por qué las bases de datos orientadas a objetos no se usan tanto como las bases de datos relacionales? [cerrado]

18

Me he encontrado con muchos sistemas de gestión de bases de datos relacionales (RDBMS). Pero recientemente utilicé hibernate, lo que me hizo preguntarme por qué las bases de datos orientadas a objetos no son más populares.

Si los lenguajes orientados a objetos como Java o C # son tan populares, ¿por qué los sistemas de administración de bases de datos orientados a objetos (OODBMS) tampoco son más populares?

Rachel
fuente
1
El enfoque "NoSQL" es extremadamente popular ahora. Los RDBMS son limitados y limitantes y, afortunadamente, están perdiendo terreno ahora rápidamente.
SK-logic
¿A qué te refieres como oodb? hibernate es solo un marco para comunicarse con rdbms con una interfaz oo.
Simon Bergot
2
Se hizo una pregunta similar en 2009 sobre SO, consulte stackoverflow.com/questions/1350044/… En mi humilde opinión, casi todas las respuestas dadas todavía son válidas hoy.
Doc Brown,
@Simon por oodb, me refiero a bases de datos orientadas a objetos
1
@ Simon: Versant es un oodb (lo he visto en producción en dos compañías diferentes).
Giorgio

Respuestas:

11

Hay múltiples razones

  1. Muchos desarrolladores solo tienen experiencia en modelado de datos relacionales. Para usar las bases de datos OO, tendrían que aprender una forma completamente diferente de modelar y pensar sobre los datos. Esto es realmente difícil o consume mucho tiempo.
  2. Las bases de datos relacionales tuvieron mucho tiempo para madurar. Incluso las bases de datos relacionales gratuitas tienen técnicas avanzadas de optimización e indexación. Además, los datos relacionales son fáciles de almacenar e indexar. No se puede decir lo mismo de las bases de datos OO.
  3. Cuando comenzaron a surgir modelos relacionales y OO. Relacional tenía una gran ventaja de que era matemáticamente "correcto" y tenía su estándar para guardar y consultar datos. OO no tenía nada de eso.
  4. [especulación] Muchos grandes jugadores ponen muchos recursos en hacer sus bases de datos relacionales. Sería contraproducente admitir DB OO en su lugar. Muchos de ellos invirtieron en la integración de los principios de OO en el modelo relacional, haciendo que la mayoría de las bases de datos actuales se denominen objeto-relacionales. En mi opinión, estos modelos son peores que los OO puramente relacionales o puros. [/ Especulación]
  5. [rant] Lo último a tener en cuenta es que muchos desarrolladores realmente no entienden la forma OO de modelar datos. Esto generalmente resulta en modelos anómicos subóptimos. Muchas empresas de desarrollo, que confían en desarrolladores baratos e inexpertos, prefieren elegir un modelo simple y relacional, que se enseña en todas las universidades de CS, que elegir un enfoque OO difícil y no probado. [/ Rant]
Eufórico
fuente
55
Estoy de acuerdo con todos sus puntos, excepto el último. Creo que es mucho más fácil para los desarrolladores confundir las bases de datos relacionales que las bases de datos de objetos. Las claves compuestas y las relaciones rotas son muy comunes, pero me parece al menos un poco más difícil confundir una jerarquía de clases.
Tjaart
@Tjaart desordenar las jerarquías de clases parece ser la norma para la mayoría de los desarrolladores en OO.
Doblado
10

Cuando aparecieron las bases de datos, OOP todavía no era la forma de programar. Las bases de datos relacionales, por otro lado, ganaron mucha tracción. Y el SQL introducido en los años 80 por IBM rápidamente se convirtió en la lengua franca de todas las bases de datos.

Cuando OOP se hizo popular hubo algunos intentos, pero hay algunos problemas. Primero, el verdadero OODBMS es realmente difícil de implementar. En el caso de una base de datos relacional, una tabla y los índices relacionados son estructuras bastante simples (por ejemplo, árboles B). Otra razón es que hay mucha teoría detrás del modelo relacional, se deriva directamente de la teoría matemática de conjuntos. Existen formas conocidas de diseñar correctamente una base de datos relacional (piense en la normalización, etc.). Y por último, pero no menos importante, la gente ya se acostumbró mucho a SQL.

Las soluciones modernas de NoSQL en la mayoría de los casos no son realmente un paso hacia OODBMS. Muchos de ellos todavía son relacionales, solo despojados JOINs. De hecho, pocos de ellos son almacenes de objetos, pero no son realmente OODBMS, ya que no son conscientes de las relaciones entre los objetos.

Otra razón por la cual no existe un impulso tan fuerte para OODBMS es que existe la solución "OODBMS de los pobres": ORM. Esto ha ganado una gran popularidad, ya que están respaldados por motores de base de datos conocidos, estables y probados, pero proporcionan la asignación a los objetos. Por supuesto, estos no son verdaderos OODB.

vartec
fuente
"Otra razón por la cual no existe un impulso tan fuerte para OODBMS es que existe una solución" OODBMS de pobres ": ORM": ¡Muy buen punto! +1.
Giorgio
Eso no es cierto. MUMPS fue diseñado en 1966 y solo en 1974, IBM inició el primer proyecto de investigación para desarrollar el System R, el primer RDBMS del mundo. Oracle solo lanzó sus primeros RDBM de grado comercial en 1979, el mismo año en que InterSystems M salió a la luz. La pregunta es qué pasó después de eso. La respuesta es probablemente que los ODBMS no estaban optimizados para la presentación de informes, mientras que la mayoría de los casos de uso de las aplicaciones LOB tienen un gran desequilibrio de lectura-escritura hacia las lecturas.
Alexey Zimarev el
-2

OODBMS son buenos para almacenar datos complejos. Sin embargo, la mayoría de las veces, incluso cuando se usan lenguajes OO, los datos necesarios son relativamente simples. Por lo tanto, los RDBMS tradicionales son más adecuados.

Pieter B
fuente
2
Los datos casi nunca son simples, y creo que no puede explicar por qué OODB no es más popular porque, después de todo, a ORM le está yendo muy bien.
Tjaart