stringtranslate.com

Sistema de gestión de bases de datos de matriz

Un sistema de gestión de bases de datos de matriz o DBMS de matriz proporciona servicios de base de datos específicamente para matrices (también llamadas datos rasterizados ), es decir: colecciones homogéneas de elementos de datos (a menudo llamados píxeles , vóxeles , etc.), que se encuentran en una cuadrícula regular de una, dos o más dimensiones. A menudo, las matrices se utilizan para representar datos de sensores, simulación, imágenes o estadísticas. Estas matrices tienden a ser Big Data , con objetos individuales que con frecuencia alcanzan tamaños de Terabytes y pronto Petabytes; por ejemplo, los archivos de observación de la Tierra y el espacio de hoy generalmente crecen en Terabytes por día. Las bases de datos de matriz tienen como objetivo ofrecer almacenamiento y recuperación flexibles y escalables en esta categoría de información.

Vecindario euclidiano de elementos en matrices
Vecindario euclidiano de elementos en matrices

Descripción general

Al igual que los sistemas de bases de datos estándar , los sistemas de gestión de bases de datos de matriz ofrecen almacenamiento escalable y flexible, así como recuperación y manipulación flexibles de matrices de tamaño (conceptualmente) ilimitado. Como en la práctica las matrices nunca aparecen de forma independiente, este modelo de matriz normalmente está integrado en algún modelo de datos general, como el modelo relacional. Algunos sistemas implementan matrices como una analogía con las tablas, otros introducen matrices como un tipo de atributo adicional.

La gestión de matrices requiere técnicas novedosas, en particular debido al hecho de que las tuplas y los objetos de bases de datos tradicionales tienden a caber bien en una sola página de base de datos (una unidad de acceso al disco en el servidor, normalmente 4  KB  ), mientras que los objetos de matriz pueden abarcar fácilmente varios medios. La tarea principal del administrador de almacenamiento de matrices es brindar acceso rápido a matrices y submatrices de gran tamaño. Para ello, las matrices se dividen, durante la inserción, en los denominados mosaicos o fragmentos de tamaño conveniente que luego actúan como unidades de acceso durante la evaluación de consultas.

Los DBMS de matriz ofrecen lenguajes de consulta que otorgan acceso declarativo a dichas matrices, lo que permite crearlas, manipularlas, buscarlas y eliminarlas. Al igual que con SQL , por ejemplo , se pueden crear expresiones de complejidad arbitraria sobre un conjunto de operaciones de matriz básicas. Debido a las extensiones realizadas en el modelo de datos y consultas, los DBMS de matriz a veces se incluyen en la categoría NoSQL , en el sentido de "no solo SQL". La optimización de consultas y la paralelización son importantes para lograr escalabilidad ; de hecho, muchos operadores de matriz se prestan bien a la evaluación paralela, al procesar cada mosaico en nodos o núcleos separados.

Los dominios de aplicación importantes de los sistemas de gestión de bases de datos de matriz incluyen las ciencias de la Tierra, del espacio, de la vida y sociales, así como las aplicaciones comerciales relacionadas (como la exploración de hidrocarburos en la industria y el OLAP en los negocios). La variedad que se da 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 x/y/t tridimensionales y datos geofísicos x/y/z, así como datos climáticos y oceánicos x/y/z cuatridimensionales.

Historia y estado

El modelo de datos relacional , que prevalece hoy en día, no admite directamente el paradigma de matriz en la misma medida que los conjuntos y las tuplas. ISO SQL enumera un tipo de atributo con valor de matriz, pero este es solo unidimensional, casi sin soporte operativo y no se puede utilizar para los dominios de aplicación de los DBMS de matriz. 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 nuevamente sin ninguna funcionalidad de lenguaje de consulta, como subconjuntos multidimensionales.

El primer trabajo significativo que va más allá de los BLOB se ha realizado con PICDMS. [1] Este sistema ofrece el precursor de un lenguaje de consulta de matriz 2D, aunque todavía procedimental y sin soporte de almacenamiento adecuado.

