Mi nombre es Roberto Carrancio y soy un DBA de SQL server con más de 10 años de experiencia en el sector. Soy el creador del blog soydba.es donde intento publicar varios artículos a la semana (de lunes a viernes que los fines de semana me gusta estar con mi gente y disfrutar de mi moto) Espero que disfrutes leyendo este blog tanto como yo disfruto escribiendo y que te sea de utilidad. Si tienes alguna sugerencia, pregunta o comentario, puedes dejarlo al final de cada entrada o enviarme un correo electrónico. Estaré encantado de leerte y responderte. ¡Gracias por tu visita!
Mi principal interés es compartir mi conocimiento sobre bases de datos con todo el que quiera aprenderlo. Me parece un mundo tan apasionante como desconocido. Fuera de lo profesional me encanta la cocina, la moto y disfrutar de tomar una cervecita con amigos.
Mi nombre es Roberto Carrancio y soy un DBA de SQL server con más de 10 años de experiencia en el sector. Soy el creador del blog soydba.es donde intento publicar varios artículos a la semana (de lunes a viernes que los fines de semana me gusta estar con mi gente y disfrutar de mi moto) Espero que disfrutes leyendo este blog tanto como yo disfruto escribiendo y que te sea de utilidad. Si tienes alguna sugerencia, pregunta o comentario, puedes dejarlo al final de cada entrada o enviarme un correo electrónico. Estaré encantado de leerte y responderte. ¡Gracias por tu visita!
Mi principal interés es compartir mi conocimiento sobre bases de datos con todo el que quiera aprenderlo. Me parece un mundo tan apasionante como desconocido. Fuera de lo profesional me encanta la cocina, la moto y disfrutar de tomar una cervecita con amigos.
Sexto Video Blog del canal, vamos a ver varios casos prácticos sobre como borrar registros duplicados en nuestras tablas de base de datos SQL o Azure. En el video vemos como debemos actuar para localizar y eliminar los duplicados tanto cuando tenemos un ID único como si no lo tenemos y queremos usar %%physloc%%.
%%physloc%% es una columna virtual que ofrece SQL Server desde 2008 que nos devuelve un hash de la ubicación física de los datos en el disco duro. Esto es en si mismo un identificador único de cada fila pues en una misma ubicación solo puede haber un dato. Para cada uno de estos escenarios os muestro tres ejemplos: con una subconsulta, con la función ROW_Number y una CTE y por último con la función RANK.
Cuando eliminamos los registros duplicados mantenemos nuestro modelo de datos normalizado. De esta manera lograremos optimizar el rendimiento y el espacio que ocupan nuestros datos en disco.
Espero que te haya gustado el video, si es así por favor, deja tu me gusta y suscríbete al canal que nos ayuda mucho. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram al que te puede unir. En este grupo estamos creando una comunidad de usuarios y administradores de SQL Server donde cualquiera pueda preguntar sus dudas y compartir sus casos prácticos para que todos seamos mejores profesionales. ¡Hasta la próxima!
Iniciamos esta semana como terminamos la pasada, con otro artículo sobre análisis de datos e inteligencia de negocio. En concreto vamos a seguir hablando de buenas prácticas en Power BI. Si en nuestro último artículo hablábamos de la importancia de usar un modelo de estrella en Power BI hoy vamos a repasar el resto de buenas prácticas también muy importantes en esto del modelado de datos.
Antes de seguir quiero hacer un inciso (“Disclaimer cero” que diría el gran motero Isaac Feliú) todas las recomendaciones descritas en este artículo aplicadas a Power BI también son válidas para modelos tabulares como Power Pivot, Analisys Services y otros. Aun así, esto no quiere decir que tengamos que tomarnos estas buenas prácticas como los diez mandamientos escritos en piedra e inamovibles, son unas recomendaciones y no todas van a ser aplicables al 100% para todos los modelos.
Uso de vistas en Power BI
Las vistas son consultas almacenadas en la base de datos que generan un conjunto de resultados al ser invocadas. Podríamos decir que son tablas virtualizadas que se basan en el resultado de una consulta SQL y “no almacenan los datos” así entre unas comillas muy grandes. Cuando hablamos de modelado de datos, las vistas juegan un papel crucial. En Power BI, las vistas pueden ser una herramienta poderosa para simplificar y optimizar nuestros modelos de datos. Vamos ahora a ver estas ventajas:
Abstracción del modelo
Gracias al uso de vistas, cuando importamos datos desde entornos de bases de datos relacionales como SQL Server o Azure SQL vamos a poder abstraer nuestro modelo de datos del modelo original de las aplicaciones transaccionales. Esto que puede no parecer importante realmente es clave, ya que los modelos de datos suelen ser entidades vivas cambiantes con cada actualización de las aplicaciones. Gracias al uso de vistas, vamos a poder salvar este inconveniente, y en caso de cambios en el nombre de una columna, por ejemplo, vamos a poder corregirlo en un solo sitio sin tener que cambiarlo en todos los informes.
Simplificación del modelo de datos de Power BI
Las vistas pueden ayudar a simplificar nuestros modelos de datos en Power BI. Al encapsular la lógica de las consultas en una vista, podemos reducir la complejidad de nuestro modelo de datos y hacerlo más fácil de entender y mantener. En otras palabras, podremos aprovechar estas vistas para simplificar lo más posible el modelo de datos, eliminando de las consultas de la vista todas aquellas columnas que no necesitamos en el modelo analítico.
Mejora el rendimiento de Power BI
Las vistas también pueden contribuir a mejorar el rendimiento de nuestros informes de Power BI. Al utilizar vistas, podemos minimizar la cantidad de datos que necesitamos cargar en Power BI, lo que puede resultar en informes más rápidos y eficientes. También, gracias al uso de vistas indexadas, que ya vimos hace meses en este blog, podemos mejorar el rendimiento de manera sustancial, hasta pasando de horas de procesamiento de la consulta a segundos en los casos más extremos.
Seguridad de los Datos
Las vistas nos permiten implementar una capa adicional de seguridad en nuestros datos. Podemos utilizar vistas para restringir el acceso a ciertos datos, asegurando que sólo los usuarios autorizados puedan ver la información sensible.
Buenas prácticas en el uso de vistas
Ya hemos visto que el uso de vistas para alimentar nuestro modelo es una buena práctica en sí misma pero esto no queda ahí, existen unas buenas prácticas para la buena práctica de crear vistas. Gracias a estas “meta buenas prácticas” vamos a poder sacar todo el partido de las ventajas del uso de vistas que ya os he comentado. Vais a ver cómo, a medida que las vayamos viendo vamos a poder enlazarlo claramente con todo lo ya mencionado arriba.
Uso de esquemas
Crear un esquema dedicado a las vistas que se van a utilizar para alimentar el modelo de Power BI no solo sirve para mantener la organización, también nos va a ayudar a poder centralizar los permisos. Podemos incluso crear varios esquemas si tenemos varios grupos de informes o reportes en Power BI para tener más control sobre su seguridad y organización. A la hora de importar las tablas al modelo de Power BI no hay ningún problema en eliminar el nombre del esquema y dejar solo el de la vista.
Crear vistas por tabla de Power BI
Otra de las mejores recomendaciones que podemos encontrar sobre este aspecto es la creación de vistas independientes por cada tabla del modelo de Power BI y no por cada tabla del modelo relacional original. De esta manera podemos aprovechar la potencia de SQL Server o el SGBD relacional que usemos y sus índices para las uniones entre tablas y que se presenten a Power BI como una tabla plana.
Limitar el número de columnas
Otra de las ventajas del uso de vistas era optimizar el rendimiento reduciendo la lectura de datos que no van a ser explotados por el modelo de Power BI, esto lo lograremos declarando los campos necesarios en el select de la vista en lugar de un carácter *. De esta manera además podremos ver de una manera fácil en SQL Server que datos se están explotando en Power BI y los DBAs tendremos más fácil localizar las actuaciones del modelo relacional que pueden afectar al modelo analítico.
Otras buenas prácticas para Power BI
No solo de modelos en estrella y vistas vive un buen modelador de datos, existen además ciertas recomendaciones que también tendremos que tener en cuenta al diseñar nuestro modelo en Power BI. Vamos a repasar las más significativas:
Utiliza nombres significativos
Esto es de primero de modelador de datos, no solo para modelos analíticos, sin embargo, es común encontrarnos con situaciones en las que no se aplica, ya sea por desconocimiento, indiferencia o una mezcla de las dos (el típico ni lo sé ni me importa). Un nombre descriptivo a la hora de definir las columnas de las vistas que van a alimentar nuestro modelo en Power BI nos ayudará luego a crear los reportes con menos trabajo. Por supuesto evita repetir los mismos nombres para distintas columnas a no ser que sea en distintas tablas y esas columnas sean las claves por las que vas a relacionar las tablas. En ese caso un nombre común te ayudará a localizar las relaciones. Piensa que al usar vistas has perdido la capacidad de consultar las relaciones establecidas en las tablas de la base de datos por medio de claves foráneas.
Separa fechas y horas
En los sistemas de bases de datos relacionales es común el uso de tipos de datos que incluyen la fecha y la hora, incluso con presiones de microsegundos o más, por ejemplo en SQL Server el tipo de datos datetime2 tiene una precisión de 7 dígitos (hasta 100 nanosegundos). Esta precisión puede que sea clave para una aplicación pero, os aseguro, que al gerente que está visualizando un informe como mucho le importan los segundos, el resto de precisión suele ser despreciable. Cuando trasladamos estos datos a Power BI seguramente no necesitamos esa precisión, valora separar estos campos en un campo date y otro time y ajustar la precisión a los valores que vayan a necesitar los consumidores de tus reportes.
Mantén los modelos de Power BI sencillos
El título lo dice todo, no hay mucho más que añadir. Aunque Power BI puede manejar modelos de datos complejos, es mejor mantener los modelos lo más sencillos posible. Un modelo simple es más fácil de entender, mantener y optimizar.
Utiliza columnas calculadas y medidas de manera eficiente
Las columnas calculadas y las medidas son dos características poderosas de Power BI. Debemos utilizarlas de manera efectiva para mejorar el rendimiento y la funcionalidad de nuestros informes y valorar cuándo nos va a dar mejor rendimiento un cálculo en el motor de base de datos implementado en la propia vista y cuándo será mejor delegar ese trabajo en Power BI.
Marca las tablas de fecha de Power BI
En los inicios de Power BI, las tablas de dimensiones de fechas eran una tabla más, como todas las demás solo que almacenaban fechas. Sin embargo, desde la actualización de 2018 de Power BI, existe una marca para catalogar las tablas que contienen datos de fecha y hora como tablas de fechas. Esto optimizará el rendimiento y mejorará la experiencia de los usuarios.
Optimiza el Rendimiento
Para terminar, no es que sea una buena práctica como tal pero sí es importante remarcar que debemos revisar continuamente el rendimiento. Nuestro modelo va a crecer con el tiempo y puede que algunas soluciones que en un principio parecían aceptables ahora no lo sean. También podemos encontrarnos con casos como el anterior en el que una actualización de Power BI nos habilita una nueva funcionalidad para optimizar nuestro modelo. El rendimiento es un aspecto crítico del modelado de datos. Debemos tener en cuenta factores como el tamaño de los datos, la complejidad de las consultas y la capacidad de la máquina al diseñar y mantener nuestros modelos.
Conclusión
El modelado de datos es una ciencia y un arte a partes iguales. Conocer las buenas prácticas, y aplicarlas siempre que sea posible, nos ayudará a diseñar reportes optimizados que mejoren la experiencia de los usuarios finales. Espero que gracias a estos artículos estés más cerca de ese objetivo. Y ya sabes, si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!
El artículo de hoy va para mis amigos analistas de datos, desarrolladores de BI y DBAs centrados en entornos datawarehouse aunque espero que sea también interesante para todos los demás. Hoy vamos a hablar del modelado en Power BI, existen muchas maneras de hacerlo pero al final, si el modelo va a tomar cierta envergadura, todo lo que no sea un modelo puro de estrella va a terminar dando mal rendimiento.
¿Qué es Power BI?
Empecemos por el principio, seguramente si eres analista de datos o desarrollador BI si sabes de lo que estoy hablando pero, permíteme un paréntesis, para que toda esa gente que está leyendo esto y no sabe muy bien de lo que hablamos parta desde el mismo punto. Al fin y al cabo este es un blog de DBAs.
Power BI es un software de Microsoft para inteligencia de negocio (de ahí su nombre) capaz de convertir datos de casi cualquier fuente en informes interactivos muy atractivos visualmente. Esta información que puede venir de cualquier fuente puede ser desde un fichero de texto plano separado hasta una potente base de datos relacional como SQL Server o las bases de datos SQL de Azure.
El flujo de trabajo de Power BI
A grandes rasgos, para empezar a trabajar en Power BI, debemos usar Power BI Desktop para conectar la información de las fuentes, modelarla en la propia aplicación y después, preparar los informes visuales.
Una vez generado el informe se puede almacenar en un archivo pbix para consumir con la aplicación Power BI Desktop en el equipo local o publicarla en Power BI Service que no es más que un SQL Server Reporting Service adaptado. Si habéis administrado este servicio anteriormente vais a ver que es prácticamente igual, solo cambia el origen de los reportes.
¿Qué es un modelo de estrella?
No es la primera vez que hablamos en el blog sobre los modelos de estrella, ya le dedicamos este artículo completo hace unos meses. Para refrescar las ideas, el modelo de estrella es una forma de organizar nuestros datos en base a una tabla central de hechos relacionada con varias tablas de dimensiones. Tener toda la información relevante en una misma tabla central lo convierte en un modelo optimizado para consultas de agrupaciones, justo lo que buscamos cuando elaboramos informes de BI. En este sentido, no es raro encontrarnos con tablas desnormalizadas, primando el rendimiento máximo de este tipo de lecturas sobre el ahorro de espacio y el rendimiento de escrituras.
Por qué usar un modelo de estrella en Power BI
Como ya hemos dicho, la mejor manera de modelar los datos en Power BI es con un modelo de estrella. Esto es así porque todos y cada uno de los objetos visuales que van a terminar componiendo los reportes van a realizar consultas contra el modelo de datos almacenado en la aplicación. Esas consultas además no tienen nada que ver con las consultas de selección de información a las que estamos acostumbrados a ver en una base de datos relacional, son consultas mucho más pesadas de filtrado, agregación, resumen y ordenación de los datos del modelo. Gracias a usar un modelo en estrella, las tablas de dimensiones admitirán el filtrado y la agregación mientras que sobre la tabla de hechos recaerá el resumen.
Es importante destacar que la tabla de hechos y las de dimensiones no se establecen como tal por ninguna propiedad que asigne el modelador de datos, simplemente son tablas normales que al aplicar las relaciones correctas terminan componiendo este modelo. Si seguimos a rajatabla los cánones y buenas prácticas, todas las relaciones serán de uno a muchos, siendo siempre uno en la tabla de dimensión y muchos en la de hechos.
Un diseño bien modelado tendrá este aspecto que vemos en la imagen, con una tabla central de hechos relacionada con tantas tablas de dimensiones como sean necesarias y sin mezclar en una misma tabla dimensiones con hechos (Si estás perdido en este punto y no sabes la diferencia entre una tabla de hechos y una tabla de relaciones pásate por nuestro artículo sobre el modelo de estrella para descubrirlo).
Conceptos clave del modelo de estrella en Power BI
Ahora que ya conocemos la estructura ideal del modelo de estrella en Power BI vamos a tratar de entender los conceptos clave necesarios para una correcta implementación del mismo.
Medidas
Normalmente, cuando hablamos de un modelo de estrella, una medida es la columna de la tabla de hechos que almacena información que se va a resumir. Cuando llevamos esta implementación del modelo de estrella a Power BI, esta medida va a ser una fórmula escrita en DAX que permita resumir la información. Lo más normal será encontrarnos con fórmulas MAX, MIN o AVG para generar un valor que consumir. Estos valores nunca se almacenan en el modelo.En Power BI, existen además una serie de medidas automáticas llamadas medidas implícitas para consumirse en el informe visual llamadas medidas implícitas.
Claves suplentes
Son el identificador único de las tablas de dimensiones, lo que en base de datos conocemos como clave primaria. Estas claves en Power BI tienen la particularidad de no poder ser compuestas, tienen que ser una única columna. Es común tener que generar una columna con los datos de otras concatenados para que actúe como clave suplente aunque la mejor idea es agregar un identificador único a la tabla ya que de esa manera las relaciones con la tabla de hechos serán más fluidas.
Tablas de hechos sin hechos
En ocasiones es posible encontrarnos con la necesidad de crear una tabla de hechos que realmente no almacene ningún hecho. Por ejemplo una tabla de log de logins donde almacenamos una fecha de inicio de sesión donde el hecho realmente será el conteo de filas correspondiente a los inicios de sesión de los usuarios. Otra opción para utilizar este tipo de tabla es la típica tabla que almacena relaciones con las claves de otras dos tablas, tabla que es necesaria muchas veces para tener el modelo normalizado.
Dimensiones especiales en Power BI
Ya vimos en nuestro artículo sobre el modelo de estrella lo que eran las dimensiones, también llevamos todas estas líneas hablando sobre ellas. Sin embargo, en el mundo del análisis de datos y en concreto en Power BI existen unos tipos especiales de dimensiones que debemos conocer.
Dimensiones de copo de nieve
Las dimensiones de copo de nieve son conjuntos de tablas normalizadas que representan una única entidad de negocio o propiedad de un objeto. Por ejemplo, en la mayoría de ERP y software de gestión de almacén y ventas es común encontrar las propiedades categoría y subcategoría para los artículos. Esta idea, trasladada a un modelo normalizado, nos mostrará tres tablas, la de categorías, la de subcategorías y la de productos o artículos.
Si optamos por imitar el modelo de origen en Power BI en vez de desnormalizar el modelo y almacenar una única tabla de dimensiones no será lo más óptimo ya que deberemos cargar más tablas y más columnas clave. Además las fórmulas para definir las relaciones serán más largas y complejas complicando la propagación de filtros entre las tablas. Esto se traduce en un mayor número de campos en el panel para diseñar el informe visual, lo que también puede complicar la experiencia. Aunque parezca una buena idea a fin de tener el modelo normalizado y ahorrar espacio, a la larga, nos va a generar problemas debido a la limitación de Power BI de crear una jerarquía que abarque todas las tablas.
Dimensiones de variación lenta
Las dimensiones de variación lenta o dimensiones lentamente cambiantes (SCD por sus siglas en inglés) son aquellas que administran correctamente el cambio a lo largo del tiempo. Las SCD pueden admitir cambios de tipo 1, de tipo 2 o ambos a la vez.
El cambio tipo 1 es aquel que al producirse modifica todo el historial pasado, no nos interesa el histórico y solo queremos saber el valor actual. Sin embargo un cambio tipo 2 se almacena en un nuevo registro, sin sustituir el anterior. Por ejemplo, imaginad que tenemos una tienda de pulseras y nuestro principal cliente son hombres casados que compran regalos a sus esposas. Nuestra tabla de clientes es una dimensión, en esta tabla tenemos datos como el correo electrónico o el teléfono para enviarles promociones. Si estos datos cambian, no nos interesa almacenar el historial, con tener el dato actualizado es suficiente. Esto es un cambio tipo 1.
Sin embargo, hay otro campo de la dimensión clientes que es el estado civil y, en ese, si que necesitamos un historial. Saber cuántas veces pasan nuestros clientes de soltero a casado o casado a soltero y cuánto tiempo pasa de media entre cada etapa puede ser de gran ayuda para nuestros analistas de datos y sus modelos de predicción de ventas.
Podríamos tener otro tipo de dimensión cambiante como el precio de nuestros artículos de venta pero, si estos cambian rápidamente, lo mejor será almacenar esa información en la tabla de hechos.
Dimensiones realizadoras de roles
Existen dimensiones que, por sus características, pueden filtrar los hechos de maneras diferentes. Por ejemplo, imagina nuestro ejemplo anterior donde teníamos una tienda de pulseras, la dimensión fecha es capaz de realizar filtros por fecha de pedido, fecha de envío, fecha de cobro o incluso por fecha de alta de un cliente.
En Power BI podríamos definir varias relaciones entre nuestra dimensión fecha y la tabla con los hechos, sin embargo, solo una de las relaciones puede estar activa. Tener una única relación activa implicará la propagación de filtros sobre la dimensión a la tabla de hechos. Técnicamente es posible usar relaciones inactivas pero para ello el desarrollador del informe tendrá que usar la función DAX USERELATIONSHIP. Esto puede resultar complicado tanto por el uso de código extra como por la cantidad de campos generados en el panel de construcción de reportes.
Un enfoque común para superar estas limitaciones es, al modelar, crear varias tablas de dimensiones con la misma información duplicada de manera que cada una de ellas tenga una instancia realizadora de roles (filtrados). Es un precio menor a pagar ya que, por lo general ( y por definición), las tablas de dimensiones son relativamente pequeñas en comparación con los hechos.
Dimensiones no deseadas
Al trasladar datos de un modelo origen a nuestro modelo de Power BI es común encontrarnos con dimensiones no deseadas. Una dimensión no deseada puede ser útil cuando las dimensiones constan de pocos atributos y a su vez estos de pocos valores. En estos casos, puede ser una buena idea realizar un producto cartesiano de ambas dimensiones en una sola. Por ejemplo, volvamos a nuestra tienda, tenemos una dimensión que almacena un único atributo que es el estado de los pedidos y los valores que acepta son pedido recibido, pedido recibido y pedido completado. A su vez, tenemos otra dimensión con otro único atributo que es el estado de envío del pedido y admite los valores no enviado, enviado y entregado. En este caso, podríamos combinar ambas dimensiones del origen en una sola en nuestro modelo de estrella.
Dimensiones degeneradas
Una dimensión degenerada en el modelado de Power BI se refiere a un atributo de datos que funciona como una dimensión, pero que en realidad se almacena en la tabla de hechos, en lugar de en su propia tabla de dimensión separada. Es una excepción a la regla de oro que hemos comentado al principio de no mezclar hechos y dimensiones en una sola tabla. En otras palabras, es una clave de dimensión que se almacena en una tabla de hechos y no se une a una tabla de dimensiones correspondiente porque todos sus atributos ya se han colocado en otras dimensiones. Esto elimina la necesidad de unir otra tabla de dimensiones.
Conclusión
¿Aún sigues leyendo a estas alturas? ¿Después de casi 2000 palabras? Si es así y no has saltado directamente a este apartado gracias. Como habrás podido ver el modelado en power BI pasa por un modelo de estrella estricto para obtener un buen rendimiento. Sin embargo, esto de la ciencia de datos tiene mucho de arte también y son los analistas, científicos y arquitectos de datos los que van a modelar los datos a medida para el mejor rendimiento de sus informes. De la teoría a la práctica ya sabes que hay un mundo y eso solo te lo da la experiencia y haber hecho muchas pruebas. Como hemos visto en el artículo, sobre todo en esta última parte, hay excepciones incluso para el primer mandamiento del modelador de no mezclar hechos con dimensiones. Espero que hayas aprendido los fundamentos básicos de esta ciencia.
Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!
En este quinto video blog vamos a aprender a usar el monitor de rendimiento de Windows (PERFMON) para medir el rendimiento de SQL Server y poder detectar cuando hay algún problema. Es importante conocer previamente el estado normal de nuestros servidores para ser capaces de identificar cuando estamos ante un problema de rendimiento.
En el video hemos visto como usar en perfmon las métricas de uso de CPU combinadas con los lotes por segundo que procesa SQL Server así como la velocidad de lectura y escritura de los discos. Además de estas métricas también podemos revisar las compilaciones y recompilaciones de nuestro SQL Server cuyo valor ideal será un 10% o menos del total de lotes por segundo.
Espero que te haya gustado el video, si es así por favor, deja tu me gusta y suscríbete al canal que nos ayuda mucho. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram al que te puede unir. En este grupo estamos creando una comunidad de usuarios y administradores de SQL Server donde cualquiera pueda preguntar sus dudas y compartir sus casos prácticos para que todos seamos mejores profesionales. ¡Hasta la próxima!
Ayer vimos como para cumplir con los reglamentos de protección de datos tipo RGPD lo primero que debemos hacer es una correcta clasificación de los datos. En ese post os expliqué también como SQL Server incorpora de forma nativa tanto en sus versiones On Premise como en las versiones de Azure una herramienta para clasificar los datos por tipo y sensibilidad.
Eso es justo lo que quiero enseñaros en el video de hoy. En poco menos de 5 minutos os voy a enseñar como acceder a esta opción, como la clasificación automática de los datos es capaz de identificar nuestras columnas más sensibles y como podemos nosotros añadir nuevas columnas a esta clasificación. Además os voy a mostrar el reporte que podremos obtener después con los datos que han sido clasificados.
Espero que te haya gustado el video, si es así por favor, deja tu me gusta y suscríbete al canal que nos ayuda mucho. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram al que te puede unir. En este grupo estamos creando una comunidad de usuarios y administradores de SQL Server donde cualquiera pueda preguntar sus dudas y compartir sus casos prácticos para que todos seamos mejores profesionales. ¡Hasta la próxima!
No es sorpresa para ninguno de vosotros si os digo que hoy en día, cumplir con la protección de datos es más importante que nunca. Y no es para menos, el incumplimiento de estas normas puede acarrear sanciones para la empresa de hasta 20 millones de euros o el 4% de la facturación global anual, lo que sea más. La Regulación General de Protección de Datos (RGPD) ha establecido nuevas normas y expectativas para las empresas en lo que respecta a la gestión de datos personales y en este artículo, nos centraremos en cómo SQL Server puede ayudarnos a cumplir con ellas. Para ello vamos a centrarnos por un lado en la detección y clasificación de datos sensibles y por otro en las distintas soluciones nativas de cifrado y protección de estos datos.
¿Qué es el RGPD?
Antes de entrar a ver las actuaciones que tenemos que llevar a cabo en SQL Server para cumplir con la normativa, es importante que definamos los conceptos básicos que debemos conocer sobre la RGPD. No te asustes, no voy a entrar en mucho detalle, esto no es un blog legal.
El RGPD (GDPR por sus siglas en inglés) es una ley europea que obliga a las empresas a proteger los datos personales, no solo de sus clientes y empleados sino de toda persona que tenga algún tipo de interacción con ellos. Aunque entró en vigor en 2016 y es de obligado cumplimiento desde 2018, no es raro encontrarnos con escenarios que no están completamente adaptados a ella, ya sea porque son empresas de reciente creación o porque hasta ahora no habían tenido esta necesidad.
Dentro de los datos que vamos a necesitar proteger para cumplir con el reglamento encontramos los siguientes:
Datos identificativos: nombre, apellidos, dirección, email, teléfono, firma, DNI y, en definitiva, cualquier dato que sirva para identificarnos.
Datos personales: Fecha de nacimiento, estado civil, edad, nacionailidad, sexo, religión, etc…
Datos sociales: Aficiones, estilo de vida, posesiones, características de la casa, etc…
Datos académicos y profesionales: historial académico, experiencia profesional, puesto de trabajo, profesión, pertenencia a asociaciones profesionales, etc…
Datos comerciales: licencias, suscripciones a publicaciones, revistas, medios de comunicación, etc…
Datos financieros: Cuenta bancaria, prestamos, ingresos y nivel de renta, tarjetas, planes de pensiones, datos de la nomina u otros ingresos, tributaciones, etc…
Clasificación de Datos Sensibles para cumplir la RGPD
La clasificación de datos es un primer paso fundamental en cualquier estrategia de protección de datos. Como es lógico, antes de afrontar ninguna tarea de protección de los datos deberemos clasificarlos, detectar los que son sensibles y los que están amparados por la legislación. Tanto SQL Server como las bases de datos SQL en Azure ofrecen una funcionalidad integrada para la clasificación de datos que nos permite identificar y categorizar los datos que se deben proteger.
La clasificación de datos en SQL Server se realiza a través de dos componentes principales: Etiquetas de Sensibilidad y Etiquetas de Información. Las Etiquetas de Sensibilidad nos permiten clasificar los datos según su nivel de sensibilidad, mientras que las Etiquetas de Información nos permiten categorizar los datos según el tipo de información que contienen.
Opciones Nativas de Cifrado para cumplir la RGPD
SQL Server ofrece varias herramientas nativas de cifrado para proteger nuestros datos. Estas herramientas proporcionan una capa adicional de seguridad y nos ayudan a cumplir con los requisitos de la RGPD. Ya hemos hablado de ellas en este blog de una manera detallada en este artículo, por lo que hoy vamos a hacerlo desde el punto de vista del cumplimiento normativo.
Lo primero que tenemos que tener claro es la clasificación de las medidas de cifrado según su funcionalidad. Por un lado tendremos el cifrado en tránsito que protegerá la información de un potencial atacante a la escucha durante su movimiento por la red. El otro de los tipos de cifrado es en reposo, es decir, proteger los datos de lecturas no deseadas mientras estén almacenados. En un escenario ideal implementaremos una o varias de estas técnicas de cifrado para lograr la máxima protección.
Cifrado en tránsito
SQL Server imprenta de forma nativa la opción de usar un certificado para la conexión de manera que podamos tener un cifrado TLS en tránsito. Para ello deberemos instalar el certificado en el servidor de SQL Server y posteriormente configurarlo para su uso en SQL Server en las propiedades del servicio del motor de base de datos. Encontraremos en estas propiedades una pestaña certificados donde configurarlo (implica reinicio del servicio). En Azure no será necesario realizar ninguna acción adicional, ya que todas las conexiones implementan el uso de TLS. Sin embargo, sí es recomendable desactivar el uso de TLS 1.0 y TLS1.1 siempre que sea posible ya que por defecto están habilitados.
Cifrado en reposo
Otra de las opciones que tenemos disponible en SQL Server es Transparent Data Encryption (TDE). TDE cifra los datos en reposo, lo que significa que los datos se cifran cuando se almacenan en el disco. Esto protege los datos contra el acceso no autorizado en caso de que los archivos de la base de datos sean robados. Sin embargo no protege los datos sensibles de su lectura para usuarios con acceso a la base de datos. Con esta opción solo nos vamos a garantizar que nadie que no disponga del certificado y la clave correctas pueda restaurar o adjuntar nuestra base de datos.
Para proteger los datos contra las lecturas de usuarios no autorizados, aunque si tengan acceso a la base de datos tenemos dos opciones, DDM y Always Encrypted. DDM o Dynamic Data Masking es la opción más básica y menos completa. Esta opción enmascara los datos para los usuarios que no tengan un permiso específico para desenmascararlos pero el dato está almacenado en disco sin ningún cifrado. Además esta opción permitirá la lectura en plano de los datos a cualquier administrador con permisos de sysadmin sin posibilidad de ocultación.
Si queremos realmente un cifrado completo de los datos y que no puedan ser visibles para los administradores (pero si para los usuarios autorizados) tenemos Always Encrypted. Always Encrypted es una característica que protege los datos confidenciales almacenados en las bases de datos de SQL Server. Los datos están cifrados en todo momento, tanto en reposo como en tránsito, lo que significa que los datos están protegidos tanto cuando se almacenan en la base de datos como cuando se transmiten entre la base de datos y la aplicación.
Conclusión
Cumplir con la RGPD puede no ser sencillo, pero SQL Server ofrece las herramientas y funcionalidades necesarias para hacerlo de manera efectiva. Al utilizar la clasificación de datos y las herramientas nativas de cifrado, podemos proteger nuestros datos sensibles y asegurarnos de que estamos cumpliendo con las regulaciones de protección de datos.
Recuerda, la protección de datos no es solo una obligación legal, sino también una responsabilidad ética. Al proteger los datos de nuestros clientes, no solo cumplimos con la ley, sino que también construimos confianza y lealtad con nuestros clientes. Y eso, al final del día, es lo que realmente importa. Trabaja con el responsable de los datos y el departamento legal para obtener los mejores resultados. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!
La primera elección a la que nos vamos a enfrentar cuando vamos a trabajar con SQL Server o una instancia o base de datos de Azure por primera vez es la herramienta que vamos a usar. Existen multitud de soluciones pero las principales, y desarrolladas por Microsoft, para esta tarea son SQL Server Management Studio (SSMS) o Azure Data Studio (aquí no hay siglas, nadie usa ADS). No os dejéis llevar por los nombres, ambas soluciones nos van a permitir conectarnos de la misma manera tanto a SQL Server como a instancias o bases de datos de Azure SQL. Así que, la decisión entre una u otra será por otros aspectos que las diferencian, y eso justo es lo que hoy voy a tratar de aclararos.
¿Qué son SSMS y Azure Data Studio?
SQL Server Management Studio (SSMS) es una aplicación de código cerrado pero gratuita desarrollada por Microsoft para permitir la interacción de usuarios y administradores a las bases de datos SQL Server ya sea en instalaciones On Premise como en la nube de Azure. Además, nos permite conectarnos a otros servicios de la familia de SQL Server como son SSAS, SSRS y SSIS. Gracias a esta herramienta dispondremos de una interfaz gráfica para realizar de manera gráfica cualquier operación que necesitemos sobre SQL Server y sus objetos. Dispondremos también de la posibilidad de generar código para consulta T-SQL, DMX, MDX y DAX.
Azure Data Studio, por su parte, también es una herramienta gratuita de Microsoft pero en este caso es de código abierto. Se basa en Visual Studio Code que a su vez se basa en el Framework Electron. Esto hace que, si quieres, puedas colaborar en el código de Azure Data Studio en GitHub. Si lo comparamos con SSMS estaremos ante una aplicación visualmente más moderna, más ligera y extensible. En el caso de Azure Data Studio, al igual que en Visual Studio Code, podremos instalar componentes ya sean de Microsoft o de terceros para ampliar las funcionalidades que nos ofrece. Por ejemplo, podemos agregar compatibilidad con bases de datos MySQL o PostgreSQL.
Compatibilidad Multiplataforma
SSMS lleva en el mercado desde SQL Server 2005, y aunque ha ido mejorando y añadiendo funcionalidades (ya va por la versión 20.1), en esencia es la misma aplicación Win32 para escritorios Windows. No tiene soporte para MacOS ni para Linux y eso restringe su uso a servidores o estaciones clientes con un sistema operativo Windows.
Azure Data Studio, por el contrario, al estar basado en Visual Studio es multiplataforma y podremos instalarlo en equipos Windows, Linux o Mac (no como SSMS que solo es compatible con Windows).
¿A quién va dirigido SSMS y Azure Data Studio?
SSMS es una aplicación dirigida a desarrolladores SQL Server y administradores de bases de datos o profesionales de sistemas que deban administrar Servidores SQL Server. Incluye todas las opciones de administración de forma gráfica y nos permite adaptar cualquier configuración con unos pocos clics de ratón. Gracias al soporte ampliado de las nuevas versiones, además, vamos a poder administrar de la misma manera Azure Managed Instances, Azure Databases o pools de Azure Synapse SQL. Por último, como ya hemos comentado, también vamos a poder usar SSMS para conectar con SSAS, SSRS y SSIS.
Azure Data Studio, por el contrario, es una aplicación centrada en su uso por profesionales de datos y BI y desarrolladores por lo que prescinde de todas las opciones de administración que nos brinda SSMS. Esto hace que sea una aplicación mucho más ligera como hemos comentado antes. No quiere decir que desde Azure Data Studio no vayamos a poder administrar nuestros servidores, si vamos a poder, simplemente tendremos que hacerlo por comandos T-SQL. Mucho más engorroso, ¿verdad?. Si nos gustase eso administraríamos Servidores Oracle y ganaríamos más dinero. Con Azure Data Studio tendremos la posibilidad de conectarnos a SQL Server On Premise, Azure Database, Azure Managed Instance, Azure Synapse así como a MySQL y a PostgreSQL. Sin embargo, y esto es una cosa que no entiendo, no tiene soporte para bases de datos NOSQL como la propia CosmoDB de Azure.
Características
En cuanto a la comparativa propiamente dicha, como venimos comentando, está entre las funciones que cada una de las aplicaciones nos brinda. Vamos primero a ver las características comunes a ambas aplicaciones y luego sus diferencias. Ambas tienen un editor de consultas que admite T-SQL, DMX, MDX, DAX y XMLA (SSAS) y se apoyan en IntelliSense para facilitarnos la tarea. También disponen de un explorador para visualizar jerárquicamente los objetos que componen nuestra base de datos.
Como diferencias, SSMS dispone de un gran arsenal de herramientas pensadas para administradores y usuarios más avanzados de SQL Server entre las que podemos destacar las relacionadas con la seguridad, el mantenimiento y el Agente de SQL Server. Disponemos también de Query Store y una serie de informes predefinidos para las bases de datos que nos aportarán información muy valiosa.
Azure Data Studio, cuenta en su haber con otras características exclusivas como los cuadernos Jupyter, integración con GitHub y con Copilot y la posibilidad de instalar extensiones. Además soporta los lenguajes de programación Python, R y Scala.
Para cerrar este apartado, quiero destacar la integración entre SSMS y Azure Data Studio. Si disponemos de ambas aplicaciones instaladas, desde SSMS vamos a poder abrir Azure Data Studio directamente para poder trabajar con los cuadernos Jupyter.
Tampoco sería justo dejar de mencionar que, si bien Azure Data Studio no está pensado para administrar servidores, poco a poco se van añadiendo funcionalidades para este fin. En el momento de escribir estas líneas, podemos encontrar cómo Preview funcionalidades avanzadas hasta ahora exclusivas de SSMS.
Conclusión
Azure Data Studio y SSMS son dos poderosísimas herramientas desarrolladas por Microsoft para facilitarnos nuestras interacciones diarias con SQL y Azure. Elegir una u otra dependerá de nuestras necesidades ya que no están pensadas para el mismo público objetivo y por tanto no disponen de exactamente las mismas funcionalidades. En mi caso trabajo siempre con ambas aplicaciones abiertas y depende la tarea que tenga que realizar en ese momento uso la que mejor se adapte. Espero que gracias a este artículo vosotros podáis tomar la mejor decisión informada y veáis cubiertas vuestras necesidades. Como siempre, estamos aquí para ayudarte. Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!
Colabora con nosotros
SoyDBA.es es gratis para ti y siempre va a serlo. Sin embargo, a nosotros si que nos cuesta dinero además de mucho esfuerzo. Puedes colaborar con nosotros con un donativo por PayPal o usando nuestros enlaces de afiliado para colaborar sin que te cueste nada. Tenemos enlace de Amazon y de Aliexpress
Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional
Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos.El almacenamiento o acceso técnico que se utiliza exclusivamente con fines estadísticos anónimos. Sin un requerimiento, el cumplimiento voluntario por parte de tu proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarte.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en una web o en varias web con fines de marketing similares.