Diseño de esquemas y modelos de datos escalables — normalización, desnormalización y modelos por acceso

Buen diseño y mal diseño de esquemas

El diseño de esquemas de datos es la decisión arquitectónica más duradera y costosa de modificar en cualquier plataforma. Este capítulo desmitifica el dilema normalización vs desnormalización, proporcionando criterios cuantitativos basados en patrones de acceso reales, no en dogmas académicos.
Aprenderás cuándo y cómo aplicar particionado, sharding e índices estratégicos para escalar sin re-arquitecturas dolorosas. Incluye un caso real donde el rediseño basado en patrones de acceso redujo la latencia de 2.3s a 180ms (92% de mejora) y los costes de infraestructura en 48%, junto con checklists operativos, antipatrones documentados y frameworks de decisión para CIOs, arquitectos e ingenieros que necesitan que sus sistemas escalen sin colapsar..

Panorama actual de motores de datos: RDBMS, NewSQL, NoSQL, series temporales, grafos , grafos y su lugar en la arquitectura

Panorama actual de motores de datos

La elección del motor de datos correcto puede suponer la diferencia entre una arquitectura que escala con elegancia y un cuello de botella perpetuo de 2 millones de euros anuales. Este capítulo desmitifica el zoo de bases de datos modernas y ofrece un marco de decisión práctico basado en patrones de acceso, no en tendencias tecnológicas..

UPDATE with JOIN in ORACLE

Suppose we want to update in our ORACLE database the costs fields of the fact table FAC_TABLE with the unit cost of our table COSTS.

We can do this in two ways:

1. (Slow, but valid for a few data or to sporadic uses)

update FAC_TABLE ft  set UNIT_COST = (select distinct UNIT_COST from COSTS ct  where (ft.id_article = ct.id_article);

2. (The best way is this, and the performance is ideal if you have constraints)

UPDATE ( SELECT ft.UNIT_COST AS old_cost,  ct.UNIT_COST AS new_cost FROM FAC_TABLE ft  INNER JOIN COSTS ct ON ft.id_article ct = ct.id_article) )  SET old_cost = new_cost;

To the proper functionality of this second option you need a UNIQUE or PRIMARY KEY constraint on ct.id_articulo. 
If you don't have this constraint, you can use the hint / * + BYPASS_UJVC * / after the word UPDATE (Bypass update join view constraint).

The performance increase if we have the constraint but even without it, the second option should run quite faster than the first option.

 

Libros de Bases de Datos gratuitos

Estimados,

 

este post es para recopilar links de dos buenos libros de bases de datos, en ambos casos gratuitos, el primero se trata de uno que se utiliza en la Universidad Oberta de Catalunya como bibliografía del Master de 'Programari Lliure' (en español) sobre Software de Libre Distribución, copio el índice que además contiene un vínculo desde donde se puede descargar cada capítulo. (Fuente: dataprix.com), en el segundo caso se trata de un libro publicado por IBM (en inglés por ahora) "Database fundamentals", del cual también adjunto el índice.

 

Mis referencias:

con respecto al libro de la UOC, que decir, es excelente y particularmente, desde hace 2 años, lo utilizo como libro principal en la materia Bases de Datos 1 que se dicta en el Instituto Universitario Aeronáutico, de la cual soy docente titular. Está escrito en lenguaje sencillo, con  variada práctica y muy buenos ejemplos.