Download SQL Server

Document related concepts

SQL Server Compact wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

SQL wikipedia , lookup

Vista materializada wikipedia , lookup

Tabla (base de datos) wikipedia , lookup

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
[email protected]
http://sqlargentina.sqlpass.org
@sqlargentina
https://www.linkedin.com/groups/3664741
https://www.facebook.com/groups/SQLArgentina/