En el contexto de la programación informática, un cubo de datos (o datacube ) es una matriz multidimensional ("nD") de valores. Normalmente, el término cubo de datos se aplica en contextos en los que estas matrices son mucho más grandes que la memoria principal de la computadora anfitriona; algunos ejemplos incluyen almacenes de datos de varios terabytes o petabytes y series temporales de datos de imágenes.
El cubo de datos se utiliza para representar datos (a veces llamados hechos) a lo largo de algunas dimensiones de interés. Por ejemplo, en el procesamiento analítico en línea (OLAP), dichas dimensiones podrían ser las subsidiarias que tiene una empresa, los productos que ofrece la empresa y el tiempo; en esta configuración, un hecho sería un evento de ventas en el que se ha vendido un producto en particular en una subsidiaria en particular en un momento determinado. En las series temporales de imágenes satelitales, las dimensiones serían las coordenadas de latitud y longitud y el tiempo; un hecho (a veces llamado medida) sería un píxel en un espacio y tiempo determinados tal como lo toma el satélite (después de un procesamiento que no es de interés aquí). Aunque se lo llama cubo (y los ejemplos proporcionados anteriormente son tridimensionales para abreviar), un cubo de datos generalmente es un concepto multidimensional que puede ser unidimensional, bidimensional, tridimensional o de dimensiones superiores. En cualquier caso, cada dimensión divide los datos en grupos de celdas, mientras que cada celda del cubo representa una única medida de interés. A veces, los cubos contienen solo unos pocos valores y el resto está vacío , es decir, no está definido, mientras que a veces la mayoría o todas las coordenadas del cubo contienen un valor de celda. En el primer caso, estos datos se denominan dispersos y, en el segundo, se denominan densos , aunque no existe una distinción clara entre ambos.
Las matrices multidimensionales son conocidas desde hace mucho tiempo en los lenguajes de programación. Fortran ofrece matrices unidimensionales indexadas arbitrariamente y matrices de matrices, lo que permite la construcción de matrices de dimensiones superiores, de hasta 15 dimensiones. APL admite matrices nD con un amplio conjunto de operaciones. Todas ellas tienen en común que las matrices deben caber en la memoria principal y están disponibles solo mientras se ejecuta el programa particular que las mantiene (como el software de procesamiento de imágenes).
Una serie de formatos de intercambio de datos permiten el almacenamiento y la transmisión de datos en forma de cubo, a menudo adaptados a dominios de aplicación específicos. Algunos ejemplos son MDX para datos estadísticos (en particular, comerciales), formato de datos jerárquico para datos científicos generales y TIFF para imágenes.
En 1992, Peter Baumann introdujo la gestión de cubos de datos masivos con funcionalidad de usuario de alto nivel combinada con una arquitectura de software eficiente. [1] Las operaciones de cubos de datos incluyen extracción de subconjuntos, procesamiento, fusión y, en general, consultas en el espíritu de los lenguajes de manipulación de datos como SQL .
Algunos años después, el concepto de cubo de datos se aplicó para describir datos comerciales variables en el tiempo como cubos de datos por Jim Gray , et al., [2] y por Venky Harinarayan , Anand Rajaraman y Jeff Ullman [3], que se encuentran entre los 500 artículos de informática más citados durante un período de 25 años. [4]
Por esa época, se estableció un grupo de trabajo sobre bases de datos multidimensionales ("Arbeitskreis Multi-Dimensionale Datenbanken") en la Gesellschaft für Informatik alemana . [5] [6]
Datacube Inc. era una empresa de procesamiento de imágenes que vendía hardware y aplicaciones de software para el mercado de PC en 1996, aunque sin abordar los cubos de datos como tales.
La iniciativa EarthServer ha establecido requisitos para el servicio de cubos de datos geográficos. [7]
En 2018, el lenguaje de base de datos ISO SQL se amplió con la funcionalidad de cubo de datos como "SQL – Parte 15: Matrices multidimensionales (SQL/MDA)". [8]
Web Coverage Processing Service es un lenguaje de análisis de cubos de datos geográficos publicado por el Open Geospatial Consortium en 2008. Además de las operaciones comunes de cubos de datos, el lenguaje conoce la semántica del espacio y el tiempo y admite cubos de datos de cuadrícula regulares e irregulares, basados en el concepto de datos de cobertura .
Un estándar de la industria para consultar cubos de datos comerciales, desarrollado originalmente por Microsoft , es MultiDimensional eXpressions .
Muchos lenguajes informáticos de alto nivel tratan los cubos de datos y otras matrices grandes como entidades individuales distintas de su contenido. Estos lenguajes, de los que Fortran , APL , IDL , NumPy , PDL y S-Lang son ejemplos, permiten al programador manipular fragmentos de películas completos y otros datos en masa con expresiones simples derivadas del álgebra lineal y las matemáticas vectoriales . Algunos lenguajes (como PDL) distinguen entre una lista de imágenes y un cubo de datos, mientras que muchos (como IDL) no lo hacen.
Los sistemas de gestión de bases de datos ( DBMS ) de tipo matriz ofrecen un modelo de datos que admite de forma genérica la definición, gestión, recuperación y manipulación de cubos de datos de n dimensiones. Esta categoría de base de datos ha sido desarrollada por el sistema rasdaman desde 1994. [9]
Las matrices multidimensionales pueden representar de manera significativa datos espaciotemporales de sensores, imágenes y simulaciones, pero también datos estadísticos en los que la semántica de las dimensiones no es necesariamente de naturaleza espacial o temporal. En general, cualquier tipo de eje se puede combinar con cualquier otro para formar un cubo de datos.
En matemáticas, una matriz unidimensional corresponde a un vector, una matriz bidimensional se asemeja a una matriz ; de manera más general, un tensor puede representarse como un cubo de datos n-dimensional.
Para una secuencia temporal de imágenes en color, la matriz es generalmente de cuatro dimensiones, con dimensiones que representan las coordenadas X e Y de la imagen, el tiempo y el plano de color RGB (u otro espacio de color ). Por ejemplo, la iniciativa EarthServer [10] une centros de datos de diferentes continentes que ofrecen series temporales de imágenes satelitales en 3D x/y/t y datos meteorológicos en 4D x/y/z/t para su recuperación y procesamiento en el servidor a través del estándar de lenguaje de consulta de cubos de datos geográficos WCPS del Open Geospatial Consortium .
Los cubos de datos también se utilizan en el campo de la espectroscopia de imágenes , ya que una imagen resuelta espectralmente se representa como un volumen tridimensional. Los cubos de datos de observación de la Tierra combinan imágenes satelitales como Landsat 8 y Sentinel-2 con análisis de sistemas de información geográfica . [11]
En el procesamiento analítico en línea (OLAP), los cubos de datos son una disposición común de datos comerciales adecuados para el análisis desde diferentes perspectivas a través de operaciones como segmentación, división, pivotación y agregación.