Download SQL Server
Document related concepts
Transcript
SQL Server 2016 Nuevos Features Maximiliano Accotto Mariano Kovo TriggerDB PrecisionIT PASS La oferta de capacitación más completa Evento Mundial Evento Mundial Grupos Locales en todo Mundo Eventos On Line Gratuitos de SQL Server y BI Evento Gratuito de Día Completo Evento Regional Grabaciones de Sesiones Newsletter PASS Capacitación Técnica Virtual Gratuita Query Store Registro de Performance de Base de Datos Alguna vez…? …estaba todo el sistema colapsado y todo el mundo esperaba que el DBA arregle mágicamente todo el problema lo antes posible? …se realizó el upgrade de una aplicación a una nueva versión de SQL Server y tuvo problemas de performance con los querys? …tuvo un problema con su base de datos de SQL Azure y no pudo determinar lo que iba mal? Con Query Store… Se PUEDE tener la historia completa de la ejecución de un query Se PUEDE rápidamente identificar a los querys mas costosos Se PUEDE obtener la lista de querys que “regresaron” sus planes de ejecución Se PUEDE fácilmente forzar le ejecución un plan histórico mejor con una sola línea de T-SQL Se PUEDE realizar un reinicio o un upgrade en forma segura Query data store Collects query texts (+ all relevant properties) Compile Execute Stores all plan choices and performance metrics Plan Store Runtime Stats Query Store Schema Works across restarts / upgrades / recompiles Dramatically lowers the bar for perf. Troubleshooting New Views Durability latency controlled by DB option DATA_FLUSH_INTERNAL_SECONDS Intuitive and easy plan forcing Monitorear Performance Usando el Query Store Reportes detallados de cada ejecución con información de consumos por recurso Live query statistics Captura de métricas actuales de un query mientras se ejecuta Ver CPU/Uso de Memoria, tiempo de ejecución, progreso de un query, etc. Habilita una rápida identificación de potenciales cuellos de botella para solucionar problemas de performance. Permite realizar un drill down en vivo de las estadísticas a nivel de operador: • Number of generated rows • Elapsed time • Operator progress • Live warnings, etc. Java Script Object Notation (JSON) JSON se convirtió en un standard Formato simple y compacto para intercambio de información La elección de la web Escenarios Recomendados Se PUEDE aceptar JSON, fácilmente parsear y almacenar como dato relacional Se PUEDE exportar datos relacionales fácilmente como JSON Se PUEDE correlacionar datos relacionales y no-relacionales Intercambio de Datos con JSON [ { "Number":"SO43659", "Date":"2011-05-31T00:00:00" "AccountNumber":"AW29825", "Price":59.99, "Quantity":1 }, { "Number":"SO43661", "Date":"2011-06-01T00:00:00“ "AccountNumber":"AW73565“, "Price":24.99, "Quantity":3 } SELECT * FROM myTable FOR JSON AUTO Number Date Customer Price Quantity SO43659 2011-05-31T00:00:00 AW29825 59.99 1 SO43661 2011-06-01T00:00:00 AW73565 24.99 3 SELECT * FROM OPENJSON(@json) ] JSON y relacional CREATE TABLE SalesOrderRecord ( Id int PRIMARY KEY IDENTITY, OrderNumber NVARCHAR(25) NOT NULL, OrderDate DATETIME NOT NULL, JSalesOrderDetails NVARCHAR(4000) CONSTRAINT SalesOrderDetails_IS_JSON CHECK ( ISJSON(JSalesOrderDetails)>0 ), JSON is plain text ISJSON guarantees consistency Quantity AS CAST(JSON_VALUE(JSalesOrderDetails, '$.Order.Qty') AS int) ) GO CREATE INDEX idxJson ON SalesOrderRecord(Quantity) INCLUDE (Price); Optimize further with computed column and INDEX Como utilizar JSON? No es un Nuevo data type Si se necesita almacenar se debe guardar plano, como un NVARCHAR Lo nuevo: Para exportar: FOR JSON Para importar: OPENJSON Para manipular : ISJSON, JSON_VALUE Temporal Tables Query back in time Por qué Temporal Tables Las fuentes de datos son dinámicas Los datos históricos pueden ser críticos para el éxito del negocio Time Travel Data Audit Las DB’s tradicionales no cumplen con los requisitos para las consultas históricas Hay Workarounds… Pero son complejos, costosos, limitados, poco flexibles y no eficientes Slowly Changing Dimensions Repair record-level corruptions SQL Server 2016 lo hace mas simple Empezando con temporal tables No change in programming model CREATE temporal TABLE PERIOD FOR SYSTEM_TIME… ALTER regular_table TABLE ADD PERIOD… DML SELECT * FROM temporal INSERT / BULK INSERT UPDATE DELETE DDL MERGE Querying New Insights Temporal Querying FOR SYSTEM_TIME AS OF FROM..TO BETWEEN..AND CONTAINED IN Always Encrypted Beneficios de Always Encrypted Previene Fuga de Datos Queries sobre Datos Encriptados Transparencia en Aplicaciones Encriptación Client-side de datos sensibles utilizando Claves que nunca residen en la base de datos. Soporte para comparaciones, incl. join, group by y operadores distinct. Cambios mínimos en las aplicaciones a través de mejoras en las librerías de server y cliente. Posibilita a los usuarios almacenar en forma segura los datos sensibles fuera de los límites de la base de datos. Los datos permanecen protegidos durante todo el tiempo. Always Encrypted Protege los datos en el extremo y en movimiento, en on-premises & cloud Apps SQL Server Trusted SELECT Name FROM Patients WHERE SSN=@SSN Client side SELECT Name FROM Patients WHERE SSN=@SSN @SSN='198-33-0987' Column Master Key Result Set Query @SSN=0x7ff654ae6d Enhanced ADO.NET Library Result Set Name Name Jim Gray Jim Gray ciphertext Column Encryption Key dbo.Patients Name SSN Country Jane Doe 243-24-9812 USA 1x7fg655se2e Jim Gray 198-33-0987 USA 0x7ff654ae6d John Smith 123-82-1095 USA 0y8fj754ea2c Row-Level Security. SQL Server 2016 SQL Database Row-level security Asegurar el acceso a través de las filas protegiendo la privacidad Control de Acceso “Fine-grained” a través de filas específicas de una tabla Ayuda a prevenir el acceso no autorizado cuando múltiples usuarios comparten la misma tabla, o para implementar un filtro a nivel de conexión en aplicaciones multitenant Administrado via SQL Server Management Studio o SQL Server Data Tools Lógica aplicada a nivel de interno de base de datos y schema aplicada a nivel de tabla. Customer 1 Customer 2 Customer 3 SQL Database Beneficios de row-level security Control de Acceso Fine-grained Transparente para las Aplicaciones Lógica de Seguridad Centralizada Mantener las bases de datos multi-tenant aseguradas a través de limitar el acceso de otros usuarios que comparten las mismas tablas. RLS trabaja en forma transparente durante la ejecución de querys, no requiere cambios en las aplicaciones La lógica de seguridad reside dentro de la base de datos y está asociada al schema de las tablas. Mejora la seguridad y reduce el mantenimiento de las aplicaciones. Permite almacenar datos de múltiples usuarios una sola base de datos/Tabla mientras que al mismo tiempo restringe el acceso a nivel de registro para lectura y escritura basado en en contexto de ejecución del usuario. Conceptos de RLS Función de Predicado Función de tipo inline table-valued (iTVF) definida por Usuario, que implementa la lógica de seguridad. Seguridad de predicado Aplica una función de predicado a una tabla particular (SEMIJOIN APPLY) Dos tipo: “filter predicates” y “blocking predicates” Policy de Seguridad Colección de seguridad de predicados para administrar la seguridad entre múltiples tablas CREATE SECURITY POLICY mySecurityPolicy ADD FILTER PREDICATE dbo.fn_securitypredicate(wing, startTime, endTime) ON dbo.patients Dynamic Data Masking SQL Server 2016 SQL Database Dynamic Data Masking Previene el abuso de datos sensibles ocultándolos de los usuarios Configuración simple desde el portal de Azure Table.CreditCardNo 4465-6571-7868-5796 Definido a nivel de Policy por tabla y columna, para un set definido de usuarios El proceso de Data Masking se aplica en tiempo real para un resultado de un query de acuerdo a las políticas definidas Múltiples funciones de data-masking disponibles (ej. full, partial) para diferentes categorías de datos sensibles (ej. Tarjetas de Crédito, Documentos de Identidad, etc.) 4468-7746-3848-1978 4484-5434-6858-6550 SQL Database SQL Server 2016 CTP2 Real-time data masking; partial masking Y mas features … Mejoras sobre T-SQL DBCC CHECKDB Transparent Data Encryption support for storage of In-memory OLTP Tables Backup encryption now supported with compression SQL Argentina - PASS sqlargentina@sqlpass.org http://sqlargentina.sqlpass.org @sqlargentina https://www.linkedin.com/groups/3664741 https://www.facebook.com/groups/SQLArgentina/