
Un sistema de gestión de bases de datos ( DBMS) basado en matrices es un sistema de gestión de bases de datos (DBMS) que admite matrices (también llamadas datos ráster o cubos de datos ). Estos datos se componen de colecciones homogéneas de elementos de datos (a menudo denominados píxeles , vóxeles , etc.), dispuestos en una cuadrícula regular de una, dos o más dimensiones. Con frecuencia, las matrices se utilizan para representar datos de sensores, simulaciones, imágenes o estadísticas. Estas matrices suelen ser macrodatos (Big Data) , con objetos individuales que frecuentemente alcanzan tamaños de terabytes y pronto petabytes; por ejemplo, los archivos actuales de observación de la Tierra y el espacio suelen crecer en terabytes al día. Las bases de datos basadas en matrices tienen como objetivo ofrecer almacenamiento y recuperación flexibles y escalables para esta categoría de información.
Descripción general
De forma similar a como los sistemas de bases de datos estándar operan con conjuntos, los sistemas de gestión de bases de datos de matrices (DBMS de matrices) ofrecen almacenamiento escalable y flexible, así como recuperación y manipulación flexibles de matrices de tamaño (conceptualmente) ilimitado. Dado que en la práctica las matrices nunca aparecen de forma aislada, este modelo de matriz suele estar integrado en algún modelo de datos general, como el modelo relacional. Algunos sistemas implementan las matrices como una analogía de las tablas, mientras que otros las introducen como un tipo de atributo adicional.
La gestión de matrices requiere técnicas novedosas, sobre todo porque las tuplas y los objetos de las bases de datos tradicionales suelen caber en una sola página de base de datos ( una unidad de acceso al disco en el servidor, normalmente de 4 KB ), mientras que los objetos de matriz pueden abarcar fácilmente varios medios. La principal función del gestor de almacenamiento de matrices es proporcionar un acceso rápido a matrices y submatrices de gran tamaño. Para ello, durante la inserción, las matrices se particionan en bloques o fragmentos de tamaño adecuado, que actúan como unidades de acceso durante la evaluación de consultas.
Los sistemas de gestión de bases de datos (DBMS) basados en matrices ofrecen lenguajes de consulta que proporcionan acceso declarativo a dichas matrices, permitiendo crearlas, manipularlas, buscarlas y eliminarlas. Al igual que con SQL , por ejemplo , se pueden construir expresiones de complejidad arbitraria a partir de un conjunto de operaciones básicas de matrices. Debido a las extensiones realizadas en el modelo de datos y de consulta, los DBMS basados en matrices a veces se incluyen en la categoría NoSQL , en el sentido de "no solo SQL". La optimización y la paralelización de consultas son importantes para lograr la escalabilidad ; de hecho, muchos operadores de matrices se prestan bien a la evaluación paralela, procesando cada bloque en nodos o núcleos separados.
Entre los dominios de aplicación importantes de los sistemas de gestión de bases de datos (DBMS) basados en matrices se incluyen las ciencias de la Tierra, el espacio, la vida y las ciencias sociales, así como las aplicaciones comerciales relacionadas (como la exploración de hidrocarburos en la industria y OLAP en los negocios). La variedad que se presenta se puede observar, por ejemplo, en los datos geográficos, donde se pueden encontrar series temporales de sensores ambientales unidimensionales, imágenes satelitales bidimensionales, series temporales de imágenes tridimensionales x/y/t y datos geofísicos x/y/z, así como datos climáticos y oceánicos tetradimensionales x/y/z/t.
Historial y estado
El modelo de datos relacional , predominante en la actualidad, no admite directamente el paradigma de matrices en la misma medida que los conjuntos y las tuplas. ISO SQL incluye un tipo de atributo con valores de matriz, pero este es unidimensional, prácticamente sin soporte operativo y no es utilizable para los dominios de aplicación de los sistemas de gestión de bases de datos de matrices. Otra opción es recurrir a los BLOB ("objetos binarios grandes"), que son el equivalente a los archivos: cadenas de bytes de longitud (conceptualmente) ilimitada, pero sin ninguna funcionalidad de lenguaje de consulta, como la selección de subconjuntos multidimensionales.
El primer trabajo significativo que va más allá de los BLOB se ha establecido con PICDMS. [ 1 ] Este sistema ofrece el precursor de un lenguaje de consulta de matrices 2D, aunque todavía procedimental y sin soporte de almacenamiento adecuado.
Baumann publicó un primer lenguaje de consulta declarativo adecuado para múltiples dimensiones y con una semántica basada en álgebra , junto con una arquitectura escalable. [ 2 ] [ 3 ] Marathe y Salem presentaron otro lenguaje de base de datos de matrices, restringido a 2-D. [ 4 ] Libkin et al. realizaron un trabajo teórico fundamental; [ 5 ] en su modelo, llamado NCRA, extienden un cálculo relacional anidado con matrices multidimensionales; entre los resultados se encuentran importantes contribuciones al análisis de la complejidad de las consultas de matrices. Mennis et al. publicaron un álgebra de mapas, adecuada para datos ráster espaciales 2-D y 3-D. [ 6 ]
En cuanto a implementaciones de DBMS de matriz, el sistema rasdaman tiene el historial de implementación más extenso de matrices nD con soporte completo para consultas. Oracle GeoRaster ofrece almacenamiento fragmentado de mapas ráster 2D, aunque sin integración SQL. TerraLib es un software SIG de código abierto que extiende la tecnología de DBMS objeto-relacional para manejar tipos de datos espacio-temporales; si bien se centra principalmente en datos vectoriales, también ofrece cierto soporte para rásteres. A partir de la versión 2.0, PostGIS incorpora soporte para rásteres 2D; una función especial ofrece funcionalidad de consulta declarativa para rásteres. SciQL es un lenguaje de consulta de matriz que se está agregando al DBMS MonetDB . SciDB es una iniciativa más reciente para establecer soporte para bases de datos de matriz. Al igual que SciQL, las matrices se consideran equivalentes a las tablas, en lugar de un nuevo tipo de atributo como en rasdaman y PostGIS.
Para el caso especial de datos dispersos , los cubos de datos OLAP están bien establecidos; almacenan los valores de las celdas junto con su ubicación ( una técnica de compresión adecuada ante la escasez de ubicaciones que contienen información válida ) y operan con SQL sobre ellos. Dado que esta técnica no escala con la densidad, las bases de datos estándar no se utilizan actualmente para datos densos, como las imágenes satelitales, donde la mayoría de las celdas contienen información significativa; en cambio, prevalecen las implementaciones propietarias ad hoc en la gestión de datos científicos y situaciones similares. Por lo tanto, es aquí donde los sistemas de gestión de bases de datos de matriz pueden aportar una contribución particular.
En general, los sistemas de gestión de bases de datos en arreglos (DBMS) son una tecnología emergente. Si bien existen sistemas operativos como Oracle GeoRaster , PostGIS 2.0 y rasdaman , aún quedan muchas incógnitas por resolver, como el diseño y la formalización del lenguaje de consulta, la optimización de consultas, la paralelización y el procesamiento distribuido , así como problemas de escalabilidad en general. Además, la comunidad científica todavía se muestra reacia a adoptar la tecnología de bases de datos en arreglos y tiende a preferir tecnologías especializadas y propietarias.
Conceptos
Al agregar matrices a las bases de datos, es necesario reconsiderar todas las facetas del diseño de la base de datos, desde el modelado conceptual (como los operadores adecuados) hasta la gestión del almacenamiento (como la gestión de matrices que abarcan múltiples medios) y el procesamiento de consultas (como las estrategias de procesamiento eficientes).
Modelado conceptual
Formalmente, un arreglo A viene dado por una función (total o parcial) A : X → V donde X , el dominio es un intervalo entero d -dimensional para algún d > 0 y V , llamado rango , es algún conjunto de valores (no vacío); en notación de conjuntos, esto se puede reescribir como { ( p , v ) | p ∈ X , v ∈ V } . Cada ( p , v ) en A denota un elemento o celda del arreglo , y siguiendo la notación común escribimos A [ p ] = v . Ejemplos para X incluyen {0..767} × {0..1023} (para imágenes de tamaño XGA ), ejemplos para V incluyen {0..255} para imágenes en escala de grises de 8 bits y {0..255} × {0..255} × {0..255} para imágenes RGB estándar .
Siguiendo las prácticas establecidas en bases de datos, un lenguaje de consulta de matrices debe ser declarativo y seguro en su evaluación. Dado que la iteración sobre una matriz es fundamental para su procesamiento, la declaratividad se centra en este aspecto. Por lo tanto, se requiere que, conceptualmente, todas las celdas se inspeccionen simultáneamente ; es decir, la consulta no impone ninguna secuencia de iteración explícita sobre las celdas de la matriz durante la evaluación. La seguridad en la evaluación se logra cuando cada consulta finaliza después de un número finito de pasos (de tiempo finito); nuevamente, evitar bucles generales y la recursión es una forma de conseguirlo. Al mismo tiempo, evitar secuencias de bucle explícitas abre numerosas oportunidades de optimización.
Consulta de matrices
Como ejemplo de operadores de consulta de matrices, podemos utilizar el álgebra y el lenguaje de consulta de Rasdaman , que establecen un lenguaje de expresiones sobre un conjunto mínimo de primitivas de matriz. Comenzamos con los operadores básicos genéricos y luego presentamos casos especiales comunes y notaciones abreviadas.
El operador marray crea una matriz sobre una extensión de dominio determinada e inicializa sus celdas:
especificación del rango del índice marray valores expresión-valor-celular donde la especificación del rango de índices define el dominio del resultado y le vincula una variable de iteración, sin especificar la secuencia de iteración. La expresión del valor de la celda se evalúa en cada ubicación del dominio.
Ejemplo: "Un recorte de la matriz A dado por los puntos de esquina (10,20) y (40,50)."
marray p en [10:20,40:50] valores A[p] Este caso especial, subconjunto puro, puede abreviarse como
A[10:20,40:50] Este subconjunto mantiene la dimensión de la matriz; para reducir la dimensión extrayendo segmentos, se indica un único valor de punto de segmento en la dimensión de segmentación.
Ejemplo: "Un corte transversal de una serie temporal x/y/t en la posición t=100, recuperando todos los datos disponibles en x e y."
A[*:*,*:*,100] El operador comodín * indica que se debe usar el límite actual de la matriz; tenga en cuenta que las matrices cuyos límites de dimensión se dejan abiertos en el momento de la definición pueden cambiar de tamaño en esas dimensiones a lo largo de la vida útil de la matriz.
Los ejemplos anteriores simplemente han copiado los valores originales; sin embargo, estos valores pueden ser manipulados.
Ejemplo: "Matriz A, con un logaritmo natural (log()) aplicado a cada valor de celda."
casarse p en el dominio (A) valores log( A[p] ) Esto se puede abreviar como:
log(A) Mediante un principio denominado operaciones inducidas , [ 7 ] el lenguaje de consulta ofrece todas las operaciones que ofrece el tipo de celda también a nivel de matriz. Por lo tanto, en valores numéricos, todas las operaciones aritméticas, exponenciales y trigonométricas habituales, tanto unarias como binarias, están disponibles de forma directa, además del conjunto estándar de operadores booleanos.
El operador de condensación agrega los valores de las celdas en un único resultado escalar, de forma similar a las agregaciones SQL. Su aplicación tiene la siguiente forma general:
condensar condensar-op sobre la especificación del rango del índice utilizando la expresión del valor de la célula Al igual que con marray , la especificación de rango de índice define el dominio sobre el que se iterará y le asigna una variable de iteración , sin especificar la secuencia de iteración. De igual modo, la expresión de valor de celda se evalúa en cada ubicación del dominio. La cláusula de operación de condensación especifica la operación de agregación que se utiliza para combinar las expresiones de valor de celda en un único valor.
Ejemplo: "La suma de todos los valores en A."
condensar + sobre p en sdom(A) usando A[p] Una forma abreviada de esta operación es:
agregar_celdas( A ) Del mismo modo y por analogía con las funciones de agregación de SQL, se proporcionan varias abreviaturas adicionales, que incluyen cuantificadores de conteo, promedio, mínimo, máximo y booleanos.
El siguiente ejemplo demuestra la combinación de los operadores marray y condense mediante la obtención de un histograma.
Ejemplo: "Un histograma sobre la imagen A en escala de grises de 8 bits."
cubo marray en [0:255] valores count_cells( A = bucket ) La comparación inducida, A=cubeta , establece una matriz booleana de la misma extensión que A. El operador de agregación cuenta las ocurrencias de verdadero para cada valor de cubeta , que posteriormente se coloca en la celda de matriz correspondiente de la matriz de histograma unidimensional.
Estos lenguajes permiten formular operaciones estadísticas y de procesamiento de imágenes que pueden expresarse analíticamente sin usar bucles. Se ha demostrado [ 8 ] que la capacidad expresiva de estos lenguajes de matrices es, en principio, equivalente a la de los lenguajes de consulta relacionales con ordenación.
Almacenamiento en matriz
El almacenamiento en matrices debe admitir matrices de diferentes dimensiones y, por lo general, de gran tamaño. Una tarea fundamental es mantener la proximidad espacial en el disco para reducir el número de accesos durante la selección de subconjuntos. Cabe destacar que la emulación de matrices multidimensionales como listas anidadas (o matrices unidimensionales) no logrará este objetivo por sí sola y, por lo tanto, en general, no dará lugar a arquitecturas escalables.
Generalmente, los arreglos se particionan en sub-arreglos que forman la unidad de acceso. El particionamiento regular, donde todas las particiones tienen el mismo tamaño (excepto posiblemente los límites), se denomina fragmentación . [ 9 ] Una generalización que elimina la restricción a particiones de igual tamaño al admitir cualquier tipo de particionamiento es el mosaico . [ 10 ] El particionamiento de arreglos puede mejorar significativamente el acceso a subconjuntos de arreglos: al ajustar el mosaico al patrón de acceso, el servidor idealmente puede obtener todos los datos necesarios con un solo acceso al disco.
La compresión de los bloques de datos puede, en ocasiones, reducir sustancialmente la cantidad de almacenamiento necesaria. Asimismo, la compresión resulta útil para la transmisión de resultados, ya que, para grandes volúmenes de datos, el ancho de banda de las redes suele ser un factor limitante.
Procesamiento de consultas
Una estructura de almacenamiento basada en bloques sugiere una estrategia de procesamiento bloque a bloque (en rasdaman , denominada transmisión de bloques ). Una amplia gama de consultas de relevancia práctica pueden evaluarse cargando bloque a bloque, lo que permite a los servidores procesar matrices de una magnitud muy superior a la de su memoria principal.

