{"id":85,"date":"2017-09-25T21:00:00","date_gmt":"2017-09-26T00:00:00","guid":{"rendered":"http:\/\/sqlargentina.pass.org\/Publicaciones\/Blog-MarianoKovo\/tabid\/15060\/entryid\/860\/Default.aspx"},"modified":"2017-09-30T21:37:55","modified_gmt":"2017-10-01T00:37:55","slug":"sql-datawarehouse-101-parte-1","status":"publish","type":"post","link":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/sql-datawarehouse-101-parte-1\/","title":{"rendered":"SQL Datawarehouse 101 &#8211; Parte 1"},"content":{"rendered":"<p>Visitas: 972<\/p><p><strong>V<\/strong>amos a comenzar con esta serie de posts dedicados a esta tecnolog\u00eda que brinda Microsoft hace ya un tiempo y cobra mucho valor en estas \u00e9pocas de vol\u00famenes masivos de informaci\u00f3n.<\/p>\n<p>Azure SQL Datawarehouse es un servicio Cloud de Microsoft Azure, que ofrece una base de datos relacional con procesamiento paralelo masivo (MPP) capaz de procesar vol\u00famenes masivos de datos.<\/p>\n<p>Bien, hasta ah\u00ed la definici\u00f3n de diccionario para este componente de la familia de SQL Server de Microsoft. Pero para entender a este hermano mayor de SQL Server, tendremos que hacer un m\u00ednimo de historia y repaso de la arquitectura de Procesamiento Paralelo Masivo (MPP) y como esta difiere con la arquitectura tradicional de SQL Server (SMP o Symmetric Multi-Processing ).<\/p>\n<h3><b>Arquitectura de Procesamiento MPP y SMP<\/b><\/h3>\n<p>Vamos las definiciones de ambas arquitecturas y como se componen.<\/p>\n<p><b>SMP<\/b>: Symmetric Multi-Processing, es un sistema multi-procesador con un alto nivel de acoplamiento donde cada procesador comparte los recursos. Estos recursos son un \u00fanico Sistema Operativo (OS), Memoria, Dispositivos de I\/O e interconectados en un BUS com\u00fan.<\/p>\n<p>Dicho de una manera simple y sencilla, se trata de un servidor de arquitectura tradicional que conocemos normalmente en las implementaciones de SQL Server.<\/p>\n<p>Fig. 1 Arquitectura SMP<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/msdnshared.blob.core.windows.net\/media\/TNBlogsFS\/prod.evol.blogs.technet.com\/CommunityServer.Blogs.Components.WeblogFiles\/00\/00\/00\/60\/54\/dpi-jul30-1.jpg\" \/><\/p>\n<p><b>MPP: <\/b>Massively Parallel Processing , es el procesamiento coordinado de una \u00fanica tarea realizara por m\u00faltiples procesadores, que utilizan sus propio Sistema Operativo y Memoria y que se comunica con cada otro utilizando una interfaz de mensajer\u00eda. Esta arquitectura se puede implementar con un sub-sistema de disco de tipo shared-nothing (discos locales) o shared-disk (discos en un arreglo, SAN, NAS, etc.)<\/p>\n<p>En la arquitectura Shared-Nothing, no existe ning\u00fan punto de contenci\u00f3n en el sistema completo y los nodos no comparten recursos de memoria o almacenamiento, Los datos son particionados horizontalmente por cada nodo, para que cada uno de \u00e9stos tenga un sub-set de filas de cada tabla almacenada en la base de datos. De esta forma cada nodo procesar\u00e1 solo la porci\u00f3n de registros que posee en sus discos. Los sistemas basados en esta arquitectura pueden escalar en forma masiva ya que no poseen un un punto &#8220;cuello de botella&#8221; que pueda afectar la performance de todo el sistema.<\/p>\n<p>Fig. 2 Arquitectura MPP shared-nothing<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/msdnshared.blob.core.windows.net\/media\/TNBlogsFS\/prod.evol.blogs.technet.com\/CommunityServer.Blogs.Components.WeblogFiles\/00\/00\/00\/60\/54\/dpi-jul30-2.jpg\" \/><\/p>\n<h3><b>SQL Data Warehouse Componentes y Caracter\u00edsticas<\/b><\/h3>\n<p>Bien, ahora que ya repasamos la arquitectura MPP, podemos decir que SQL Data Warehouse es un sistema de base de datos distribuido de Procesamiento Paralelo Masivo (MPP, definici\u00f3n larga y de diccionario :-))<\/p>\n<p>Por debajo del capot, el motor de SQL Data Warehouse distribuye los datos en muchas unidades de procesamiento y un almacenamiento shared-nothing (claro que siempre con un criterio! Y tratando de que se haga lo m\u00e1s parejo posible, salvo que nosotros le indiquemos otra cosa, que ya veremos m\u00e1s adelante).<\/p>\n<p>Los datos se almacenan en forma redundante en una capa de Storage de tipo Premium (recordemos que es un servicio de Azure) que a su vez se vincula din\u00e1micamente con los nodos de computo que ejecutan las consultas.<\/p>\n<p>SQL Data Warehouse trabaja bajo el concepto de &#8220;divisi\u00f3n y conquista&#8221; para ejecutar cargas de trabajo y querys complejos. Los requerimientos son recibidos por un solo nodo llamado Control Node, el cual optimiza y prepara la distribuci\u00f3n del trabajo, para luego enviarlos a los otros servidores que se llaman Compute Nodes, los cuales trabajan en paralelo.<\/p>\n<p>Debido a la arquitectura desacoplada de Almacenamiento y C\u00f3mputo, y al ser un servicio de Azure, SQL Datawarehouse puede cumplir con los siguientes:<\/p>\n<ul>\n<li>Aumentar o reducir el tama\u00f1o del almacenamiento en forma independiente a los recursos de c\u00f3mputo<\/li>\n<li>Aumentar o reducir la capacidad del c\u00f3mputo sin mover datos<\/li>\n<li>Pausar la capacidad de c\u00f3mputo dejando intactos los datos, y en consecuencia solo pagar por el almacenamiento<\/li>\n<li>Reactivar la capacidad de c\u00f3mputo durante las horas de operaci\u00f3n\u00a0 del negocio<\/li>\n<\/ul>\n<p>Fig. 3 SQL Datawarehouse detalles de componentes<\/p>\n<p><a href=\"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-content\/uploads\/2017\/09\/dwarchitecture.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-150 size-full\" src=\"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-content\/uploads\/2017\/09\/dwarchitecture.png\" alt=\"\" width=\"729\" height=\"646\" srcset=\"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-content\/uploads\/2017\/09\/dwarchitecture.png 729w, https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-content\/uploads\/2017\/09\/dwarchitecture-300x266.png 300w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p><b>Control node:<\/b>\u00a0El Control node administra y es el encargado de optimizar los querys. Es la capa de presentaci\u00f3n que interact\u00faa con todas las aplicaciones y conexiones. En un SQL Data Warehouse, el Control node internamente no es otra cosa que una instancia de Azure SQL Database, y una vez que nos conectamos a \u00e9l se puede ver que es lo mismo que una conexi\u00f3n a SQL Server tradicional. La diferencia es que el Control node coordina todo el movimiento de datos y el procesamiento requerido para ejecutar los querys en forma paralela sobre los datos distribuidos. Cuando se env\u00eda un query T-SQL a ejecutar,\u00a0 el Control node lo transforma en querys separados para que puedan ejecutarse en paralelo en cada Compute Node.<\/p>\n<p><b>Compute nodes:<\/b>\u00a0Cada Compute node es el m\u00fasculo detr\u00e1s del SQL Data Warehouse. Cada uno de \u00e9stos, son instancias Azure SQL Database que almacenan los datos y procesan los querys. Cada vez que se a\u00f1ade informaci\u00f3n,\u00a0 el SQL Data Warehouse distribuye los registros en cada Compute node que posee la implementaci\u00f3n. Estos Compute nodes son los que trabajan en paralelo para ejecutar cada query sobre la porci\u00f3n local de datos que posee cada uno. Luego de procesar, estos le pasan los resultados al Control node. Y para finalizar el Control node realizar las agregaciones de todas las partes para devolver el resultado final.<\/p>\n<p><b>Storage:<\/b>\u00a0Toda la informaci\u00f3n es almacenada en Azure\u00a0 Blob storage. Cuando los Compute nodes trabajan con los datos, estos escriben y leen directamente desde y hacia al blob storage. Debido a la caracter\u00edstica de Azure storage que pude expandirse transparente y ampliamente, , SQL Data Warehouse hereda esta caracter\u00edstica. Adem\u00e1s, dado que el almacenamiento y el c\u00f3mputo se encuentran separados, SQL Data Warehouse puede escalar el almacenamiento en forma independiente de escalar los nodos de c\u00f3mputo y vice-versa (maximizando el costo y eficiencia de uso de la soluci\u00f3n). Asimismo, Azure Blob storage es una soluci\u00f3n de almacenamiento que es completamente tolerante a fallos, y automatiza el proceso de\u00a0 backup y restore.<\/p>\n<p><b>Data Movement Service:<\/b>\u00a0El servicio de Data Movement\u00a0 (DMS) es el encargado de &#8220;mover&#8221; los datos entre los nodos. El DMS otoga a los Compute nodes acceso a los datos que necesitan para los joins y las agregaciones . El DMS no es un servicio de Azure, es un servicio de Windows que se ejecuta al lado del servicio de Azure SQL Database en todos los nodos.. El DMS es un proceso background que no puede ser accedido en forma directa. Sin embargo, se pueden ver los query plans y observar las operaciones del DMS, ya que el movimiento de datos es requerido normalmente para ejecutar un query en paralelo.<\/p>\n<h3><b>Resumen <\/b><\/h3>\n<p>Como hemos podido ver, SQL Datawarehouse es m\u00e1s que una sola caja corriendo un gran SQL Server, es una arquitectura distribuida y con el coraz\u00f3n en el servicio de DMS y el Control Node. Si bien existen ofertas de Hardware de DELL o HP para ejecutar esta arquitectura on-premises, el beneficio completo se ve en el servicio de Azure ya que a diferencia de on-premises se puede escalar y disminuir tanto la capacidad de c\u00f3mputo como el almacenamiento, y en consecuencia se maximiza la performance y el costo al mismo tiempo.<\/p>\n<p>Y desde mi perspectiva, el punto m\u00e1s importante es que toda la soluci\u00f3n utiliza c\u00f3digo T-SQL, lo que permite apalancar cualquier soluci\u00f3n existente de SQL Server (con alg\u00fan cambio menor obviamente) y utilizar la potencia de procesamiento en paralelo.<\/p>\n<p>En las pr\u00f3ximas series, veremos c\u00f3mo aprovisionar un entorno de SQL Datawarehouse en Azure y como probar las distintas caracter\u00edsticas del motor.<\/p>\n<h5><b>Links y Referencias<\/b><\/h5>\n<p><strong>SQL DW<\/strong>: <a href=\"https:\/\/azure.microsoft.com\/es-es\/services\/sql-data-warehouse\/\">https:\/\/azure.microsoft.com\/es-es\/services\/sql-data-warehouse\/<\/a><\/p>\n<p><strong>Doc. Producto:<\/strong> <a href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/sql-data-warehouse\/\">https:\/\/docs.microsoft.com\/es-es\/azure\/sql-data-warehouse\/<\/a><\/p>\n<p><strong>TRIAL:<\/strong> <a href=\"https:\/\/azure.microsoft.com\/en-us\/services\/sql-data-warehouse\/extended-trial\/?wt.mc_id=AID627566_QSG_SCL_183831&amp;utm_source=t.co&amp;utm_medium=referral\">https:\/\/azure.microsoft.com\/en-us\/services\/sql-data-warehouse\/extended-trial\/?wt.mc_id=AID627566_QSG_SCL_183831&amp;utm_source=t.co&amp;utm_medium=referral<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visitas: 972Vamos a comenzar con esta serie de posts dedicados a esta tecnolog\u00eda que brinda Microsoft hace ya un tiempo y cobra mucho valor en estas \u00e9pocas de vol\u00famenes masivos de informaci\u00f3n. Azure SQL Datawarehouse es un servicio Cloud de Microsoft Azure, que ofrece una base de datos relacional con procesamiento paralelo masivo (MPP) capaz &hellip; <a href=\"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/sql-datawarehouse-101-parte-1\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;SQL Datawarehouse 101 &#8211; Parte 1&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,31,23],"tags":[40,48,47,46],"_links":{"self":[{"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/posts\/85"}],"collection":[{"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":2,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":151,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/posts\/85\/revisions\/151"}],"wp:attachment":[{"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/precisionit.com.ar\/blogs\/marianokovo\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}