Articulo de referencia

Lenguaje de programación centrado en datos

Un lenguaje de programación centrado en datos define una categoría de lenguajes de programación cuya función principal es la gestión y manipulación de datos. Un lenguaje de prog...

Un lenguaje de programación centrado en datos define una categoría de lenguajes de programación cuya función principal es la gestión y manipulación de datos. Un lenguaje de programación centrado en datos incluye primitivas de procesamiento integradas para acceder a los datos almacenados en conjuntos, tablas, listas y otras estructuras de datos y bases de datos, así como para la manipulación y transformación específicas de los datos que requiere una aplicación de programación. Los lenguajes de programación centrados en datos suelen ser declarativos y, a menudo, orientados al flujo de datos, y definen el resultado de procesamiento deseado; los pasos específicos necesarios para realizar el procesamiento quedan a cargo del compilador del lenguaje. El lenguaje de base de datos relacional SQL es un ejemplo de un lenguaje declarativo centrado en datos. Los lenguajes de programación declarativos centrados en datos son ideales para aplicaciones informáticas con gran volumen de datos .

Fondo

El rápido crecimiento de Internet y la World Wide Web ha generado enormes cantidades de información disponible en línea y la necesidad de capacidades de procesamiento de Big Data . Las organizaciones empresariales y gubernamentales crean grandes cantidades de información, tanto estructurada como no estructurada , que necesita ser procesada, analizada y vinculada. [ 1 ] El almacenamiento, la gestión, el acceso y el procesamiento de esta vasta cantidad de datos representan una necesidad fundamental y un desafío inmenso para satisfacer las necesidades de búsqueda, análisis, minería y visualización de estos datos como información. [ 2 ] Los lenguajes declarativos y centrados en datos están abordando cada vez más estos problemas, ya que centrarse en los datos hace que estos problemas sean mucho más sencillos de expresar. [ 3 ]

Las arquitecturas de sistemas informáticos como Hadoop y HPCC que pueden soportar aplicaciones de datos en paralelo son una solución potencial para los requisitos de procesamiento de datos a escala de terabytes y petabytes de la computación intensiva en datos . [ 4 ] [ 5 ] Los clústeres de hardware comercial se utilizan comúnmente para abordar problemas de Big Data. [ 6 ] Los desafíos fundamentales para las aplicaciones de Big Data y la computación intensiva en datos [ 7 ] son ​​gestionar y procesar volúmenes de datos que crecen exponencialmente, reducir significativamente los ciclos de análisis de datos asociados para soportar aplicaciones prácticas y oportunas, y desarrollar nuevos algoritmos que puedan escalar para buscar y procesar cantidades masivas de datos. La National Science Foundation ha identificado cuestiones clave relacionadas con los problemas de computación intensiva en datos, como las abstracciones de programación que incluyen modelos, lenguajes y algoritmos que permiten una expresión natural del procesamiento paralelo de datos. [ 8 ] Los lenguajes de programación declarativos y centrados en datos son muy adecuados para esta clase de problemas.

Los lenguajes de programación centrados en datos proporcionan un enfoque de procesamiento en el que las aplicaciones se expresan en términos de operaciones de alto nivel sobre los datos, y el sistema de tiempo de ejecución controla de forma transparente la planificación, la ejecución, el equilibrio de carga, las comunicaciones y el movimiento de programas y datos a través del clúster de computación. [ 9 ] La abstracción de programación y las herramientas del lenguaje permiten que el procesamiento se exprese en términos de flujos de datos y transformaciones que incorporan bibliotecas compartidas de algoritmos comunes de manipulación de datos, como la ordenación.

Los lenguajes de programación declarativos centrados en datos son inherentemente adaptables a diversas formas de computación distribuida, incluyendo clústeres, redes de datos y computación en la nube . [ 10 ] El uso de lenguajes de programación declarativos centrados en datos implica más que simplemente adaptarse a una nueva capacidad de computación; también sugiere cambios en el proceso de pensamiento del análisis de datos y el diseño de aplicaciones. [ 11 ]