Baumann ha publicado 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 han presentado otro lenguaje de base de datos de matrices, restringido a 2-D. [4] Libkin et al. han realizado un trabajo teórico seminal; [5] en su modelo, llamado NCRA, extienden un cálculo relacional anidado con matrices multidimensionales; entre los resultados hay importantes contribuciones al análisis de la complejidad de consultas de matrices. Mennis et al. han publicado un álgebra de mapas, adecuada para datos ráster espaciales 2-D y 3-D. [6]

En términos de implementaciones de DBMS de matriz, el sistema rasdaman tiene el historial de implementación más largo de matrices nD con soporte completo de consultas. Oracle GeoRaster ofrece almacenamiento fragmentado de mapas ráster 2-D, aunque sin integración SQL. TerraLib es un software SIG de código abierto que extiende la tecnología DBMS relacional de objetos para manejar tipos de datos espacio-temporales; si bien el enfoque principal está en los datos vectoriales, también hay cierto soporte para rásteres. A partir de la versión 2.0, PostGIS incorpora soporte raster para rásteres 2-D; una función especial ofrece funcionalidad de consulta raster declarativa. 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 de base de datos de matriz. Al igual que SciQL, las matrices se consideran un equivalente 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 valores de celda junto con su ubicación (una técnica de compresión adecuada frente a las pocas ubicaciones que contienen información válida) y operan con SQL sobre ellos. Como esta técnica no escala en densidad, las bases de datos estándar no se utilizan hoy en día para datos densos, como imágenes satelitales, donde la mayoría de las celdas contienen información significativa; en cambio, prevalecen las implementaciones ad hoc propietarias en la gestión de datos científicos y situaciones similares. Por lo tanto, aquí es donde los DBMS de matriz pueden hacer una contribución particular.

En general, los sistemas de gestión de bases de datos de matriz son una tecnología emergente. Si bien existen sistemas implementados operativamente, como Oracle GeoRaster , PostGIS 2.0 y rasdaman , aún quedan muchas preguntas de investigación abiertas, incluido el diseño y formalización del lenguaje de consulta, la optimización de consultas, la paralelización y el procesamiento distribuido , y los problemas de escalabilidad en general. Además, las comunidades científicas aún parecen reacias a adoptar la tecnología de bases de datos de matriz y tienden a favorecer la tecnología especializada y propietaria.

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, una matriz A se da por una función (total o parcial) A : XV 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 ) | pX , vV } . Cada ( p , v ) en A denota un elemento de matriz o celda , y siguiendo la notación común escribimos A [ p ] = v . Los ejemplos para X incluyen {0..767} × {0..1023} (para imágenes de tamaño XGA ), los 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 la práctica establecida en bases de datos, un lenguaje de consulta de matrices debe ser declarativo y seguro en la evaluación. Como la iteración sobre una matriz es el núcleo del procesamiento de matrices, la declaratividad se centra en gran medida en este aspecto. El requisito, entonces, es que conceptualmente todas las celdas deben inspeccionarse simultáneamente; en otras palabras, la consulta no impone ninguna secuencia de iteración explícita sobre las celdas de la matriz durante la evaluación. La seguridad de la evaluación se logra cuando cada consulta termina después de un número finito de pasos (de tiempo finito); nuevamente, evitar los bucles generales y la recursión es una forma de lograr esto. Al mismo tiempo, evitar secuencias de bucle explícitas abre múltiples oportunidades de optimización.

Consulta de matriz

Como ejemplo de operadores de consulta de matrices, podemos utilizar el álgebra de Rasdaman y el lenguaje de consulta, que establecen un lenguaje de expresión sobre un conjunto mínimo de primitivas de matrices. Comenzamos con los operadores básicos genéricos y luego presentamos casos especiales y abreviaturas comunes.

El operador marray crea una matriz sobre una extensión de dominio determinada e inicializa sus celdas:

especificación del rango de índice de marrayvalores expresión-valor-celda

donde la especificación del rango de índice define el dominio de resultados y le vincula una variable de iteración, sin especificar la secuencia de iteración. La expresión del valor de 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, el subconjunto puro, se puede abreviar como

A[10:20,40:50]