Debido al gran tamaño de los arrays en aplicaciones científicas y técnicas, junto con consultas a menudo complejas, la optimización desempeña un papel fundamental para lograr consultas de arrays eficientes. Se puede aplicar paralelización tanto por hardware como por software. Un ejemplo de optimización heurística es la regla: "el valor máximo de un array resultante de la suma celda por celda de dos imágenes de entrada es equivalente a sumar los valores máximos de cada array de entrada". Al reemplazar la variante de la izquierda por la expresión de la derecha, los costos se reducen de tres recorridos de array (costosos) a dos recorridos de array más una operación escalar (económica) (véase la figura, que utiliza el estándar de consulta SQL/MDA).
Dominios de aplicación
En muchos casos , si no en la mayoría , cuando se muestrea o simula algún fenómeno, el resultado es un conjunto de datos rasterizados que se puede almacenar, recuperar y transmitir fácilmente como una matriz. Normalmente, los datos de la matriz se complementan con metadatos que los describen con mayor detalle; por ejemplo, las imágenes georreferenciadas incluirán su posición geográfica y el sistema de coordenadas en el que se expresan.
Los siguientes son dominios representativos en los que se manejan datos de matrices multidimensionales a gran escala:
- Ciencias de la Tierra: geodesia/cartografía, teledetección , geología, oceanografía, hidrología, ciencias atmosféricas, ciencias criosféricas
- Ciencias espaciales: Ciencias planetarias, astrofísica (observaciones con telescopios ópticos y de radio, simulaciones cosmológicas)
- Ciencias de la vida: datos genéticos, microscopía confocal, tomografías computarizadas.
- Ciencias sociales: cubos de datos estadísticos
- Negocio: OLAP, almacenamiento de datos
Estos son solo ejemplos; generalmente, las matrices suelen representar datos de sensores, simulaciones, imágenes y estadísticas. Cada vez se combinan más dimensiones espaciales y temporales con ejes abstractos , como ventas y productos; un ejemplo donde se prevén explícitamente dichos ejes abstractos es el modelo de cobertura del [Open_Geospatial_Consortium |Open Geospatial Consortium] (OGC) .
Normalización
Numerosas comunidades han establecido formatos de intercambio de datos, como HDF , NetCDF y TIFF . Un estándar de facto en las comunidades de Ciencias de la Tierra es OPeNDAP , una arquitectura y protocolo de transporte de datos. Si bien no se trata de una especificación de base de datos, ofrece componentes importantes que caracterizan un sistema de base de datos, como un modelo conceptual e implementaciones cliente/servidor.
El Servicio de Procesamiento de Cobertura Web (WCPS, por sus siglas en inglés), un lenguaje de consulta georraster declarativo , ha sido estandarizado por el Consorcio Geoespacial Abierto (OGC).
En junio de 2014, ISO/IEC JTC1 SC32 WG3, que mantiene el estándar de base de datos SQL, decidió agregar soporte para matrices multidimensionales a SQL como un nuevo tipo de columna, [ 11 ] basándose en el soporte inicial para matrices disponible desde la versión 2003 de SQL . El nuevo estándar, adoptado en otoño de 2018, se denomina ISO 9075 SQL Parte 15: MDA (Matrices Multidimensionales) .
Lista de sistemas de gestión de bases de datos (DBMS) de tipo array
Véase también
Referencias
- ↑ Chock, M., Cardenas, A., Klinger, A.: Estructura de la base de datos y capacidades de manipulación de un sistema de gestión de bases de datos de imágenes (PICDMS). IEEE ToPAMI, 6(4):484–492, 1984
- ↑ Baumann, P.: Sobre la gestión de datos discretos multidimensionales . VLDB Journal 4(3)1994, Número especial sobre sistemas de bases de datos espaciales, págs. 401–444
- ↑ Baumann, P.: Un álgebra de matrices de bases de datos para datos espaciotemporales y más allá . Actas de NGITS'99, LNCS 1649, Springer 1999, págs. 76-93.
- ↑ Marathe, A., Salem, K.: Un lenguaje para manipular matrices. Actas de VLDB'97, Atenas, Grecia, agosto de 1997, págs. 46–55
- ↑ Libkin, L., Machlin, R., Wong, L.: Un lenguaje de consulta para matrices multidimensionales: diseño, implementación y técnicas de optimización. Actas de ACM SIGMOD'96, Montreal, Canadá, págs. 228–239
- ↑ Mennis, J., Viger, R., Tomlin, CD: Funciones de álgebra de mapas cúbicos para análisis espacio-temporal. Cartography and Geographic Information Science 32(1)2005, pp. 17–32
- ↑ Ritter, G. y Wilson, J. y Davidson, J.: Álgebra de imágenes: una visión general. Computer Vision, Graphics, and Image Processing, 49(1)1994, 297-336
- ↑ Machlin, R.: Consultas de matrices multidimensionales basadas en índices: seguridad y equivalencia. Actas de ACM PODS'07, Pekín, China, junio de 2007, págs. 175-184.
- ↑ Sarawagi, S. , Stonebraker, M. : Organización eficiente de grandes matrices multidimensionales. Actas de ICDE'94, Houston, EE. UU., 1994, págs. 328-336
- ↑ Furtado, P., Baumann, P.: Almacenamiento de matrices multidimensionales basado en teselado arbitrario . Actas de ICDE'99, 23-26 de marzo de 1999, Sídney, Australia, págs. 328-336.
- ↑ Chirgwin, R.: SQL contraataca al auge de NoSQL en el ámbito del big data con la especificación SQL/MDA , The Register, 26 de junio de 2014
- Modelos de bases de datos
- Sistemas de gestión de bases de datos