Gestión de datos https://sg.com.mx/ en Conociendo el DMBOK https://sg.com.mx/revista/56/data-management-bok <span class="field field--name-title field--type-string field--label-hidden">Conociendo el DMBOK</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/datos-fig1.jpg" width="600" height="600" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 03/16/2018 - 00:06</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/56" hreflang="und">SG #56</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/oswaldo-baez" hreflang="und">Oswaldo Baez</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Los avances tecnológicos contribuyen a aumentar la competitividad en distintos sectores y llevan a las empresas a buscar nuevas opciones de diferenciación. En el siglo pasado, ese diferenciador se manifestaba principalmente en los productos y capacidad de producción o administración de las empresas. Hoy en día, ese diferenciador es la información; &nbsp;es decir, cada vez hay más y más organizaciones públicas y privadas que buscan mantenerse competitivas (eficientes y eficaces) mediante el aprovechamiento de sus datos e información.</p> <p dir="ltr">Para conseguir el objetivo de mejorar su negocio por medio del aprovechamiento de datos, es común que las organizaciones se vuelquen en iniciativas de análisis de información (actualmente llamada “ciencia de datos”), con el propósito de obtener cualquier tipo de beneficio que sea factible de estos recursos. Desafortunadamente, quienes buscan seguir este “atajo” sin sustentarlo con una estrategia adecuada terminan obteniendo resultados de poco valor al negocio. Para lograr el éxito, las organizaciones deben considerar cómo gestionar su información de forma holística y efectiva, asegurando en todo momento que se cumpla con la calidad esperada, a fin de que esto impacte positivamente a todos niveles de su operación.</p> <p dir="ltr">Afortunadamente, desarrollar o mejorar una cultura de gestión de datos e información, no tiene que convertirse en un reto que se inicie desde una hoja en blanco; es decir, no hay necesidad de “reinventar la rueda”. De hecho, literalmente, la &nbsp;“rueda de la gestión de datos” ya está definida, y se puede apreciar en la figura 1.</p> <p data-entity-type="" data-entity-uuid="" style="text-align: center;"><span><img alt="" data-entity-type="" data-entity-uuid="" height="282" src="https://lh3.googleusercontent.com/LZtWFNqUj8uyPwpAFNzqQwjcYSbKzaQPi-ztPuxNxiaAVkz-WHdxfMexPMY_3eQxLnCI42R4xoFkY38J2t6ggQgeath9MRWN8Xi-7JXULwbIAVB5ai1p0xiGwsqg263veXQHbphC" style="border: medium none; transform: rotate(0rad);" width="282" /><span title="Click and drag to resize">​</span></span></p> <p class="text-align-center" dir="ltr"><em>Figura 1. Rueda de gestión de datos. DAMA, 2013.</em></p> <p>&nbsp;</p> <p dir="ltr">Estas prácticas, definidas por la Data Management Association (DAMA), han sido documentadas en la guía conocida como DAMA-DMBOK (Data Management Body of Knowledge), la cual al paso del tiempo se ha convertido en una importante referencia en esta materia.</p> <p dir="ltr">Actualmente, dicha guía se encuentra en su segunda edición, publicada en julio del 2017, proponiendo las diferentes áreas funcionales que componen la gestión de datos e información. La guía es un compendio de mejores prácticas y terminología, sin detallar métodos y técnicas específicas, manteniéndose agnóstica a tecnologías y marcas. Su contenido es un apoyo para organizaciones interesadas en, por ejemplo, implantar y/o robustecer su marco de gobernanza de datos e información, mejorar la calidad de su información, hacer transparente la existencia de la información y como está se relaciona, adoptar esquemas para la gestión de sus metadatos, desarrollar una capacidad analítica (data science), entre otras.</p> <p dir="ltr" style="line-height:1.38;margin-top:10pt;margin-bottom:10pt;text-align: center;"><b id="docs-internal-guid-ea0bd437-5177-56e2-b342-95ba7dfc74ca" style="font-weight:normal;"><span style="font-size:11pt;font-family:'Open Sans';color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;"><img alt="" data-entity-type="" data-entity-uuid="" height="270" src="https://lh5.googleusercontent.com/gvYL6jjTOqBpLzKVvKDyzXfCVAfdSdXAgXKwsRgHFiHWB4wiM2NSQ2xiTH8GLJGERChaxP8yo7G_BBXNb3whWIQ144uhp3tczQmqUGtEKbvq_KtU3rMOGsBw3nXwofigBP-jgDY2" style="border: medium none; transform: rotate(0rad);" width="207" /></span></b></p> <p class="text-align-center" dir="ltr"><em>Figura 2. DAMA-DMBOK, 2da edición</em></p> <p dir="ltr">Algunos de los aspectos importantes de la nueva edición son los siguientes:</p> <ul> <li dir="ltr"> <p dir="ltr">El capítulo de “Ética en la Gestión de Datos” propone un tema central y neurálgico: la conducción que debe regir a todo el personal involucrado en el manejo de la información.</p> </li> <li dir="ltr"> <p dir="ltr">El capítulo de “Big Data y Data Science” se refiere a la relación del gobierno de datos con éstos temas fundamentales. Para ello, establece una línea base para identificar un plan de acción encaminado a la implementación de proyectos y actividades de análisis de información (data science), en conjunto con la viabilidad de contar con una estrategia de gestión de datos de distintas fuentes disponibles dentro de las organizaciones considerando amplitud, velocidad de emisión y variedad de formatos (big data).</p> </li> <li dir="ltr"> <p dir="ltr">También, aborda el tema de evaluar y evolucionar la Madurez de la gestión de datos dentro de la organización a través del capítulo “Data Management Maturity Assessment” .</p> </li> <li dir="ltr"> <p dir="ltr">Expone los roles ideales y necesarios para favorecer un enfoque orientado a los datos de una organización en el capítulo “Data Management Organization and Role Expectation”.</p> </li> <li dir="ltr"> <p dir="ltr">En el capítulo “Data Management and Organizational Change Management” analiza dos enfoques de gestión del cambio considerando la propuesta de hacer un enfoque hacia la gestión de datos e información dentro de una organización tomando la propuesta del DMBOK.</p> </li> </ul> <h3 dir="ltr">Conclusión</h3> <p dir="ltr">Esta Guía de DAMA presenta una estrategia completa para llevar a las organizaciones a un enfoque y orientación a la información o los datos.</p> <p dir="ltr">Es importante mencionar que en México ya existe una representación de DAMA desde mayo del 2016. Es una Asociación, con el nombre de DAMA Capítulo México, cuya misión, acciones y objetivos están encaminados a promover y facilitar el desarrollo de &nbsp;la Cultura de Gestión de Datos e Información en el país. Los interesados deberán dirigirse a<a href="http://www.dama.org.mx/"> http://www.dama.org.mx/</a> para obtener mayor información del DAMA-DMBOK y involucrarse en el desarrollo de la Comunidad de los Profesionales de los Datos o la Información en México. &nbsp;</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>El Dr. Oswaldo Baez se desempeña como Arquitecto de Información Financiera en Banco de México, y es miembro del capítulo México de DAMA. Es egresado del Instituto Politécnico Nacional y cuenta con un Doctorado en Ciencias Computacionales por la Universidad de York.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Fri, 16 Mar 2018 06:06:50 +0000 sg 8030 at https://sg.com.mx https://sg.com.mx/revista/56/data-management-bok#comments Exportando Sistemas Relacionales a Sistemas Columnares Distribuidos https://sg.com.mx/revista/55/exportando-sistemas-relacionales-sistemas-columnares-distribuidos <span class="field field--name-title field--type-string field--label-hidden">Exportando Sistemas Relacionales a Sistemas Columnares Distribuidos</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/datos-fig1.png" width="502" height="236" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 08/21/2017 - 15:31</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/55" hreflang="und">SG #55</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/author-speaker/hugo-la-mora" hreflang="und">Hugo de la Mora</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>El manejo de información masiva se ha hecho cotidiano, y una estrategia común para analizar grandes cantidades de datos es moverla de las bases de datos relacionales tradicionales (RDBMS) hacia bases de datos columnares distribuidas.</p><p dir="ltr">En el presente artículo muestro los pasos necesarios para migrar información relacional a una infraestructura de Hive en Hadoop. La idea básica es importar grandes datos de un origen relacional como Microsoft SQL Server a un almacenamiento en Hadoop como Hive o HDFS, teniendo la posibilidad de analizar esa información a través de Hue.</p><h3 dir="ltr">Panorama</h3><p dir="ltr">Para esta labor utilizaremos Apache Sqoop [1], una herramienta precisamente creada para mover datos entre bases de datos estructuradas y Hadoop. Sqoop trabaja con tablas individuales, cada fila de una tabla se trata como un registro en HDFS. Todos los registros se almacenan como datos de texto en archivos de texto, en Hive o HBase (ver figura 1).</p><p dir="ltr"><img src="https://lh3.googleusercontent.com/rppAtPXM6A0yfFfQ60DFtcv5rEu-gGzjivIvHJXDb8OwXMY8QrLwsSDv8l_A3zEAB-_Rl3G-fDpaqBtHokxSU7WPq8mcGI9vmd8eMkx0cdbNGM51WB1M-7N2Mn44o-RfpOM76zfq5z9N7fy8TA" width="589" height="274" /></p><p dir="ltr"><em>Figura 1. Flujo de Sqoop</em></p><h3>Prerrequisitos</h3><p dir="ltr">Para el propósito de este tutorial voy a suponer que ya se tiene instalado y funcionando tanto un ambiente de SQL Server como otro de Hadoop. Si no tienes el de Hadoop, para propósito de aprendizaje puedes utilizar una máquina virtual de Cloudera Quickstart [2]. En tu ambiente de Hadoop necesitas tener instalado Sqoop. Checa si ya tienes, invocando el comando “sqoop” desde la línea de comandos. Si no lo tienes, lo más conveniente es instalarlo por medio del manejador de paquetes de tu sistema operativo (en el caso de OSX está disponible para Homebrew).</p><h3 dir="ltr">Preparando la conexión</h3><p dir="ltr">Nos conectaremos a SQL Server por medio de JDBC. Para que esto funcione primero necesitamos habilitar TCP/IP en nuestra instancia. Esto se hace desde el SQL Server Configuration Manager.</p><p dir="ltr">Posteriormente vamos a descargar el driver de JDBC de SQL Server en nuestro ambiente Hadoop. Este se obtiene del sitio web de Microsoft y al momento de escribir este artículo la versión más reciente se obtiene en <a href="http://swgu.ru/t3">http://swgu.ru/t3</a> . Dentro del paquete encontraremos una carpeta jre7 y otra jre8 y dentro de cada una hay un archivo .jar que corresponde al driver. Así que seleccionaremos el archivo que corresponda a la versión de java que estemos usando y lo copiaremos en /var/lib/sqoop . Si esta carpeta no existe, la creamos y le asignamos los permisos necesarios como se ve a continuación.</p><p class="code" dir="ltr">$ mkdir -p /var/lib/sqoop<br />$ chown sqoop:sqoop /var/lib/sqoop <br />$ chmod 755 /var/lib/sqoop<br />$ sudo cp sqljdbc_6.0/enu/jre8/sqljdbc42.jar /var/lib/sqoop/</p><h3 dir="ltr">Importando datos</h3><p dir="ltr">Para verificar que podemos conectarnos de nuestro ambiente Hadoop a SQL Server vamos a comenzar listando las bases de datos. Para ello utilizamos sqoop list-databases con los argumentos de conexión requeridos (en este ejemplo nuestro SQL Server está disponible en la ip 192.168.56.1 y exponiendo el puerto 1444, y tiene un usuario hadoopUser con contraseña hadoop… ).</p><p class="code" dir="ltr">$ sqoop list-databases --connect jdbc:sqlserver://192.168.56.1:1444 --username hadoopUser --password hadoop...</p><p dir="ltr">Con lo anterior obtendremos una lista de las bases de datos.</p><p dir="ltr">A continuación importamos la base de datos y tablas que queremos (en este caso la tabla employee de la base de datos sqoopDB).</p><p class="code" dir="ltr">$ sqoop import --connect "jdbc:sqlserver://192.168.56.1:1444;username=hadoopUser; password=hadoop...; database=sqoopDB" --table employee --hive-import</p><p dir="ltr">Por cierto, si quisieramos importar todas las tablas de la BD sin necesidad de especificarlas una por una utilizaríamos sqoop import-all-tables –connect “jdbc://sqlserver….” --hive-import</p><p dir="ltr">Si quieres revisar lo que se importó a Hadoop, puedes hacerlo por medio Hue, una interfaz gráfica web para navegar Hadoop.</p><h3 dir="ltr">Hagámoslo repetible</h3><p dir="ltr">Si quisieramos estar realizando esta tarea frecuentemente, lo más conveniente es &nbsp;crear un “job” en sqoop que simplemente podemos invocar. Para ello usamos sqoop job con el argumento --create y el resto de la información para conectarse a SQL Server.</p><p class="code" dir="ltr">$ sqoop job --create jobImpEmpl -- import --connect "jdbc:sqlserver://192.168.56.1:1444;username=hadoopUser;password=hadoop...;database=sqoopDB" --table employee --hive-import</p><p dir="ltr">Lo más probable es que no querramos importar todos los datos cada vez que ejecutamos la tarea, sino que solo querramos importar los datos nuevos o modificados. Para lograr esto usamos la opción --incremental e indicamos la columna con el timestamp a verificar.</p><p class="code" dir="ltr">$ sqoop job --create jobImpEmplInc -- import --connect "jdbc:sqlserver://192.168.56.1:1444;username=hadoopUser;password=hadoop...;database=sqoopDB" --table employee --incremental lastmodified -check-column creationdate --hive-import</p><p dir="ltr">Ya creamos los jobs, pero todavía no los ejecutamos. Para ejecutar un job utilizamos sqoop job --execute &lt;nombre-del-job&gt;. Para ver los jobs que tenemos definidos podemos usar sqoop job --list. Y si queremos consultar los detalles de algún job usamos sqoop job --show &lt;nombre-del-job&gt;.</p><h3 dir="ltr">Ejecución periódica automatizada</h3><p dir="ltr">Si deseamos estar importando datos de manera periódica y automatizada, lo más conveniente es programar la tarea por medio de Oozie, que es una herramienta del ecosistema Hadoop que permite gestionar workflows desde una interfaz web.</p><p dir="ltr">Oozie tiene un editor en el cual defines el workflow. Si ya tienes el comando de sqoop que deseas ejecutar simplemente puedes “pegarlo” en un campo de texto al crear tu workflow. Después de eso podemos crear “coordinadores” para calendarizar el envío de información al sistema HDFS (ver figura 2).</p><p dir="ltr"><img src="https://lh3.googleusercontent.com/DYYH_O1XfK_Rbb5F5HV2PrlK6uICsvrtEmdQMbvUG6waFw9A57lJXQUM7hnZKsn80hnxGAv7_s-y141zhpMVxgg8MYoJV5ZahO6nM-BkRNQSjHnKl75byG6mu39aKuKGCUpQI-oieUh3tnAMWg" width="320" height="384" /></p><p dir="ltr"><em>Figura 2. Coordinar workflows en Oozie</em></p><h3 dir="ltr">Conclusión</h3><p dir="ltr">Se ha mostrado de una forma sencilla la extracción de datos desde un popular ambiente de bases de datos relacionales hasta un sistema columnar como Hive.</p><p dir="ltr"><strong>Referencias</strong></p><ol><li><a href="http://sqoop.apache.org">http://sqoop.apache.org</a></li><li><a href="https://www.cloudera.com/developers/get-started-with-hadoop-tutorial.html">https://www.cloudera.com/developers/get-started-with-hadoop-tutorial.html</a></li></ol></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>El MSC Hugo Enrique De La Mora Carrillo (@hugodelamora) es Chief Information Security Officer en CONTPAQi. Anteriormente ha trabajado con sistemas distribuidos, big data, desarrollo para cloud y móvil.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Mon, 21 Aug 2017 20:31:18 +0000 sg 7736 at https://sg.com.mx https://sg.com.mx/revista/55/exportando-sistemas-relacionales-sistemas-columnares-distribuidos#comments Resolviendo Dilemas en un Pipeline de Data Science https://sg.com.mx/revista/50/resolviendo-dilemas-un-pipeline-data-science <span class="field field--name-title field--type-string field--label-hidden">Resolviendo Dilemas en un Pipeline de Data Science</span> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-hidden field__item"> <img src="/sites/default/files/images/datascience.jpg" width="1024" height="768" alt="" loading="lazy" typeof="foaf:Image" /> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Fri, 03/04/2016 - 17:01</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/50" hreflang="und">SG #50</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores-sg/blanca-vargas" hreflang="und">Blanca Vargas</a></li> <li><a href="/buzz/autores-sg/andres-arteaga" hreflang="und">Andrés Arteaga</a></li> <li><a href="/buzz/autores-sg/eduardo-flores" hreflang="und">Eduardo Flores</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Al iniciar un proyecto de Data Science&nbsp;se tienen que tomar diversas decisiones para que cada etapa del flujo de trabajo o pipeline cumpla con las metas especificadas. El pipeline que definamos depende de factores tales como la experiencia que se tiene con las plataformas, herramientas, lenguajes o algoritmos específicos así como de la investigación previa y referencias externas. Lo ideal es lograr un equilibrio entre la rapidez que nos brinda el uso de los elementos conocidos y la incorporación de herramientas y conocimiento nuevo que permita lograr resultados de forma más rápida y eficiente. En este artículo abordaremos algunos dilemas a los que generalmente nos enfrentamos en la definición de un pipeline y en nuestra experiencia, qué aspectos debemos considerar para tomar la mejor decisión.</p><p>Aunque las etapas de un pipeline están muy definidas, todas están ligadas a un objetivo. Y es precisamente la ausencia de un objetivo claro una de las principales causas de los problemas. Para definir ese objetivo debemos cuestionarnos aspectos como: ¿cuál es el resultado tangible esperado del proyecto?, ¿cuáles son los beneficios que generaría el proyecto en caso de ser exitoso?, ¿a quién van dirigidos los resultados? La claridad con la que podamos responder a estas preguntas es fundamental para reducir los contratiempos que invariablemente surgirán.</p><p>A lo largo del proyecto nos encontraremos con diversas disyuntivas que nos obligarán a tomar decisiones. Es conveniente reflexionar antes de tomar una decisión impulsiva que haga que ese proyecto fascinante, divertido y retador se transforme en nuestra peor némesis. A continuación se describen algunos dilemas comunes a los que nos hemos enfrentado y que se asocian a las diversas etapas de un pipeline.</p><h3>Adquisición</h3><p>Cuando inicia un proyecto, uno de los primeros puntos a tratar es, ¿qué información necesitamos para lograr los mejores resultados? En las reuniones iniciales generalmente se hacen acuerdos sobre la información a utilizar y sus respectivas fuentes. Sin embargo, a medida que transcurren los días no es raro que se presenten las siguientes situaciones:</p><p>• Nos damos cuenta de que no tenemos toda la información que se definió en un principio.</p><p>• Necesitamos información adicional.</p><p>• No tenemos acceso a todas las fuentes.</p><p>Es recomendable resolver estas cuestiones lo antes posible. Aunque sabemos que nos encontramos en un proceso iterativo en el cual es posible que hagamos pruebas con datos diferentes a los originales, es mejor tener un conjunto de datos base.</p><p>Una situación común es que cuando el proyecto ya se encuentra avanzado se descubren nuevos datos que podrían ser útiles al modelo. Incorporar nuevos datos podría mejorar el resultado pero retrasaría el tiempo de entrega, ¿qué hacer? Esta es una decisión de gestión de proyecto más que nada y podrá variar dependiendo del contexto particular. Sin embargo, nuestra recomendación es guiarse por los lineamientos del desarrollo iterativo, terminando la iteración actual con los datos que se tenían contemplados al inicio de dicha iteración, y evaluar si tiene sentido incorporar los nuevos datos en iteraciones posteriores. Siempre debemos tener en cuenta que al final del proyecto es preferible tener un modelo útil aunque lleve más tiempo, que terminar a tiempo con un modelo inútil.</p><p>No tengamos falsas expectativas, el caso ideal en el cual tenemos desde el inicio todos los datos perfectos y completos es solamente una ilusión.</p><h3>Exploración y entendimiento</h3><p>Cuando existen tiempos reducidos podemos tener la tentación de omitir pasos, especialmente en la fase de exploración. A fin de cuentas, confiamos en las fuentes, ¿qué podría pasar? Aun cuando tengamos datos muy limpios, es necesario asegurarse de que no contienen información que nos pueda llevar a resultados erróneos. Por ejemplo, podemos encontrar rangos de edades irreales y ciudades que no existen, entre otros posibles hallazgos que si no los notamos a tiempo nos harán padecer en fases posteriores. Llevar a cabo la exploración no debe ser un dilema, debe ser un paso riguroso antes de seguir con el proyecto.</p><p>Pero explorar los datos no lo es todo. Debemos estar seguros de que entendemos cada variable o atributo. Si contamos con un diccionario de datos la labor se facilita pero si no contamos con él, vale la pena no suponer nada e investigar con el administrador de base de datos de su preferencia sobre el significado de los datos. No hacerlo puede tener un costo elevado.</p><h3>Pre-proceso, transformación, manipulación</h3><p>Esta fase requiere que tomemos decisiones con respecto a las transformaciones que nos convienen para obtener los mejores resultados. Es necesario conocer bien los datos: ¿de qué tipo son?, ¿qué efecto tienen estos tipos en las transformaciones? Existen detalles sutiles que no deben dejarse para después. No es lo mismo una variable tipo fecha que una variable numérica; no es lo mismo una variable tipo factor que una tipo texto. Aunque visualmente se vean iguales, si no damos a las variables el formato adecuado podemos consumir tiempo valioso.</p><p>En cuanto a los valores atípicos (outliers), también nos enfrentamos a dilemas: ¿los quitamos?, ¿los dejamos?, ¿cuáles son las consecuencias de estas decisiones? Como consideraciones generales podemos decir que si los valores atípicos tienen significado, no se deben eliminar. Si por el contrario, valores atípicos distorsionan la realidad entonces deben eliminarse. Imaginemos que estamos obteniendo perfiles de usuario para ciertos productos. Si introducimos edades negativas o mayores de 200 años los modelos resultantes mostrarán patrones de usuarios inexistentes. Por supuesto, hay diversas situaciones y tratamientos que pueden darse a valores atípicos. El punto clave es que no debe restarse importancia a las decisiones sobre estos valores.</p><h3>Análisis y modelado</h3><p>Ya que nuestros datos están preparados y listos, la pregunta es ¿qué tipo de análisis necesito? Esto depende fundamentalmente del objetivo del análisis. Existen infinidad de técnicas y algoritmos que pueden ser útiles ya sea como base o bien podemos diseñar un nuevo algoritmo ad-hoc a nuestro problema. En cualquier caso, la decisión de la técnica o algoritmo a aplicar tiene su origen en el objetivo. Y si no tenemos claro el objetivo es muy difícil esperar tener buenos resultados.</p><p>Un problema frecuente es que podemos caer en la tentación de querer aplicar algoritmos o técnicas emergentes y creer que si no lo hacemos no somos competitivos. Por ejemplo, ¿de verdad Deep Learning es la solución a nuestro problema? Tenemos que encontrar argumentos sólidos para tomar decisiones de este tipo. Una estrategia útil es empezar por la solución más simple e ir incrementando el nivel de sofisticación de la solución en la medida que lo requiera el proyecto, no en la medida de nuestro ego.</p><h3>Comunicación y operación</h3><p>Y llegamos a la fase en la que ya tenemos resultados buenos. ¡Si, lo logramos! Después de varias iteraciones en las fases anteriores hemos llegado a la parte de presentar los resultados. La interrogante es: ¿cómo presentarlos?, la respuesta depende de diversos factores: ¿el resultado es un reporte?, ¿es un producto?, ¿es un servicio?, ¿es un dashboard?, ¿es un resultado final o una iteración?, ¿para quién son?</p><p>Aunque estemos muy felices con nuestros resultados, una presentación inadecuada puede ser desastrosa si no mostramos los aspectos de interés para cada público. Es conveniente elaborar dos presentaciones base:</p><p>• Presentación técnica: debe incluir detalles de análisis e implementación para que sea reproducible. Debe incluir referencias a los repositorios donde se ubica el proyecto para que los interesados puedan repetir los experimentos y análisis. En este tipo de presentación es importante contestar la pregunta: ¿cómo se obtuvieron los resultados?</p><p>• Presentación no técnica: debe omitir detalles de análisis e implementación e incluir resultados duros y cómo aplicar esos resultados para lograr el objetivo del negocio. Este objetivo puede traducirse en beneficios económicos, incremento en ventas, campañas de marketing, incremento en número de usuarios, entre otros. La pregunta a responder es: ¿qué beneficio se obtiene con esos resultados?. En este tipo de presentación se debe ser cuidadoso en no utilizar tecnicismos a menos que sea estrictamente necesario. Es nuestra responsabilidad describir las cosas de modo que esté al alcance de profesionales de diversas áreas. Y eso no es una tarea trivial.</p><h3>Dilemas técnicos</h3><p>La implementación de un producto basado en análisis de datos masivos provoca retos interesantes a resolver dado que los sistemas productivos generalmente no están diseñados para el tipo de carga que implica. Por ejemplo, una base de datos que soporta una aplicación web de alta escalabilidad puede responder adecuadamente cuando se tienen millones de peticiones concurrentes pero cuando se necesita consultar para análisis de datos o para un producto basado en Big Data puede poner en riesgo los sistemas productivos. ¿Qué hacer entonces?, ¿Implementar una solución batch/offline sacrificando posible utilidad de una solución en tiempo real para el usuario?, ¿replicar la base de datos a otra de sólo lectura o con fines exclusivos para el producto de data science?, ¿pagar una nueva instancia en caso de bases de datos comerciales o escoger una alternativa abierta? ¿exportar simplemente a archivos de texto y dejar que los scripts hagan el trabajo pesado? ¿utilizar cómputo en la nube para el procesamiento, y si es así, cómo hacer segura la información privada que saldrá de nuestros servidores?</p><p>Durante la fase de diseño del sistema, uno de los primeros dilemas que se pueden encontrar en las implementaciones es el tipo de arquitectura en la que va a correr. En mayor parte se cuenta con dos opciones: utilizar la infraestructura local o utilizar las diferentes servicios que ofrecen procesamiento en la nube. En este caso es muy importante conocer las ventajas y desventajas que cada una de estas implementaciones ofrece, además de las necesidades propias del sistema a implementar y que pueden afectar en menor o mayor medida a la decisión que vamos a tomar.</p><p>Lo primero que tenemos que tomar en cuenta es la capacidad de procesamiento necesaria para la implementación de nuestra solución de data science, de esta manera podemos estimar si los servidores propios son lo suficientemente capaces para soportar la carga extra que vamos a agregar al nivel de trabajo diario. En caso de que el procesamiento no sea factor, se debe de tomar en cuenta la cuestión monetaria ya que las soluciones en la nube involucran un gasto que comienza siendo moderado pero rápidamente puede llegar a cifras altas dependiendo de las instancias que necesitemos crear y el tiempo que las tengamos operando.</p><p>Además de las barreras económicas y de procesamiento, existen requerimientos específicos del sistema. En este caso si se elige una implementación de cloud, es necesario prever la integración necesaria con el sistema que tenemos local. Necesitamos saber si es necesaria la replicación de información almacenada en bases de datos locales y que se tendrá que estar replicando de manera constante a la solución en la nube, además de otros aspectos como la cantidad de información que será transferida desde el ambiente local a la nube y viceversa.</p><p>Si por otra parte se opta por una implementación local, es necesario prever desde un principio la necesidad futura ya que si es necesario escalar la implementación y no se cuenta con la infraestructura necesaria para hacerlo es posible que se requiera una reimplementación del sistema. Esta decisión puede llevar al consumo de tiempo y recursos que se pudieran haber invertido en otro tipo de solución.</p><h3>Conclusión</h3><p>Un proyecto de data science representa un reto en distintos niveles y los cuestionamientos son inevitables en el transcurso de las diversas etapas del mismo. Sin embargo, por sobre cualquier aspecto técnico está el factor humano. La colaboración, capacidad, motivación y buena disposición de los miembros del equipo son los factores clave que determinarán si el proyecto tendrá éxito o no.</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Blanca Vargas, Andrés Arteaga y Eduardo Flores forman parte del equipo de Innovación y Desarrollo en OCC Mundial. Blanca se desempeña como Data Scientist, Andrés como Data Engineer y Eduardo como Gerente de Desarrollo e Innovación.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Fri, 04 Mar 2016 23:01:49 +0000 sg 6273 at https://sg.com.mx https://sg.com.mx/revista/50/resolviendo-dilemas-un-pipeline-data-science#comments Análisis de datos: Cuando los hechos no son la realidad https://sg.com.mx/revista/44/analisis-datos-cuando-los-hechos-no-son-la-realidad <span class="field field--name-title field--type-string field--label-hidden">Análisis de datos: Cuando los hechos no son la realidad</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/users/hmcuesta" lang="" about="/users/hmcuesta" typeof="schema:Person" property="schema:name" datatype="" class="username">hmcuesta</a></span> <span class="field field--name-created field--type-created field--label-hidden">Mon, 07/07/2014 - 18:17</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/44" hreflang="und">SG #44</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/contributors/hector-cuesta" hreflang="und">Héctor Cuesta</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Hace ya varios años que se me dio la oportunidad de publicar mi primer artículo, en la revista Software Guru número 28 y el gusto por escribir no me ha dejado desde esa época.</p><p>El año pasado tuve la oportunidad de ser autor de un libro[1] para la editorial Packt Publishing, acerca de una de mis grandes pasiones, el Análisis de Datos. En el libro exploro una gran cantidad de algoritmos y ejemplos concretos, siempre tratando de que los capítulos sean auto-contenidos. Debido a mi naturaleza de Ingeniero de Software siempre trato de expresarme con código así que encontraran una gran cantidad de código en cada capítulo. Para el libro, utilizo el lenguaje Python, aprovechando librerías para el análisis de datos y machine learning como Pandas, SciPy, NumPy, matplotlib y mlpy. Para el procesamiento de datos utilizo MongoDB por su flexibilidad y su soporte al paradigma MapReduce y para visualización presento múltiples ejemplos con D3js. En la sección de Biblioteca de la presente edición encontrarán más sobre mi libro “Practical Data Analysis”.</p><h3>Análisis de Datos</h3><p>El análisis de datos es el proceso en donde datos crudos son ordenados, limpiados y transformados, con la finalidad de ser usados en métodos que ayuden a explicar el pasado y a predecir el futuro. Sin embargo el análisis de datos no tiene que ver con simplemente procesar números, más bien tiene que ver con hacer preguntas y encontrar respuesta de valor a partir de los datos.</p><p>El uso que se le da de forma general al análisis de datos es: el de explicar un fenómeno a través de extraer proporciones, distribuciones y patrones. Cualquier tipo<br />de fenómeno, ya sea natural, artificial o social, estos fenómenos pueden ser medidos y persistidos en un “dataset”. El entender tus datos generalmente requiere una<br />combinación de habilidades analíticas, conocimiento del dominio y esfuerzo. El cómputo nos provee de herramientas que facilitan la extracción, limpieza, procesamiento e interpretación de dichos datasets. Herramientas como SQL, R, MongoDB y Hadoop nos permiten manipular datos con diferentes naturalezas y a diferentes escalas. Sin embargo el análisis de datos no es algo nuevo y como vemos en la figura 1 se puede de forma clásica decir que: Si buscamos las causas en los datos estamos usando métodos estadísticos y si queremos extrapolar los datos desde las causas estamos frente a modelos probabilísticos.</p><p><img src="data:image/png;base64,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" alt="" /></p><p><em>Figura 1. Forma clásica del análisis de datos.</em></p><p>El análisis de datos se puede dividir en 3 áreas generales: descriptivo, prescriptivo y predictivo.</p><p>El análisis descriptivo es el primer paso que debemos realizar para poder darnos una idea general de la distribución de nuestros datos y de aparentes patrones, para esto podemos ayudarnos de la visualización.</p><p>En contraste el análisis prescriptivo nos puede guiar a crear mejores modelos de datos este tipo de análisis no se utiliza directamente, más bien nos sirve para confirmar nuestra intuición acerca de un problema particular, técnicas de reducción de datos como PCA (Análisis de Componente Principal) nos permiten reducir la complejidad del problema y sirven en sí mismos como una forma de clasificación.</p><p>Por último el análisis predictivo nos ayuda a desarrollar modelos a través de entender los datos y las circunstancias en las que estos son creados.</p><h3>Visualización</h3><p>La visualización es una forma rápida de adentrarnos en datasets (pequeños o grandes) para describir, resumir y explorar de forma directa listas de datos que de otra forma sería muy difícil ver. Algunas de las ventajas de la visualización de datos son:</p><ul><li>La detección de errores.</li><li>Encontrar patrones como tendencias.</li><li>Ayudarnos a seleccionar un tipo de modelo apropiado.</li><li>Determinar relaciones entre variables.</li></ul><p>Sin embargo la visualización es sólo una herramienta del análisis y no un substituto de las habilidades analíticas, o substituto para la estadística o para los modelos predictivos. El Capítulo 3 del libro se dedica enteramente a la Visualización de múltiples tipos de datos con D3js que es una librería de javascript que facilita la visualización vía web que de paso es muy atractiva estéticamente hablando.</p><h3>Análisis Predictivo</h3><p>Hay una colección de algoritmos que intentan derivar información predictiva directamente de los datos. La construcción de modelos predictivos tiene por objetivo asistir en las decisiones del mundo real. En el libro me enfoco principalmente en estas familias de algoritmos proveyendo de ejemplos claros implementados en Python o MongoDB, pueden encontrar los códigos de todo el libro disponibles a través de GitHub[2].</p><h3>Clasificación (Aprendizaje Supervisado)</h3><p>En la clasificación el algoritmo asigna cada registro a una categoría previamente definida. Hay cuatro tipos de algoritmos para los diferentes problemas enfrentados por el análisis predictivo. Se considera aprendizaje supervisado debido a que las clases son conocidas de antemano, por ejemplo: Spam o No-Spam, Transacción Válida o Transacción Fraudulenta.</p><p>En el Capítulo 4 desarrollo un ejemplo de clasificación de Spam a través del algoritmo Naive Bayes y el Capítulo 11 desarrolla un modelo para determinar el sentimiento<br />(Sentiment Analysis) de mensajes de Twitter usando NLTK que es una librería para procesamiento de lenguaje natural.</p><p>Por último en el Capitulo 8 doy una breve introducción a las Máquinas de Soporte Vectorial (SVM) que son uno de los algoritmos más utilizados para clasificación ya que ofrecen excelentes resultados globales. Las SVM utilizan una frontera de decisión (como se muestra en la figura 2) y se apoya de puntos geométricos (Kernels) para crear vectores que se encuentren cerca de la frontera, esto para poder trazar de forma clara donde se dividen las clases de datos (define dónde se separan los puntos rellenados de los vacíos). Ver Figura 2.</p><p><img src="data:image/png;base64,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" alt="" /></p><p><em>Figura 2. Puntos geométricos (Kemeis)</em></p><h3>Agrupación (Aprendizaje No-Supervisado)</h3><p>En los algoritmos de agrupación los datos son organizados en clústeres, por número de categorías, forma y tamaño. Se le llama no supervisados debido a que los datos de los clústeres no son conocidos de antemano. El Capítulo 10 aborda como extraer información de Facebook en forma de un Grafo Social, para después utilizar algoritmos de agrupamiento para poder encontrar subcomunidades como “compañeros de escuela” o “familiares cercanos” sin saber de antemano el número de grupos.</p><h3>Recomendaciones</h3><p>Los sistemas de recomendación pueden ser vistos como una forma de agrupamiento donde podemos empezar desde un epicentro (un producto o una persona) y buscamos registros similares o relacionados con el epicentro. Las recomendaciones pueden ser explícitas del comportamiento humano. ¿Quiénes son mis amigos más cercanos?, ¿qué producto me conviene mas de acuerdo a mis preferencias?, ¿qué película me gustaría ver mañana?</p><p>El Capítulo 5 muestra paso a paso como crear un Motor de Búsqueda de imágenes sin usar metadatos y recomienda las imágenes más parecidas a la que buscamos.</p><h3>Predicción de Series de Tiempo</h3><p>Aquí aplicamos técnicas estadísticas para predecir el siguiente valor de una serie de mediciones con una periodicidad establecida.</p><p>En el Capítulo 7 presento un modelo basado en la serie de tiempo de todos los cambios en el precio del oro de los últimos<br />20 años y propongo una forma de predecir el valor para el siguiente mes.</p><p>Me gustaría terminar con palabras del famoso estadista George E. P. Box “todos los modelos están mal, pero algunos son útiles”.</p><p><strong>Referencias</strong></p><p>[1] Libro Practical Data Analysis http://bit.ly/1co6hOZ<br />[2] https://github.com/hmcuesta/PDA_Book</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Hector Cuesta-Arvizu (@hmcuesta) es autor del libro “Practical Data Analysis” de la Editorial Packt Publishing. Provee servicios de consultoría en Ingeniería de Software y Análisis de Datos, adicionalmente se desempeña como instructor para NYCE en certificaciones de Desarrollo e Ingeniería de Software. Cuenta con maestría en ciencias de la computación y ha sido Revisor Técnico en los libros “Raspberry Pi Networking Cookbook”, “Raspberry Pi Robotic Projects” y “Hadoop Operations and Cluster Management” para Packt Publishing.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Mon, 07 Jul 2014 23:17:45 +0000 hmcuesta 5218 at https://sg.com.mx https://sg.com.mx/revista/44/analisis-datos-cuando-los-hechos-no-son-la-realidad#comments Data Grids: La clave para manejar gran cantidad de información móvil https://sg.com.mx/revista/41/data-grids-la-clave-manejar-gran-cantidad-informacion-movil <span class="field field--name-title field--type-string field--label-hidden">Data Grids: La clave para manejar gran cantidad de información móvil</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/1" lang="" about="/user/1" typeof="schema:Person" property="schema:name" datatype="" class="username">sg</a></span> <span class="field field--name-created field--type-created field--label-hidden">Sun, 09/22/2013 - 21:00</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/41" hreflang="und">SG #41</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>En el año 2012, las empresas en general contaban con la suficiente capacidad de base de datos para manejar y procesar la actividad diaria de sus clientes; sin embargo, analistas de IDC han pronosticado un incremento masivo en el uso de Internet móvil en los teléfonos inteligentes y tabletas. Esta tendencia y el aumento de datos móviles, se incrementa aún más por los sistemas interconectados y distribuidos como los que se encuentran en los automóviles, en los electrodomésticos y en los sensores de servicios. Este continuo crecimiento de los volúmenes transaccionales combinados en la llamada “Internet de las cosas”, implicará que los sistemas de base de datos tradicionales se vean limitados en un futuro cercano. Hoy, las empresas buscan escalar los sistemas sin perder rendimiento y aprovechar la ventaja y oportunidad comercial que ofrece Internet móvil. Como los niveles de datos tradicionales son demasiado rígidos, complejos y costosos para enfrentar el desafío de los datos móviles, las grillas de datos en memoria (in-memory data grids) están diseñadas para ofrecer los niveles necesarios de rendimiento y flexibilidad a escala.</p><p>Como resultado, las grillas de datos en memoria se están convirtiendo en una tendencia que sirve para modernizar el software y adaptarse a las complejas exigencias en términos de rendimiento. A continuación, se exponen diversas razones por las cuales esta tecnología está creciendo en adopción por el mercado:</p><p>Brinda información precisa en tiempo real: contar con acceso en tiempo real a la información precisa, marca la diferencia entre las decisiones acertadas y las erróneas. Los data grid acercan los datos a la aplicación, proveen tolerancia ante fallos y permiten un acceso rápido y de baja latencia a la información crucial para el negocio.</p><p>Alcanza altas expectativas en tiempo de actividad y capacidad de respuesta: para que los clientes permanezcan fieles y comprometidos, las aplicaciones deben funcionar con coherencia y prestar un servicio ininterrumpido; incluso durante los momentos de máxima actividad y de picos de tráfico imprevistos. Un data grid puede acelerarse y desacelerarse en forma elástica en los nodos distribuidos ayudando a cumplir con los tiempos de respuesta requeridos.</p><p>Procesa grandes volúmenes de transacciones: cada vez más negocios se realizan mediante aplicaciones en línea, lo cual aumenta la actividad web y obliga a las aplicaciones a manejar volúmenes de transacción sin precedentes y siempre en aumento. A medida que la cantidad de datos crece, las actividades de lectura y escritura en los<br />depósitos tradicionales de back-end pueden convertirse en cuellos de botella para el rendimiento de las aplicaciones. Los data grids actúan como capas intermedias entre los depósitos relacionales y los frontends para cumplir con los requerimientos de conservación de datos e impulsar un rendimiento sumamente rápido y escalable.</p><p>Se integra eficientemente con un nivel de datos complejo y rígido: la implementación de nuevas aplicaciones o actualizaciones debería ser un proceso ágil y simple. Data grids disminuyen los costos fijos y los dolores de cabeza asociados a la integración de niveles de datos, permitiendo a las empresas una rápida salida al mercado.</p><p>Interopera en entornos informáticos mixtos: las empresas de hoy en día poseen entornos informáticos diversos. Las aplicaciones y la infraestructura pueden encontrarse en el lugar, en la nube, ser heredados o contemporáneos. Los data grids pueden actuar como capa de abstracción de datos y ofrecer la flexibilidad de trabajar en una variedad de entornos, aplicaciones, plataformas y bases de datos.</p><p>Una grilla de datos en memoria es una solución de almacenamiento que permite a las aplicaciones cumplir con los exigentes requerimientos de rendimiento, disponibilidad, confiabilidad y escalamiento flexible. Puede actuar como capa intermedia entre la base de datos relacionales (RDBMS) y la aplicación, manteniendo datos que son intrínsecamente transitorios o temporales, o que son necesarios para el acceso veloz, el acceso frecuente o el acceso entre múltiples geografías. El RDBMS luego puede liberarse para almacenar datos a los que rara vez se accede o son modificados.</p><h3>¿En dónde se puede utilizar?</h3><p>En pocas palabras, el data grid puede actuar como “supercargador” de una aplicación. Aumenta el rendimiento de la aplicación para adaptarse a grandes volúmenes de transacciones y a picos de actividad con velocidades<br />en memoria. Y debido a su naturaleza distribuida y tolerante ante fallos, las grillas de datos son ideales para dar soporte a los negocios globales descentralizados de hoy en día.</p><p>En la actualidad, data grid puede utilizarse en una gran variedad de industrias, como por ejemplo al brindarle al cliente una experiencia sin contratiempos en diferentes aplicaciones móviles y de la Web, al lograr un rendimiento y un escalamiento confiable frente a las fluctuaciones estacionales del negocio, o al reducir la carga de las bases de datos relacionales tradicionales a fin de ofrecerles a los usuarios servicios donde el factor tiempo es crucial. Las tecnologías de data grid también son utilizadas cada vez más en compañías internacionales para administrar y distribuir recursos entre múltiples centros de datos en tiempo real.</p><p>En un espectro amplio de industrias, las organizaciones de hoy enfrentan desafíos que el escalamiento tradicional de datos no puede resolver con facilidad, ya sea que se trate de brindar acceso a información en tiempo real, manejar grandes volúmenes de transacciones, cumplir con la exigencia de largos tiempos productivos o integrarse con un entorno informático diverso y dinámico.</p><p>Las tecnologías in-memory data grid permiten que las empresas alcancen un alto grado de flexibilidad y rendimiento para sus aplicaciones y agilicen las interacciones con el nivel de datos, brindándoles una ventaja para aprovechar las oportunidades comerciales y salir más rápidamente al mercado.</p><p>&nbsp;</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item">Christina Wong es Gerente Senior de Comercialización de Productos de Red Hat y está a cargo de Red Hat JBoss Data Grid y Red Hat JBoss Portal Platform. Obtuvo una Maestría en Administración de Empresas en la Universidad de Babson en EU y posee una década de experiencia empresarial y en ingeniería en alta tecnología.</div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Mon, 23 Sep 2013 02:00:44 +0000 sg 4272 at https://sg.com.mx https://sg.com.mx/revista/41/data-grids-la-clave-manejar-gran-cantidad-informacion-movil#comments Trabajando con stored procedures en SQL Server https://sg.com.mx/revista/29/trabajando-stored-procedures-sql-server <span class="field field--name-title field--type-string field--label-hidden">Trabajando con stored procedures en SQL Server</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous</span></span> <span class="field field--name-created field--type-created field--label-hidden">Sat, 08/21/2010 - 13:22</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/29" hreflang="und">SG #29</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/autores-sg/ricardo-rangel" hreflang="und">Ricardo Rangel</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>El procesamiento de datos es una de las actividades más arduas a la que nos enfrentamos al desarrollar sistemas transaccionales, especialmente cuando se afectan grandes cantidades de datos. Por medio de procedimientos almacenados, o stored procedures (SP), el sistema de base de datos es capaz de ejecutar un conjunto de instrucciones bien coordinadas entre sí que afectan la información con el fin de lograr un objetivo dentro del sistema.</p><!--break--><p>A continuación comparto algunas técnicas que pueden ser útiles para crear stored procedures confiables con una gran cantidad de instrucciones y gestionar los grandes bloques de información que se ven afectados por estos. Vale la pena mencionar que aunque este artículo utiliza como referencia las capacidades disponibles en SQL Server, la teoría básica y la mayoría de la sintáxis es aplicable a otros manejadores de base de datos.</p><p><strong>Catálogo de procedimientos<br /> </strong>La primera recomendación es tener un catálogo de stored procedures que nos ayude a tener un listado de los procedimientos con los que contamos. En su forma mínima, esta tabla simplemente tendría Id y nombre del proceso, pero puede extenderse para incluir otra información relevante, tal como desarrollador o fecha de actualización.</p><table border="1"><tbody><tr><td>IdProceso</td><td>Proceso</td></tr><tr><td>1</td><td>Registro de Comisiones</td></tr><tr><td>2</td><td>Pago de Comisiones a Vendedores</td></tr><tr><td>3</td><td>Traspasos de cuentas entre Vendedores</td></tr></tbody></table><p><strong>Bitácora de operaciones<br /> </strong>Para llevar un registro de qué información es afectada por un procedimiento, podemos crear una tabla de auditoria, en donde se escribirá el Id del Proceso que tuvo que ver con la entrada, eliminación o actualización del registro. Por ejemplo, supongamos que en el cuerpo de nuestro procedimiento para registro de comisiones contiene la instrucción:</p><p class="code">INSERT INTO COMISION (IdEmpleado, Comision) <br /> VALUES (@IdEmpleado, @Comision)</p><p>Inmediatamente después (y dentro de la misma transacción) podríamos colocar la siguiente instrucción, haciendo referencia a nuestro catalogo de procesos:</p><p class="code">INSERT INTO BITACORA_OPERACION (IdProceso, DescProceso, FechaAlta)<br /> VALUES (@IdProceso, @DescProceso, @Getdate)</p><p>En donde @IdProceso tiene el valor de 1, y @DescProceso contiene el texto ingresado por el usuario para justificar esta comisión. Esto es muy útil para el seguimiento a información e incluso puede ser un requerimiento de seguridad o cumplimiento de normas en un corporativo.</p><p><strong>Evitar la ejecución duplicada<br /> </strong>Imaginemos que ejecutamos nuestro procedimiento de calcular comisiones de vendedores y éste introduce la información en una tabla. ¿Qué sucedería si volviéramos a ejecutar el mismo proceso por error? Bueno, no es difícil de imaginar, tendríamos información duplicada. Para evitar esto, podemos apoyarnos en nuestra tabla de bitácora, consultando si nuestra operación ha sido ejecutada recientemente, antes de ejecutarla. A nivel de interfaz, podríamos mostrarle al usuario un mensaje más descriptivo.</p><p><strong>Depuración de variables<br /> </strong>En caso de no contar con herramientas con capacidades de depuración para stored procedures, se puede usar la instrucción Select para conocer los valores que van tomando las variables al ejecutar el proceso, por ejemplo:</p><p class="code">SELECT @Variable AS Variable</p><p>Por otro lado, cuando hay una falla en la ejecución del procedimiento, es muy probable que el valor de la variable nos aparezca vacío, por lo que esta instrucción no es muy útil para depurar fallas. En ese caso, la recomendación sería basarnos en el mensaje de error que arroje el servidor de base de datos donde indica la línea de código donde se está dando el error, y entonces utilizar cerca de esa línea la instrucción PRINT para que nos de un valor que permita ejecutar esa instrucción fuera del procedimiento y poder observar lo que está sucediendo.</p><p>Por ejemplo si el mensaje de error indica que el Subquery asignado a una variable está regresando más de un valor, podemos hacer un print para conocer los valores que se están usando para armar el query, y detectar el problema.</p><p class="code">PRINT @IdEmpleado <br /> SET @VarIdComision = <br /> (SELECT IdComision FROM Comision where IdEmpleado = @IdEmpleado)</p><p><strong>Monitoreo de la información<br /> </strong>No porque nuestros procedimientos no marquen errores significa que funcionan correctamente. Por ejemplo, si en un procedimiento tenemos la instrucción IF @Variable &gt; 1 y el proceso nunca entra en el IF (cuando se supone que debió haber entrado), entonces hay algo mal. Una herramienta de análisis de código nos ayudaría a conocer nuestra cobertura de código, pero dado que éstas herramientas no son comunes para stored procedures, lo más seguro es que debamos recurrir a monitorear esto manualmente revisando nuestros datos y la bitácora de operaciones.</p><p><strong>Bitácora de incidencias<br /> </strong>Cuando ocurre algún error en nuestro proceso es bueno anotar en una bitácora por qué se dio el error y cómo se solucionó. En ocasiones, los errores se dan no porque esté mal nuestro proceso sino porque hay una inconsistencia en los datos. Por ejemplo si el proceso busca el Id de un registro con una fecha, pero existen dos registros con la misma fecha, SQL no sabrá cual tomar y el proceso fallará. Así que se toma la acción correctiva correspondiente y se anota en la bitácora para posibles futuras excepciones.</p><p><strong>Separación en funciones<br /> </strong>Cuando manejamos grandes cantidades de información, es normal que los procesos que desarrollemos tengan una gran cantidad de instrucciones dando como resultado código muy largo. El uso de funciones en SQL permite simplificar el código en ciertas secciones donde necesitemos obtener un valor. Las funciones las podremos invocar una y otra vez desde nuestros procedimientos.</p><p class="code">DECLARE @SaldoActualCta Smallmoney<br /> SET @SaldoActualCta = (SELECT dbo.fnc_ObtenerSaldoActualCuentaXIdCta(@IdCtaLote))</p><p><strong>Manejo de cursores<br /> </strong>Hay quienes argumentan que no es bueno el uso de cursores porque son supuestamente “lentos”, pero considero que hay ocasiones en que es inevitable, e inclusive muy útiles, ya que el uso de cursores nos permitirá avanzar registro por registro y especificar una o varias instrucciones en cada vuelta. Cuando se opte por usar cursores hay que tener cuidado de cerrarlos correctamente, principalmente cuando utilizamos cursores anidados (cursor dentro de otro cursor). Otra cosa a tomar en cuenta es que si se produce un error dentro del cursor, supongamos en un INSERT, cuando manejemos la excepción, también debemos cerrar el o los cursores involucrados. Por otro lado, para avanzar registro por registro no solamente se cuenta con la opción de cursores sino también con la instrucción WHILE, pero seria cuestión de revisar cual de estas opciones se adecua más a nuestras necesidades.</p><p><strong>Tablas temporales<br /> </strong>Esta es otra arma que tenemos a nuestra disposición al manejar grandes cantidades de información. Las tablas temporales permiten almacenar información temporalmente, de tal manera que podemos hacer uso de ella durante la ejecución de nuestro stored procedure. Recordemos también que existen las llamadas variables de tabla que son similares a las tablas temporales pero utilizan menos recursos y son ideales para almacenar poco volumen de datos. Se recomienda investigar a fondo las diferencias entre ambas opciones ya que su explicación excede el alcance de este artículo.</p><p><strong>Disparadores y reglas<br /> </strong>Los disparadores (también conocidos como triggers) son objetos de la base de datos que ejecutan acciones cuando se producen ciertos eventos. Por ejemplo imaginemos que a un vendedor inactivo no se le puede asignar una cuenta. Mediante un disparador podremos prevenir esta situación.</p><p>Si al ejecutar el procedimiento se da esta situación, entonces aparecerá un mensaje que impedirá que se termine de ejecutar el SP correctamente. Esto es bueno para nosotros, porque es una advertencia de que algo anda mal en nuestro procedimiento. Por otro lado, las reglas (rules) nos permiten establecer ciertos limites a la información. Por ejemplo, imaginemos que el saldo de un vendedor no puede ser menor a 1,000 pesos. Para esto podemos crear una regla.</p><p>El uso de disparadores y reglas en la construcción de procedimientos es fundamental. De hecho, se recomienda que antes de programar el procedimiento, se programen todos los disparadores y reglas necesarias. Esto nos obligará a programar el proceso respetando siempre las reglas de negocio preestablecidas. El uso de disparadores y reglas nos garantizara que la información que resulte de nuestros procesos será confiable.</p><p><strong>Conclusión<br /> </strong>Los stored procedures son fundamentales para el desempeño óptimo de un sistema de información. A los desarrolladores de sistemas de información nos corresponde implementar todo tipo de estrategias y técnicas que nos permitan tener el control de la información y garantizar que ésta sea confiable y precisa. Espero que los tips compartidos en este artículo los ayuden a lograr esta tarea.</p><p><strong>Referencias<br /> </strong>[1] Solid Quality Learning. Microsoft SQL Server 2005: Técnicas Aplicadas, Microsoft Press.</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Ricardo Rangel Ramírez es Licenciado en Informática egresado de la Universidad de Ecatepec. Ha desarrollado software en plataforma .Net para diferentes empresas. Actualmente labora en el Departamento de Sistemas de Stanhome de México y en proyectos independientes. Sus principales habilidades son la gestión y explotación de información, así como el análisis, diseño y desarrollo de sistemas de información. <a href="mailto:riccardorangel@hotmail.com">riccardorangel@hotmail.com</a></p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Sat, 21 Aug 2010 18:22:40 +0000 Anonymous 1001 at https://sg.com.mx https://sg.com.mx/revista/29/trabajando-stored-procedures-sql-server#comments Diseño de Base de Datos: La importancia de los catálogos https://sg.com.mx/revista/26/dise%C3%B1o-base-datos-catalogos <span class="field field--name-title field--type-string field--label-hidden">Diseño de Base de Datos: La importancia de los catálogos</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous</span></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 12/03/2008 - 13:57</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/22" hreflang="und">SG #22</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/seccion-revista/gestion-datos" hreflang="und">Gestión de datos</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/victor-hugo-garcia" hreflang="zxx">Víctor Hugo García</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Los catálogos, en una base de datos, son indispensables para un buen diseño de la misma. Es por eso la importancia de conocer las ventajas y desventajas de su uso. Comencemos definiendo “catálogo” en una base de datos. Un catálogo es una tabla de datos que contiene información relevante sobre las opciones finales de un usuario en una aplicación.&nbsp; A continuación menciono las ventajas y desventajas de los catálogos en el diseño de base de datos:</p> <p>Ventajas</p> <ul> <li>Permite una rápida obtención de los datos requeridos&nbsp; al momento de realizar una consulta.</li> <li>Permite una reducción de tiempo en programación.</li> <li>Permite al usuario final la posibilidad de realizar una modificación de manera dinámica a las opciones del software, fácil y rápidamente desde una administración.</li> <li>Permite crear una base de datos normalizada.</li> </ul> <p>Desventajas</p> <ul> <li>El uso de memoria en el servidor SQL puede verse afectado.</li> <li>La desventaja puede ser solucionada con el uso correcto de las consultas SQL, tal es el caso de evitar productos cartesianos al momento de dicha consulta y en su reemplazo utilizar INNER JOIN, LEFT JOIN, RIGHT JOIN según se requiera.</li> <li>Ciertos desarrolladores necesitan ver un proceso de normalización de una base datos, sin embargo, si comienzas a diseñarla utilizando catálogos, dicho proceso puede llegar a ser innecesario.</li> </ul> <h3>Ejemplo 1</h3> <p>“Un sistema requiere que almacene el país de origen de un cliente” pero este dato puede cambiar y/o aumentar en base a las necesidades del usuario final. El desarrollador puede elegir entre varias opciones:</p> <ol> <li>Agregar un campo de tipo cadena de caracteres, permitiéndole al usuario escribir el dato en un campo de texto.</li> <li>Añadir un campo de tipo entero y colocando un campo de selección obteniendo la información desde el código de manera estática.</li> </ol> <p>Los problemas que se generan cuando se utiliza un campo de tipo cadena de caracteres, radica en la integridad de los datos, pues en esta se pierde completamente. Los errores humanos siempre hay que tenerlos presentes y por tanto, alguien como usuario final puede llegar a escribir el nombre de un país de la manera incorrecta. Además la normalización no está presente en este caso.</p> <p>Cuando se obtienen los datos de manera estática en el código, se presenta el problema en el tiempo invertido que se requiere en la programación de los elementos, así como el mantenimiento de ciertos módulos.</p> <p>Enseguida muestro una solución utilizando los catálogos: Se diseña la tabla –Cliente- y la tabla –Pais-,&nbsp; La tabla Pais almacena los datos que necesitamos con dos simples campos: “idPais y nomPais”, dicha tabla siendo relacionada 1:N&nbsp; con la tabla clientes, de esta manera es posible obtener la información necesaria del cliente con una simple consulta SQL, además de que el proceso de normalización e integridad de los datos se está dando de manera automática.</p> <p>Si el usuario final desea que su sistema sea capaz de aumentar los datos de los países, el administrador del catálogo Pais podrá agregarlo fácil y rápidamente. Inclusive, los reportes que se hayan programado no requerirán de inversión de tiempo, puesto que la información que se pida será obtenida mediante una consulta SQL.</p> <p>En la siguiente figura muestro un diagrama de clases de lo que sería una relación de la tabla cliente con la tabla país (1:N).</p> <p><img alt="" src="/images/stories/sg22/data_1.jpg" /></p> <h3>Ejemplo 2</h3> <p>“Un sistema requiere que se almacene la especialidad de un médico” este dato se puede aumentar, actualizar y/o eliminar.</p> <p>La solución fácil y rápida pero errónea,&nbsp; sería crear un campo en la tabla médico llamado “especialidadMedico” y que este sea de tipo cadena de caracteres. Como he venido platicado, esta solución pierde completamente la integridad de los datos y por consiguiente la normalización de la base de datos no existe.&nbsp; Por tanto si se elige la solución por catálogos como se muestra en la figura siguiente:</p> <p><img alt="" src="/images/stories/sg22/data_2.jpg" /></p> <p>Realizar búsquedas, generar reportes, obtener información para desplegar en alguna lista, etc., todo esto puede llevarse a cabo de manera rápida y eficiente. En todos los sistemas una búsqueda es básica e indispensable, por lo tanto imaginemos esto: El cliente desea una lista desplegable con las especialidades que se tienen para&nbsp; realizar un mejor filtrado de la información. Ahora, imagina esto en más de 10 páginas. Por ultimo imagina que el usuario final te comenta que se requiere agregar una nueva especialidad.</p> <p>Considerar la creación de un catálogo para un mejor control e integridad de la información sería ideal para solucionar varios problemas como el que se describe en el párrafo anterior. Si se requiere un reporte de todos los médicos de cierta especialidad, esto sería muy sencillo de obtener mediante una consulta SQL. Permitirle al usuario modificar las opciones de un sistema es siempre ideal, pues el usuario verá lo sencillo que es hacerlo desde un ambiente grafico.</p> <p>Cuando se necesita cotizar una aplicación, se debe dejar en claro al cliente, que el administrador del sistema será capaz de modificar opciones del sistema de manera fácil y rápida; tu cliente verá esto como un buen desarrollo.</p> <p>Cuando me encuentro en reuniones con clientes para hablar sobre las opciones que se desean en el sistema, siempre hay un punto en el que se comenta “Este módulo debe ser así, porque CASI NO se eligen esas opciones” es entonces cuando se tiene que realizar un análisis de ese caso, puesto que si eliges una opción errónea, al momento de entregar tu software se te diga que SIEMPRE SI se usarán dichas opciones, para solucionarlo te podrías ver en la necesidad de reprogramar uno o varios módulos; sin embargo, al elegir la opción de catálogos, simplemente se agrega el dato a la base de datos y listo.</p> <p>Finalmente podemos concluir que si los desarrolladores ven la importancia del uso de catálogos, esto puede significar auténticos ahorros en tiempo de programación,&nbsp; proceso de normalización&nbsp; y mejorar la integridad de los datos en la aplicación.<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> &nbsp;</p> </div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Víctor Hugo García es Líder de Desarrollo Web en C-Technologies. Es egresado del Instituto Tecnológico de Ciudad Guzmán. Cuenta con experiencia en el diseño de base de datos y programación con tecnologías .NET y PHP. Actualmente se encuentra desarrollando software en diversas verticales de negocio para clientes en Estados Unidos. Durante el 2007 colaboró con proyectos en el Gobierno del estado de Guanajuato.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Wed, 03 Dec 2008 19:57:49 +0000 Anonymous 686 at https://sg.com.mx https://sg.com.mx/revista/26/dise%C3%B1o-base-datos-catalogos#comments