2008-09-14 20 views
10

Hay mucha información disponible sobre mapeadores relacionales de objetos y sobre cómo evitar la desigualdad de impedancia, todos los cuales parecen ser puntos discutibles si uno fuera a usar una base de datos de objetos. Mi pregunta es por qué no se usa con más frecuencia? ¿Es por motivos de rendimiento o porque las bases de datos de objetos hacen que sus datos sean propiedad de su aplicación o se debe a algo más?¿Cuáles son los pros y los contras de las bases de datos de objetos?

+0

Creo que esto debería ser un CW – Konstantinos

Respuesta

11
  • Familiarity. Los administradores de bases de datos conocen conceptos relacionales; objetos, no tanto.
  • Rendimiento. Se ha comprobado que las bases de datos relacionales escalan mucho mejor.
  • Madurez. SQL es un lenguaje potente y desarrollado durante mucho tiempo.
  • Soporte de proveedor. Puede elegir entre muchas más herramientas de primera parte (servidores SQL) y de terceros (interfaces administrativas, asignaciones y otras clases de integración) que en el caso de OODBMS.

Naturalmente, el modelo orientado a objetos es más familiar para el desarrollador , y, como usted señala, evitaría a uno de ORM. Pero hasta ahora, el modelo relacional ha demostrado ser la opción más viable.

Véase también la reciente pregunta, Object Orientated vs Relational Databases.

+1

Un contraargumento de familiaridad: si persiste en los objetos que los desarrolladores están usando, ¿todavía necesita administradores de db?¿O podría contratar a más desarrolladores que puedan dividir su tiempo entre administración y desarrollo? –

+3

Un contraargumento para el rendimiento: berkeleydb; no es relacional, y puede escalar verticalmente a 256 terabytes. Memcached; no es relacional, y puede escalar horizontalmente AFAIK indefinidamente. –

+5

Un contraargumento para el vencimiento: SQL no está desarrollado por mucho tiempo. Está subdesarrollado durante mucho tiempo. Algunos dirían que C está maduro porque ha existido por mucho tiempo. Digo que C# está maduro porque es en parte el resultado de nuestras experiencias colectivas con C. – Guge

1

Contras:

  • no lo pueden utilizar programas que no utilizamos también el mismo marco para acceder al almacén de datos, lo que hace que sea más difícil para uso en todo el empresa.

  • menos recursos disponibles en línea para no basada en la base de datos SQL

  • Sin compatibilidad a través de bases de datos tipos (no se puede cambiar a otro proveedor de db sin cambiar todo el código )

  • El control de versiones es probablemente un poco perra. Supongo que agregar una nueva propiedad a un objeto no es tan fácil como como agregar una nueva columna a una tabla .

2

Una objeción a las bases de datos de objetos es que crea un estrecho acoplamiento entre los datos y su código. Para ciertas aplicaciones esto puede estar bien, pero no para otros. Una buena cosa que le ofrece una base de datos relacional es la posibilidad de poner muchas vistas en sus datos.

Ted Neward explica esto y mucho más sobre OODBMSs mucho mejor que esto.

+0

Esto es una tontería. Si no tiene este acoplamiento ajustado, obtendrá la tasa de error de RDBMS estándar de 30% de registros defectuosos. –

0

Sören

Todas las razones que indicados son válidos, pero no veo el problema con los SGBDOO es el modelo de datos lógicos.El modelo de objeto (o más bien el modelo de red de los años 70) no es tan simple como el relacional, y por lo tanto es inferior.

+0

La simplicidad no genera superioridad por defecto ... –

+0

Si ambos son igualmente potentes, y en este caso lo son, dado que el modelo relacional puede representar cualquier cosa, entonces la simplicidad es mejor. –

10

He estado usando db4o que es un OODB y resuelve la mayoría de los contras enumeran a continuación:

  • familiaridad - Los programadores conocen su lengua mejor a continuación, SQL (ver consultas nativos)
  • Rendimiento - éste es muy subjetivo, pero se puede echar un vistazo a PolePosition
  • soporte del proveedor y la madurez - puede cambiar con el tiempo
  • no lo pueden utilizar programas que no utilizamos también el mismo marco - Existen normas OODB y usted puede use different frameworks
  • El versionado es probablemente un poco perra - ¡El versionado es en realidad easier!

Los pros que me interesan son:

  • consultas nativas - Db4o le permite escribir consultas en la lengua escrita a máquina estática por lo que no tiene que preocuparse de escribir mal una cadena y la búsqueda de los datos faltantes en tiempo de ejecución,
  • Facilidad de uso - La definición de la lógica de buissiness en la capa de dominio, la capa de persistencia (mapeo) y finalmente la base de datos SQL es sin duda una violación de DRY. Con OODB defines tu dominio donde pertenece.

Estoy de acuerdo - OODB tiene un largo camino por recorrer, pero se van. Y hay problemas de dominio que están mejor resueltos por OODB,

0

jodonnel, no veo cómo el uso de las bases de datos de objetos acopla el código de la aplicación a los datos. Todavía puede abstraer su aplicación del OODB mediante el uso de un patrón Repositorio y reemplazarlo con una base de datos SQL respaldada por ORM si diseña correctamente las cosas.

Para una aplicación OO, una base de datos OO proporcionará un ajuste más natural para objetos persistentes.

Lo que probablemente sea cierto es que usted vincula sus datos a su modelo de dominio, ¡pero entonces ese es el quid!

¿No sería bueno tener una única forma de ver los datos, las reglas de negocio y los procesos utilizando una vista centrada en el dominio?

Entonces, un gran profesional es que un OODB coincide con la forma en que se diseñan las aplicaciones de software orientadas a objetos más modernas, no hay un esfuerzo adicional para diseñar una capa de datos usando un diseño diferente (relacional). Más barato para construir y mantener, y en muchos casos un mayor rendimiento general.

Contras, solo falta general de la madurez y la adopción pero reconozco ...

2

No tiene nada que ver con el rendimiento. Es decir, básicamente, todas las aplicaciones funcionarían mejor con un OODB. Pero eso también dejaría a muchos DBA sin trabajo/teniendo que aprender una nueva tecnología. Aún más personas estarían sin trabajo corrigiendo errores en los datos. Es poco probable que los OODB sean populares entre las compañías establecidas. Gavin parece no tener ni idea, un mejor enlace sería Kirk

+0

El enlace a la gran publicación de blog de Kirk Pepperdine vale el +1 –

Cuestiones relacionadas