una pasos para online normalizar normalizacion normales normal formas forma ejemplos desnormalizar datos bases join cassandra denormalization database nosql

join - pasos - normalizacion de bases de datos ejemplos



Modelo de datos de desnormalización Cassandra (1)

"Sí" en su mayor parte, tomar un enfoque de modelado de datos basado en consultas realmente es la mejor manera de hacerlo.

  1. Esa es una buena idea, ya que la velocidad de los tiempos de consulta hace que valga la pena. Sí, hay un poco más de limpieza de la casa que hacer. No he tenido que ejecutar cientos de eliminaciones de otras familias de columnas, pero ocasionalmente hay que hacer algunas tareas de limpieza complicadas. Pero, de todos modos, no deberías estar eliminando mucho en Cassandra (antipatrón).

  2. No. Los JOINs del lado del cliente son tan malos como los JOIN distribuidos. La idea general es crear una tabla para devolver datos para cada consulta específica ... desnormalizada y / o replicada ... y, por lo tanto, anulando la necesidad de hacer un JOIN en absoluto. La excepción a esto es que si está ejecutando consultas OLAP para el análisis, puede usar una herramienta como Apache Spark para ejecutar un JOIN distribuido ad-hoc. Pero definitivamente no es algo que quieras hacer en un sistema de producción.

  3. Algunos artículos que puedo recomendar:

Leí que en nosql (cassandra por ejemplo) los datos a menudo se almacenan desnormalizados. Por ejemplo, vea esta respuesta SO o este sitio web .

Un ejemplo es si tiene una familia de empleados y departamentos de columna y desea ejecutar una consulta: select * from Emps where Birthdate = ''25/04/1975'' Luego debe hacer una familia de columna birthday_Emps y almacenar la ID de cada uno empleado como una columna. Entonces puede consultar la familia birthday_Emps para la clave ''25 / 04/1975 ''y obtener al instante todas las identificaciones de los empleados nacidos en esa fecha. Incluso puede desnormalizar los detalles del empleado en birthday_Emps también para que también tenga instantáneamente los nombres de los empleados.

¿Es esta realmente la manera de hacerlo?

  1. Siempre que se elimine o inserte a un empleado, deberá eliminar también al empleado de birthday_Emps. Y en otro ejemplo, alguien incluso dijo que a veces tiene una situación en la que una eliminación en alguna tabla requiere como 100 de eliminaciones en otras tablas. ¿Es esto realmente común de hacer?

  2. ¿Es común hacer uniones en el código de la aplicación? ¿Tiene un software que le permite crear aplicaciones pre-escritas para unir datos de diferentes consultas?

  3. ¿Existen mejores prácticas, patrones, etc. para manejar estas preguntas del modelo de datos?