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?
Respuesta
- 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.
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? –
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. –
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
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 .
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.
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. –
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.
La simplicidad no genera superioridad por defecto ... –
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. –
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,
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 ...
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
El enlace a la gran publicación de blog de Kirk Pepperdine vale el +1 –
- 1. Objeto de solicitud, ¿cuáles son los pros y los contras?
- 2. ¿Cuáles son los pros y los contras de la UCI?
- 3. ¿Cuáles son los pros y los contras de usar Global.asax?
- 4. ¿Cuáles son los pros y los contras de Solr & ElasticSearch?
- 5. ¿Cuáles son los pros y los contras de TreeSet
- 6. ¿Cuáles son los pros y los contras de DynamoDB con respecto a otras bases de datos NoSQL?
- 7. ¿Cuáles son los pros y los contras de la eliminación y las actualizaciones en cascada?
- 8. ¿Cuáles son los pros y los contras de almacenar archivos en una base de datos?
- 9. ¿Cuáles son los pros y los contras de los submódulos de git y Repo?
- 10. ¿Cuáles son los pros y los contras de las revisiones de diseño/código?
- 11. ¿Cuáles son los pros y los contras de las diversas implementaciones de Python?
- 12. ¿Cuáles son los pros/contras de 64 bit .NET?
- 13. ¿Cuáles son los pros y los contras de los procedimientos de llamada en VB.NET?
- 14. ¿Cuáles son los pros y los contras de usar Castle Active Record vs Straight NHibernate?
- 15. ¿Cuáles son los pros y los contras de un sitio 100% HTTPS?
- 16. newid() vs newsequentialid() ¿Cuáles son las diferencias/pros y contras?
- 17. ¿Cuáles son los pros y los contras de usar componentes de diseñador de Visual Studio para los datos
- 18. ¿Cuáles son los pros y los contras de usar una enumeración de banderas?
- 19. Pros y contras de bases de datos de varios valores
- 20. ¿Cuáles son los pros y los contras de asset_packager y Jammit?
- 21. ¿Cuáles son los pros y los contras de usar un correo electrónico como nombre de usuario?
- 22. ¿Cuáles son los pros y los contras de la entrada delimitada general de Ruby? (sintaxis porcentual)
- 23. ¿Cuáles son los pros y los contras de usar una plantilla de motor como Jade?
- 24. ¿Cuáles son los pros y los contras del uso de d-punteros?
- 25. ¿Cuáles son los pros y los contras de la autentificación HTTP básica
- 26. ¿Cuáles son los pros y los contras de OleDB versus SQLClient?
- 27. ¿Cuáles son los pros y los contras para usar un contenedor de IOC?
- 28. ¿Cuáles son los pros y los contras de usar una DLL?
- 29. ¿Cuáles son los pros y los contras de HTML5 Canvas vs. SVG + Raphael.js?
- 30. ¿Cuáles son los pros y los contras de adoptar HTML 5 ahora para rediseñar un sitio?
Creo que esto debería ser un CW – Konstantinos