Este subconjunto conserva la dimensión de la matriz; para reducir la dimensión extrayendo porciones, se indica un único valor de punto de porción en la dimensión de porción.

Ejemplo: "Un corte a través 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 utilizar el límite actual de la matriz; tenga en cuenta que las matrices donde los límites de dimensión se dejan abiertos en el momento de la definición pueden cambiar de tamaño en esas dimensiones durante 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 log() aplicado a cada valor de celda".

marray p en el dominio(A)valores log( A[p] )

Esto se puede abreviar como:

registro( A )

Mediante un principio llamado operaciones inducidas , [7] el lenguaje de consulta ofrece todas las operaciones que el tipo de celda ofrece también a nivel de matriz. Por lo tanto, en valores numéricos están disponibles de manera sencilla todas las operaciones aritméticas, exponenciales y trigonométricas unarias y binarias habituales, además del conjunto estándar de operadores booleanos.

El operador de condensación agrega valores de celdas en un resultado escalar, de manera similar a las agregaciones de SQL. Su aplicación tiene la forma general:

condensar condensar-opsobre la especificación del rango de índiceusando expresión-valor-celda

Al igual que con marray , la especificación de rango de índice especifica el dominio sobre el que se realizará la iteración y le vincula una variable de iteración (nuevamente, sin especificar la secuencia de iteración). Asimismo, la expresión de valor de celda se evalúa en cada ubicación del dominio. La cláusula condense-op 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 )

De la misma manera y en analogía con los agregados SQL, se proporcionan una serie de abreviaturas adicionales, entre las que se incluyen cuantificadores de conteo, promedio, mínimo, máximo y booleanos.

El siguiente ejemplo demuestra la combinación de los operadores marray y condense derivando un histograma.

Ejemplo: "Un histograma sobre una imagen A en escala de grises de 8 bits".

Cubo de marray en [0:255]valores count_cells( A = cubo )

La comparación inducida, A=bucket , establece una matriz booleana de la misma extensión que A . El operador de agregación cuenta las ocurrencias de true para cada valor de bucket , que posteriormente se coloca en la celda de matriz adecuada de la matriz de histograma 1-D.

Estos lenguajes permiten formular operaciones estadísticas y de imagen que pueden expresarse analíticamente sin utilizar bucles. Se ha demostrado [8] que el poder expresivo de estos lenguajes de matrices es en principio equivalente al de los lenguajes de consulta relacional con clasificació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 la cantidad de accesos al disco durante la creación de subconjuntos. Tenga en cuenta que una emulación de matrices multidimensionales como listas anidadas (o matrices unidimensionales) no logrará esto por sí sola y, por lo tanto, en general no conducirá a arquitecturas escalables.

Comúnmente, las matrices se dividen en submatrices que forman la unidad de acceso. La partición regular donde todas las particiones tienen el mismo tamaño (excepto posiblemente los límites) se conoce como chunking . [9] Una generalización que elimina la restricción a particiones de igual tamaño al admitir cualquier tipo de partición es tiling . [10] La partición de matrices puede mejorar significativamente el acceso a subconjuntos de matrices: al ajustar el mosaico al patrón de acceso, el servidor idealmente puede obtener todos los datos requeridos con solo un acceso al disco.

La compresión de los mosaicos puede reducir en ocasiones sustancialmente la cantidad de almacenamiento necesaria. También resulta útil para la transmisión de resultados, ya que, para las grandes cantidades de datos que se manejan, el ancho de banda de las redes suele ser un factor limitante.

Procesamiento de consultas

Una estructura de almacenamiento basada en mosaicos sugiere una estrategia de procesamiento mosaico por mosaico (en rasdaman llamada streaming de mosaicos ). Se puede evaluar una gran clase de consultas relevantes desde el punto de vista práctico cargando mosaico tras mosaico, lo que permite a los servidores procesar matrices de órdenes de magnitud más allá de su memoria principal.

Transformación de una consulta a una versión más eficiente, pero equivalente, durante la optimización de consultas de matriz

