Ahora que los sistemas de almacenamiento "NOSQL" o "solo objetos" como MongoDB o memcached realmente están tomando impulso en el mundo. Me preguntaba si hay alguna solicitud que no se puede realizar en ellos que se puede realizar utilizando varias combinaciones de objetos (en SQL que es JOIN "table"
). En otras palabras, ¿hay consultas multi-tabla que no pueden ser manejadas por varias consultas de tabla única en una fila?Almacenamiento de objetos de datos: ¿puede la mesa JOIN hacer qué tabla única SELECT no puede?
Básicamente, ¿hay un caso de uso en el que una combinación de múltiples tablas no se puede replicar accediendo a una tabla a la vez en sistemas de almacenamiento basados en objetos?
Aquí hay algunos ejemplos de consultas normales de 3NF que usan has_man y has_many_through relationships. Estas no son las consultas más complejas, pero deberían darle un punto de partida para el concepto. Tenga en cuenta que cualquier valor en {} significa un valor del resultado de la última consulta.
empresa tiene muchos usuarios
SELECT user.*, company.name as company_name FROM user
LEFT JOIN company ON company.id = user.company_id
WHERE user.id = 4
vs
SELECT * FROM user WHERE id = 4
SELECT * FROM company WHERE id = {user.comany_id}
club tiene muchos estudiantes a través de Usuarios de
SELECT student.* FROM student LEFT JOIN membership on
membership.student_id = sudent.id WHERE membership.club_id = 5
vs
SELECT * FROM membership WHERE club.id = 5
SELECT * FROM student WHERE id = {membership.student_id}
La razón por la que me pregunto es porque quiero saber si los sistemas basados en objetos (que se basan en el acceso a los objetos de una sola mesa a la vez) pueden hacer lo RDBMS bases de datos como PostgreSQL o MySQL puede hacer.
Hasta ahora, lo único malo parece ser que son necesarias más consultas.
Esta es la mejor lista de contras que he visto para este tema. Usted señaló algunos puntos importantes que creo que han respondido a la pregunta. – Xeoncross
Digamos que he pasado 2 meses recuperando una base de código de una vinculación de ORM :-) y mientras lo hacía me tentaban otros 2 "marcos" de ORM. El rendimiento subió por el techo, el uso de la CPU cayó al suelo y se necesita ahora la estabilidad de la conexión y la puesta en común, lo que cuenta como un beneficio para la salud del programador pobre :-)) – ZXX
+1 Excelente respuesta. –