Un viaje en el tiempo Leonel Abreu https://www.linkedin.com/in/leonel-abreu/ leonel.abreu@gmail.com Un viaje en el tiempo
BIG Thanks to SQLSatMadrid sponsors
Agenda ¿Que es una tabla temporal? Son útiles para Como implementarlas Ventajas y como utilizarlas Son útiles para Efectos de auditoria Disaster Recovery Análisis de Datos Como implementarlas Escenario y demo
Que es una tabla temporal? Tambien System Versioned Mantienen cambios Solamente un par de columnas mas Para definer períodos También una segunda tabla La que contendrá la historia
Ventajas Seguridad Fácil de mantener Puede ser utilizada No es possible hacer cambios en los históricos Fácil de mantener Porque no se require codificación adicional Puede ser utilizada En tablas nuevas En tablas existentes
¿Por qué utilizarlas? Auditoria Viaje en el tiempo Recovery Se guardan los registros que sufren cambios Viaje en el tiempo Estado de los datos tal como estaban en el pasado Recovery Cambios accidentales como DELETE no deseados
¿Por qué utilizarlas? Cálculos También BI Esquema incluido Tendencias en el tiempo También BI Porque pueden ser utilizadas como SCD Esquema incluido Si la estructura de la tabla sufre cambios, también se registra.
¿Por qué utilizarlas? Los datos cambian contantemente Workarounds son… Los datos históricos pueden ser críticos para el éxito del negocio Los enfoques tradicionales no proporcionan información 100% confiable Workarounds son… Complejos, costosos, limitados, inflexibles, ineficientes SQL Server 2016 hace la vida fácil No hay que hacer cambios en código Tal cómo estaba Auditoría Slowly Changing Dimensions Recovery Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx
Sin cambios en la programación Por donde comenzar? Sin cambios en la programación Nuevo enfoque FOR SYSTEM_TIME AS OF FROM..TO BETWEEN..AND CONTAINED IN Temporal Querying CREATE temporal TABLE PERIOD FOR SYSTEM_TIME… ALTER regular_table TABLE ADD PERIOD… DDL INSERT / BULK INSERT UPDATE DELETE MERGE DML SELECT * FROM temporal Querying Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx
¿Cómo funcionan? * Viejos Update */ Delete * Insert / Bulk Insert Tabla Temporal (data actual) Tabla histórica * Viejos Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx Update */ Delete * Insert / Bulk Insert
¿Cómo funcionan? El mismo query Temporal Queries * (Time travel,etc.) Tabla Temporal (data actual) Tabla histórica Versión histórica Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx El mismo query Temporal Queries * (Time travel,etc.)
“Get actual row versions” Sólo nuevas cláusulas Department (current) Department (current + history) “Get actual row versions” AS OF BETWEEN..AND CONTAINED IN DepNum DepName MngrID From To A001 Marketing 6 2008 ∞ A002 Sales 5 2007 DepNum DepName MngrID A001 Marketing 5 6 A002 Sales 2 A003 Consulting 10 A001 ∞ A001 Department (history) A002 DepNum DepName MngrID From To A001 Marketing 5 2005 2008 A002 Sales 2 2007 A003 Consulting 6 2006 10 2009 2012 ∞ A002 A003 A003 Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx 2005 2015 SELECT * FROM Department SELECT * FROM Department FOR SYSTEM_TIME AS OF '2006.01.01' SELECT * FROM Department FOR SYSTEM_TIME BETWEEN '2006.01.01' AND '2007.01.01' SELECT * FROM Department FOR SYSTEM_TIME CONTAINED IN ('2007.01.01', '2009.01.01') Período de validez Tiempo actual
Azure SQL Database SELECT * FROM Department FOR SYSTEM_TIME Hechos: Las tablas históricas son mucho más pesadas que las actuales Retención (políticas del negocio) “Warm”: consultada muy seguido “Cold”: rara vez consultada SELECT * FROM Department FOR SYSTEM_TIME AS OF '2010.01.01' Otra opción: Stretch a la table histórica: PeriodEnd < “Ahora - 6 meses” Azure SQL Database Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx
demo
SQLDay 2017 Q & A
Información Adicional Querying Data in a System-Versioned Temporal Table https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table Modifying Data in a System-Versioned Temporal Table https://docs.microsoft.com/en-us/sql/relational-databases/tables/modifying-data-in-a-system-versioned-temporal-table Changing the Schema of a System-Versioned Temporal Table https://docs.microsoft.com/en-us/sql/relational-databases/tables/changing-the-schema-of-a-system-versioned-temporal-table
Sponsor sessions at 11:40 Don’t miss them, they might be getting distributing some awesome prizes! Plainconcepts SolidQ KABEL & Corent Also XBOX One & Raffle prizes at 17:30