Debido a los enormes tamaños de las matrices en aplicaciones científicas y técnicas, en combinación con consultas a menudo complejas, la optimización desempeña un papel central para lograr que las consultas de matrices sean eficientes. Se puede aplicar tanto la paralelización de hardware como la de software. Un ejemplo de optimización heurística es la regla "el valor máximo de una matriz resultante de la suma de dos imágenes de entrada celda por celda es equivalente a sumar los valores máximos de cada matriz de entrada". Al reemplazar la variante de la izquierda por la expresión de la derecha, los costos se reducen de tres recorridos de matriz (costosos) a dos recorridos de matriz más una operación escalar (barata) (consulte la Figura, que utiliza el estándar de consulta SQL/MDA).

Dominios de aplicación

En muchos casos (si no en la mayoría) en los que se muestrea o simula algún fenómeno, el resultado es un conjunto de datos rasterizados que se pueden almacenar, recuperar y reenviar cómodamente como una matriz. Normalmente, los datos de la matriz se adornan con metadatos que los describen con más detalle; por ejemplo, las imágenes con referencias geográficas llevarán su posición geográfica y el sistema de referencia de coordenadas en el que se expresan.

Los siguientes son dominios representativos en los que se manejan datos de matrices multidimensionales a gran escala:

Estos son solo ejemplos; por lo general, las matrices representan con frecuencia datos de sensores, simulación, imágenes y estadísticas. Cada vez más dimensiones espaciales y temporales se combinan con ejes abstractos , como ventas y productos; un ejemplo en el que dichos ejes abstractos se prevén explícitamente es el modelo de cobertura del [Open_Geospatial_Consortium |Open Geospatial Consortium] (OGC) .

Normalización

Muchas 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 Consorcio Geoespacial Abierto (OGC) ha estandarizado un lenguaje de consulta georraster declarativo, el Servicio de Procesamiento de Cobertura Web (WCPS) .

En junio de 2014, ISO/IEC JTC1 SC32 WG3, que mantiene el estándar de base de datos SQL, decidió agregar soporte de matriz multidimensional a SQL como un nuevo tipo de columna, [11] basándose en el soporte de matriz inicial 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 DBMS de matriz

Véase también

Referencias

  1. ^ 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
  2. ^ 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
  3. ^ Baumann, P.: Un álgebra de matrices de bases de datos para datos espacio-temporales y más allá. Proc. NGITS'99, LNCS 1649, Springer 1999, págs. 76-93
  4. ^ Marathe, A., Salem, K.: Un lenguaje para manipular matrices. Proc. VLDB'97, Atenas, Grecia, agosto de 1997, págs. 46-55
  5. ^ Libkin, L., Machlin, R., Wong, L.: Un lenguaje de consulta para matrices multidimensionales: técnicas de diseño, implementación y optimización. Proc. ACM SIGMOD'96, Montreal, Canadá, págs. 228–239
  6. ^ Mennis, J., Viger, R., Tomlin, CD: Funciones del álgebra de mapas cúbicos para el análisis espacio-temporal. Cartografía y ciencia de la información geográfica 32(1)2005, págs. 17–32
  7. ^ Ritter, G. y Wilson, J. y Davidson, J.: Álgebra de imágenes: una descripción general. Visión por computadora, gráficos y procesamiento de imágenes, 49(1)1994, 297-336
  8. ^ Machlin, R.: Consultas de matrices multidimensionales basadas en índices: seguridad y equivalencia. Proc. ACM PODS'07, Pekín, China, junio de 2007, págs. 175-184
  9. ^ Sarawagi, S. , Stonebraker, M .: Organización eficiente de grandes matrices multidimensionales. Proc. ICDE'94, Houston, EE. UU., 1994, págs. 328-336
  10. ^ Furtado, P., Baumann, P.: Almacenamiento de matrices multidimensionales basado en mosaico arbitrario. Proc. ICDE'99, 23-26 de marzo de 1999, Sydney, Australia, págs. 328-336
  11. ^ Chirgwin, R.: SQL contraataca la credibilidad de NoSQL en el campo de los big data con la especificación SQL/MDA, The Register, 26 de junio de 2014