Ejemplos de lenguajes centrados en datos

SQL es el lenguaje de programación declarativo y centrado en datos más conocido, utilizado desde la década de 1980 y convertido en un estándar de facto para bases de datos relacionales. Sin embargo, se han implementado diversas arquitecturas de sistemas y lenguajes de programación asociados para computación intensiva en datos , aplicaciones de Big Data y análisis de datos a gran escala. El crecimiento de la mayor parte de los datos se produce en formato no estructurado [ 12 ] , por lo que se necesitaban nuevos paradigmas de procesamiento con modelos de datos más flexibles. Han surgido varias soluciones, como la arquitectura MapReduce, pionera de Google y ahora disponible en una implementación de código abierto llamada Hadoop, utilizada por Yahoo, Facebook y otras empresas, y la arquitectura de sistema HPCC ofrecida por LexisNexis Risk Solutions.

Hadoop Pig

Figura 1: Ejemplo de programa Pig Latin [ 13 ]
Figura 2: Traducción del programa Pig a MapReduce [ 13 ]

Hadoop es un proyecto de software de código abierto patrocinado por la Apache Software Foundation ( http://www.apache.org ) que implementa la arquitectura MapReduce. El entorno de ejecución de Hadoop admite capacidades adicionales de procesamiento de datos distribuidos diseñadas para ejecutarse utilizando la arquitectura Hadoop MapReduce. Estas incluyen Pig, un lenguaje de programación de flujo de datos de alto nivel y un marco de ejecución para computación intensiva en datos. Pig fue desarrollado en Yahoo! para proporcionar una notación de lenguaje específica centrada en datos para aplicaciones de análisis de datos y para mejorar la productividad del programador y reducir los ciclos de desarrollo al utilizar el entorno Hadoop MapReduce. Los programas Pig se traducen automáticamente en secuencias de programas MapReduce si es necesario en el entorno de ejecución. Pig proporciona capacidades en el lenguaje para operaciones de carga, almacenamiento, filtrado, agrupación, eliminación de duplicados, ordenación, clasificación, agregación y unión de datos. [ 13 ] La Figura 1 muestra un programa Pig de ejemplo y la Figura 2 muestra cómo se traduce en una serie de operaciones MapReduce.

HPCC ECL

Figura 3: Ejemplo de sintaxis ECL para la operación JOIN

La plataforma de computación intensiva en datos HPCC de LexisNexis Risk Solutions incluye un nuevo lenguaje de programación declarativo de alto nivel, centrado en datos, llamado ECL . ECL permite al programador definir el resultado del procesamiento de datos, así como los flujos de datos y las transformaciones necesarias para lograrlo. El lenguaje ECL ofrece amplias capacidades para la definición, el filtrado, la gestión y la transformación de datos, y proporciona un extenso conjunto de funciones integradas para operar con registros en conjuntos de datos, incluyendo funciones de transformación definidas por el usuario. Los programas ECL se compilan en código fuente C++ optimizado, que posteriormente se compila en código ejecutable y se distribuye a los nodos de un clúster de procesamiento. ECL combina la representación de datos con la implementación de algoritmos, fusionando un lenguaje de consulta con un lenguaje de procesamiento de datos paralelo.

Figura 5: Ejemplo de código ECL para PLN
Figura 4: Ejemplo de código ECL

ECL incluye operaciones de transformación de datos integradas que procesan conjuntos de datos completos, como PROJECT, ITERATE, ROLLUP, JOIN, COMBINE, FETCH, NORMALIZE, DENORMALIZE y PROCESS. Por ejemplo, la función de transformación definida para una operación JOIN recibe dos registros, uno de cada conjunto de datos que se une, y puede realizar cualquier operación en los campos de ambos registros, devolviendo un registro de salida que puede ser completamente diferente de cualquiera de los registros de entrada. En la Figura 3 se muestra un ejemplo de sintaxis para la operación JOIN del Manual de Referencia del Lenguaje ECL. La Figura 4 muestra un ejemplo del código ECL equivalente para el programa de ejemplo Pig que se muestra en la Figura 1.

El lenguaje de programación ECL también proporciona primitivas integradas para el procesamiento del lenguaje natural (PLN) con sentencias PATTERN y la operación PARSE integrada. Las sentencias PATTERN permiten definir patrones de coincidencia, incluidas expresiones regulares, y utilizarlos para analizar información de datos no estructurados, como texto sin formato. Las sentencias PATTERN se pueden combinar para implementar operaciones de análisis complejas o gramáticas completas a partir de definiciones en forma de Backus-Naur (BNF). La operación PARSE opera sobre un conjunto de datos de registros en un campo específico dentro de un registro; este campo podría ser, por ejemplo, una línea completa en un archivo de texto. Utilizando esta capacidad del lenguaje ECL, es posible implementar aplicaciones de extracción de información de formularios de procesamiento paralelo en archivos de documentos y todo tipo de datos no estructurados y semiestructurados, incluidos documentos basados ​​en XML o páginas web. La figura 5 muestra un ejemplo de código ECL utilizado en una aplicación de análisis de registros que incorpora PLN.

Véase también

Referencias

  1. Manual de Computación en la Nube , "Tecnologías intensivas en datos para la computación en la nube" por AM Middleton. Manual de Computación en la Nube. Springer, 2010.
  2. " ¿ Tienes datos? Una guía para la preservación de datos en la era de la información " por F. Berman. Communications of the ACM, vol. 51, n.° 12, 2008, págs. 50–66.
  3. La estrategia centrada en los datos , por J. Hellerstein, 2008.
  4. "Una metodología de diseño para aplicaciones de datos en paralelo" por LS Nyland, JF Prins, A. Goldberg y PH Mills. Manual de computación en la nube. Springer, 2010.
  5. " El desafío de la escala de terabytes"Por D. Ravichandran, P. Pantel y E. Hovy. Actas del Taller KDD sobre Minería para y desde la Web Semántica, 2004."
  6. " BOOM: Programación centrada en datos en el centro de datosPor P. Alvaro, T. Condie, N. Conway, K. Elmeleegy, J. Hellerstein y R. Sears. Departamento de Ingeniería Eléctrica y Ciencias de la Computación, Universidad de California en Berkeley, Informe Técnico, 2009.
  7. " Computación intensiva en datos en el siglo XXI " por I. Gorton, P. Greenfield, A. Szalay y R. Williams. IEEE Computer, vol. 41, n.° 4, 2008, págs. 30-32.
  8. Computación intensiva en datos , NSF, 2009.
  9. Computación escalable intensiva en datos , por RE Bryant, 2008.
  10. Bamboo: Un enfoque orientado a objetos y centrado en datos para software multinúcleo , por J. Zhou y B. Demsky. Diseño e implementación de lenguajes de programación, 2010.
  11. " Computación centrada en datos con la arquitectura Netezza " por GS Davison, KW Boyack, RA Zacharski, SC Helmreich y JR Cowie. Laboratorios Nacionales Sandia, Informe técnico, 2006.
  12. ^ "El universo digital en expansión" por JF Gantz, D. Reinsel, C. Chute, W. Schlichting, J. McArthur, S. Minton, J. Xheneti, A. Toncheva y A. Manfrediz. IDC, Libro Blanco, 2007.
  13. 1 2 3 Pig latin: Un lenguaje no tan extranjero para el procesamiento de datos Archivado el 20/07/2011 en Wayback Machine , por C. Olston, B. Reed, U. Srivastava, R. Kumar y A. Tomkins. Universidad de Stanford, 2008.