La discordancia de impedancia relacional de objeto
El “desajuste de impedancia relacional de objeto” (a veces llamado “desajuste de paradigma”) es solo una forma elegante de decir que los modelos de objeto y los modelos relacionales no funcionan muy bien juntos. Los RDBMS representan datos en formato tabular (una hoja de cálculo es una buena visualización para aquellos que no están familiarizados con los RDBMS), mientras que los lenguajes orientados a objetos, como Java, lo representan como un gráfico interconectado de objetos. Cargar y almacenar gráficos de objetos usando una base de datos relacional tabular nos expone a 5 problemas de desajuste …
Granularidad
- ¿Cuál es la mejor ciudad para moverse entre Ciudad del Cabo y Johannesburgo para un profesional de TI (desarrollador de software)?
- ¿Por qué se considera bueno ser un desarrollador de software obstinado?
- ¿Cuál es la mejor manera para que un ingeniero / programador de software nuevo / principiante descubra las mejores bibliotecas, API, marcos, etc. necesarios para el trabajo?
- ¿Qué sugeriría que un ingeniero de software mediocre debería hacer para ser un experto en algo (tecnología, plataforma o lenguaje)?
- ¿Cuáles son algunas cosas que necesito saber si quiero convertirme en desarrollador de software / informático?
A veces tendrá un modelo de objetos que tiene más clases que el número de tablas correspondientes en la base de datos (decimos que el modelo de objetos es más granular que el modelo relacional). Tomemos como ejemplo la noción de una dirección …
Subtipos (herencia)
La herencia es un paradigma natural en los lenguajes de programación orientados a objetos. Sin embargo, los RDBMS no definen nada similar en general (sí, algunas bases de datos tienen soporte de subtipo pero no está completamente estandarizado) …
Identidad
Un RDBMS define exactamente una noción de ‘igualdad’: la clave primaria. Sin embargo, el lenguaje OOP, por ejemplo, Java, define la identidad del objeto a==b
igualdad del objeto a.equals(b)
.
Asociaciones
Las asociaciones se representan como referencias unidireccionales en lenguajes orientados a objetos, mientras que los RDBMS utilizan la noción de claves foráneas. Si necesita relaciones bidireccionales en Java, debe definir la asociación dos veces.
Del mismo modo, no puede determinar la multiplicidad de una relación mirando el modelo de dominio de objeto.
Navegación de datos
La forma en que accede a los datos en el lenguaje OOP, por ejemplo, Java, es fundamentalmente diferente de la forma en que lo hace en una base de datos relacional. En Java, navegas de una asociación a otra recorriendo la red de objetos.
Esta no es una forma eficiente de recuperar datos de una base de datos relacional. Por lo general, desea minimizar el número de consultas SQL y, por lo tanto, cargar varias entidades a través de JOIN y seleccionar las entidades objetivo antes de comenzar a recorrer la red de objetos.