MonetDB - MonetDB

MonetDB
Logotipo de MonetDB
Desarrollador (es) MonetDB BV
Lanzamiento estable
Jul2021-SP1 / 5 de octubre de 2021 ( 05/10/2021 )
Repositorio
Escrito en C
Sistema operativo Multiplataforma
Escribe DBMS orientado a columnas
RDBMS
Licencia Licencia pública de Mozilla , versión 2.0
Sitio web www .monetdb .org

MonetDB es un sistema de gestión de bases de datos relacionales (RDBMS) orientado a columnas de código abierto desarrollado originalmente en Centrum Wiskunde & Informatica (CWI) en los Países Bajos . Está diseñado para proporcionar un alto rendimiento en consultas complejas contra grandes bases de datos, como combinar tablas con cientos de columnas y millones de filas. MonetDB se ha aplicado en aplicaciones de alto rendimiento para procesamiento analítico en línea , minería de datos , sistema de información geográfica (GIS), marco de descripción de recursos (RDF), recuperación de texto y procesamiento de alineación de secuencias .

Historia

El logotipo antiguo de MonetDB

Los proyectos de minería de datos en la década de 1990 requirieron un mejor soporte de bases de datos analíticas. Esto resultó en una escisión de CWI llamada Data Distilleries, que utilizó las primeras implementaciones de MonetDB en su suite analítica. Data Distilleries finalmente se convirtió en una subsidiaria de SPSS en 2003, que a su vez fue adquirida por IBM en 2009.

MonetDB en su forma actual fue creado por primera vez en 2002 por el estudiante de doctorado Peter Boncz y el profesor Martin L. Kersten como parte del proyecto de investigación MAGNUM de la década de 1990 en la Universidad de Amsterdam . Inicialmente se llamó simplemente Monet, en honor al pintor impresionista francés Claude Monet . La primera versión bajo una licencia de software de código abierto (una versión modificada de la Licencia pública de Mozilla ) fue lanzada el 30 de septiembre de 2004. Cuando MonetDB versión 4 se lanzó al dominio de código abierto, muchas extensiones al código base fueron agregadas por el equipo de MonetDB / CWI, que incluye una nueva interfaz de SQL, que admite el estándar SQL: 2003 .

MonetDB introdujo innovaciones en todas las capas del DBMS : un modelo de almacenamiento basado en la fragmentación vertical, una arquitectura moderna de ejecución de consultas ajustada a la CPU que a menudo le daba a MonetDB una ventaja de velocidad sobre el mismo algoritmo sobre un RDBMS típico basado en intérpretes . Fue uno de los primeros sistemas de bases de datos en ajustar la optimización de consultas para cachés de CPU . MonetDB incluye índices automáticos y de autoajuste, optimización de consultas en tiempo de ejecución y una arquitectura de software modular.

En 2008, comenzó un proyecto de seguimiento llamado X100 (MonetDB / X100), que evolucionó hacia la tecnología VectorWise . VectorWise fue adquirido por Actian Corporation , integrado con la base de datos Ingres y vendido como un producto comercial.

En 2011 se inició un gran esfuerzo para renovar el código base de MonetDB. Como parte de él, se congelaron el código para el kernel de MonetDB 4 y sus componentes XQuery. En MonetDB 5, partes de la capa SQL se insertaron en el kernel. Los cambios resultantes crearon una diferencia en las API internas , ya que pasó del lenguaje de instrucciones MonetDB (MIL) al lenguaje ensamblador de MonetDB (MAL). También se eliminaron las interfaces de consulta de nivel superior más antiguas y que ya no se mantienen. Primero fue XQuery , que se basó en MonetDB 4 y nunca se transfirió a la versión 5. El soporte de la interfaz Jaql experimental se eliminó con la versión de octubre de 2014. Con la versión de julio de 2015, MonetDB ganó soporte para índices persistentes y fragmentación de datos de solo lectura . En esta versión, el módulo de transmisión de datos obsoleto DataCell también se eliminó de la base de código principal en un esfuerzo por simplificar el código. Además, la licencia se ha cambiado a la licencia pública de Mozilla, versión 2.0 .

Arquitectura

La arquitectura de MonetDB está representada en tres capas, cada una con su propio conjunto de optimizadores. El front-end es la capa superior, que proporciona una interfaz de consulta para SQL , con interfaces SciQL y SPARQL en desarrollo. Las consultas se analizan en representaciones específicas de dominio, como álgebra relacional para SQL, y se optimizan. Los planes de ejecución lógica generados se traducen luego a instrucciones en lenguaje ensamblador de MonetDB (MAL), que se pasan a la siguiente capa. La capa intermedia o de fondo proporciona una serie de optimizadores basados ​​en costos para el MAL. La capa inferior es el núcleo de la base de datos, que proporciona acceso a los datos almacenados en las tablas de asociación binaria (BAT). Cada BAT es una tabla que consta de un identificador de objeto y columnas de valor, que representan una sola columna en la base de datos.

La representación de datos internos de MonetDB también se basa en los rangos de direccionamiento de memoria de las CPU contemporáneas que utilizan la paginación de demanda de archivos mapeados en memoria y, por lo tanto, se apartan de los diseños tradicionales de DBMS que implican una gestión compleja de grandes almacenes de datos en memoria limitada.

Reciclaje de consultas

El reciclaje de consultas es una arquitectura para reutilizar los subproductos del paradigma de operador a la vez en un DBMS de almacén de columnas. El reciclaje hace uso de la idea genérica de almacenar y reutilizar los resultados de cálculos costosos. A diferencia de los cachés de instrucciones de bajo nivel, el reciclaje de consultas utiliza un optimizador para preseleccionar instrucciones para almacenar en caché. La técnica está diseñada para mejorar los tiempos de respuesta a las consultas y el rendimiento, mientras trabaja de forma autoorganizada. Los autores del grupo CWI Database Architectures, compuesto por Milena Ivanova, Martin Kersten , Niels Nes y Romulo Goncalves, ganaron el "Mejor papel finalista" en la conferencia ACM SIGMOD 2009 por su trabajo sobre el reciclaje de consultas.

Craqueo de bases de datos

MonetDB fue una de las primeras bases de datos en introducir el craqueo de bases de datos. El Cracking de la base de datos es una indexación y / o clasificación parcial incremental de los datos. Explota directamente la naturaleza columnar de MonetDB. El descifrado es una técnica que traslada el costo del mantenimiento del índice de las actualizaciones al procesamiento de consultas. Los optimizadores de la canalización de consultas se utilizan para masajear los planes de consulta para que se rompan y propaguen esta información. La técnica permite mejorar los tiempos de acceso y el comportamiento autoorganizado. Database Cracking recibió el premio ACM SIGMOD 2011 J.Gray a la mejor disertación.

Componentes

Existen varias extensiones para MonetDB que amplían la funcionalidad del motor de base de datos. Debido a la arquitectura de tres capas, las interfaces de consulta de nivel superior pueden beneficiarse de las optimizaciones realizadas en las capas de backend y kernel.

SQL

MonetDB / SQL es una extensión de nivel superior, que brinda soporte completo para transacciones de conformidad con el estándar SQL: 2003 .

SIG

MonetDB / GIS es una extensión de MonetDB / SQL con soporte para el estándar Simple Features Access de Open Geospatial Consortium (OGC).

SciQL

SciQL es un lenguaje de consulta basado en SQL para aplicaciones científicas con matrices como ciudadanos de primera clase. SciQL permite que MonetDB funcione eficazmente como una base de datos de matriz . SciQL se utiliza en el proyecto de la Unión Europea PlanetData y TELEIOS , junto con la tecnología Data Vault, proporcionando acceso transparente a grandes repositorios de datos científicos. Las bóvedas de datos mapean los datos de los repositorios distribuidos a las matrices SciQL, lo que permite un mejor manejo de los datos espacio-temporales en MonetDB. SciQL se ampliará aún más para el Proyecto Cerebro Humano .

Bóvedas de datos

Data Vault es un repositorio de archivos externo adjunto a la base de datos para MonetDB, similar al estándar SQL / MED . La tecnología Data Vault permite una integración transparente con repositorios de archivos distribuidos / remotos. Está diseñado para la exploración y extracción de datos de datos científicos , específicamente para datos de teledetección . Hay soporte para los formatos GeoTIFF ( observación de la Tierra ), FITS ( astronomía ), MiniSEED ( sismología ) y NetCDF . Los datos se almacenan en el repositorio de archivos en el formato original y se cargan en la base de datos de forma diferida , solo cuando es necesario. El sistema también puede procesar los datos tras la ingestión, si el formato de los datos lo requiere. Como resultado, incluso los repositorios de archivos muy grandes se pueden analizar de manera eficiente, ya que solo se procesan los datos requeridos en la base de datos. Se puede acceder a los datos a través de las interfaces MonetDB SQL o SciQL. La tecnología de Data Vault se utilizó en la Unión Europea 's palabra TELEIOS proyecto, que fue dirigido a la construcción de un observatorio virtual para los datos de observación de la Tierra. Las bóvedas de datos para archivos FITS también se han utilizado para procesar datos de levantamientos astronómicos para el levantamiento fotométrico H-Alpha INT (IPHAS)

SAM / BAM

MonetDB tiene un módulo SAM / BAM para el procesamiento eficiente de los datos de alineación de secuencias . Dirigido a la investigación bioinformática , el módulo cuenta con un cargador de datos SAM / BAM y un conjunto de UDF de SQL para trabajar con datos de ADN . El módulo utiliza la popular biblioteca SAMtools .

RDF / SPARQL

MonetDB / RDF es una extensión basada en SPARQL para trabajar con datos vinculados, que agrega soporte para RDF y permite que MonetDB funcione como una tienda triple . En desarrollo para el proyecto Linked Open Data 2 .

Integración R

El módulo MonetDB / R permite que las UDF escritas en R se ejecuten en la capa SQL del sistema. Esto se hace utilizando el soporte R nativo para ejecutar embebidos en otra aplicación, dentro del RDBMS en este caso. Anteriormente, el conector MonetDB.R permitía usar fuentes de datos MonetDB y procesarlas en una sesión R. La nueva función de integración R de MonetDB no requiere que se transfieran datos entre el RDBMS y la sesión R, lo que reduce la sobrecarga y mejora el rendimiento. La función está destinada a brindar a los usuarios acceso a las funciones del software estadístico R para el análisis en línea de los datos almacenados en el RDBMS. Complementa el soporte existente para C UDF y está destinado a ser utilizado para el procesamiento en la base de datos .

Integración de Python

De manera similar a las UDF de R integradas en MonetDB, la base de datos ahora es compatible con las UDF escritas en Python / NumPy . La implementación utiliza matrices Numpy (en sí mismas envolturas de Python para matrices C), como resultado, hay una sobrecarga limitada, lo que proporciona una integración funcional de Python con funciones SQL nativas de coincidencia de velocidad. Las funciones de Python incrustadas también admiten operaciones mapeadas, lo que permite al usuario ejecutar funciones de Python en paralelo dentro de las consultas SQL. El lado práctico de la función brinda a los usuarios acceso a las bibliotecas Python / NumPy / SciPy , que pueden proporcionar una gran selección de funciones estadísticas / analíticas.

MonetDBLite

Tras el lanzamiento del controlador remoto para R ( MonetDB.R ) y R UDF en MonetDB (MonetDB / R), los autores crearon una versión incrustada de MonetDB en R llamada MonetDBLite . Se distribuye como un paquete R, lo que elimina la necesidad de administrar un servidor de base de datos, necesario para las integraciones anteriores de R. El DBMS se ejecuta dentro del propio proceso R, lo que elimina la sobrecarga de serialización y comunicación de socket, lo que mejora enormemente la eficiencia. La idea detrás de esto es entregar un paquete similar a SQLite para R, con el rendimiento de un almacén de columnas optimizado en memoria.

Antiguas extensiones

Varias extensiones anteriores han quedado obsoletas y se han eliminado de la base de código estable con el tiempo. Algunos ejemplos notables incluyen una extensión XQuery eliminada en MonetDB versión 5; una extensión JAQL y una extensión de transmisión de datos llamada Data Cell .

Ver también

Referencias

Bibliografía

  • Boncz, Peter; Manegold, Stefan; Kersten, Martin (1999). Arquitectura de base de datos optimizada para el nuevo cuello de botella: acceso a la memoria . Actas de la Conferencia Internacional sobre Bases de Datos Muy Grandes . págs. 54–65.
  • Schmidt, Albrecht; Kersten, Martin; Windhouwer, Menzo; Waas, Florian (2001). "Almacenamiento relacional eficiente y recuperación de documentos XML" . La World Wide Web y las bases de datos . Apuntes de conferencias en Ciencias de la Computación. Saltador. 1997 : 137–150. doi : 10.1007 / 3-540-45271-0_9 . ISBN 978-3-540-41826-9.
  • Idreos, Stratos; Kersten, Martin L; Manegold, Stefan (2007). Craqueo de bases de datos . Procedimientos de CIDR .
  • Boncz, Peter A; Kersten, Martin L; Manegold, Stefan (2008). "Rompiendo el muro de la memoria en MonetDB" . Comunicaciones de la ACM . ACM. 51 (12): 77–85. doi : 10.1145 / 1409360.1409380 . S2CID  5633935 .
  • Sidirourgos, Lefteris; Goncalves, Romulo; Kersten, Martin; Nes, Niels; Manegold, Stefan (2008). "Soporte de almacenamiento de columnas para la gestión de datos RDF: no todos los cisnes son blancos". Actas de la Dotación VLDB . 1 (2): 1553-1563. doi : 10.14778 / 1454159.1454227 .
  • Ivanova, Milena G .; Kersten, Martin L .; Nes, Niels J .; Goncalves, Romulo AP (2009). "Una arquitectura para el reciclaje de productos intermedios en un almacén de columnas". Actas de la Conferencia Internacional ACM SIGMOD de 2009 sobre Gestión de Datos . SIGMOD '09. ACM. págs. 309–320. doi : 10.1145 / 1559845.1559879 . ISBN 978-1-60558-551-2.
  • Manegold, Stefan; Boncz, Peter A .; Kersten, Martin L. (diciembre de 2000). "Optimización de la arquitectura de la base de datos para el nuevo cuello de botella: acceso a la memoria" . El diario VLDB . Springer-Verlag New York, Inc. 9 (3): 231–246. doi : 10.1007 / s007780000031 . ISSN  1066-8888 . S2CID  1688757 .
  • Ivanova, Milena G; Kersten, Martin L; Nes, Niels J; Goncalves, Romulo AP (2010). "Una arquitectura para el reciclaje de intermedios en una columna-almacén" . Transacciones ACM en sistemas de bases de datos . ACM. 35 (4): 24. doi : 10.1145 / 1862919.1862921 . S2CID  52811192 .
  • Goncalves, Romulo y Kersten, Martin (2011). "El esquema de procesamiento de consultas del ciclotrón de datos" . Transacciones ACM en sistemas de bases de datos . ACM. 36 (4): 27. doi : 10.1145 / 2043652.2043660 .
  • Kersten, Martin L; Idreos, Stratos; Manegold, Stefan; Liarou, Erietta (2011). "La guía del investigador sobre el diluvio de datos: consultar una base de datos científica en tan solo unos segundos". Retos y visiones de PVLDB .
  • Kersten, M; Zhang, Ying; Ivanova, Milena; Nes, Niels (2011). "SciQL, un lenguaje de consulta para aplicaciones científicas". Actas del taller EDBT / ICDT 2011 sobre bases de datos de matrices . ACM. págs. 1-12.
  • Sidirourgos, Lefteris; Kersten, Martin; Boncz, Peter (2011). "SciBORQ: gestión de datos científicos con límites en tiempo de ejecución y calidad". Creative Commons. Cite journal requiere |journal=( ayuda )
  • Liarou, Erietta; Idreos, Stratos; Manegold, Stefan; Kersten, Martin (2012). "MonetDB / DataCell: análisis en línea en un almacén de columnas de transmisión" . Actas de la Dotación VLDB . 5 (12): 1910-1913. doi : 10.14778 / 2367502.2367535 . S2CID  545154 .
  • Ivanova, Milena; Kersten, Martin; Manegold, Stefan (2012). "Bóvedas de datos: una simbiosis entre la tecnología de bases de datos y los repositorios de archivos científicos". Gestión de bases de datos científicas y estadísticas . SSDBM 2012. Springer Berlín Heidelberg. págs. 485–494.
  • Kargin, Yagiz; Ivanova, Milena; Zhang, Ying; Manegold, Stefan; Kersten, Martin (agosto de 2013). "ETL perezoso en acción: datos científicos de fechas de tecnología ETL". Actas de la Dotación VLDB . 6 (12). págs. 1286-1289. doi : 10.14778 / 2536274.2536297 . ISSN  2150-8097 .
  • Sidirourgos, Lefteris y Kersten, Martin (2013). "Impresiones de columna: una estructura de índice secundaria". Actas de la conferencia internacional de 2013 sobre gestión de datos . ACM. págs. 893–904.
  • Ivanova, Milena; Kargin, Yagiz; Kersten, Martin; Manegold, Stefan; Zhang, Ying; Datcu, Mihai; Molina, Daniela Espinoza (2013). "Bóvedas de datos: una base de datos de bienvenida a repositorios de archivos científicos". Actas de la 25ª Conferencia Internacional sobre Gestión de Bases de Datos Científicas y Estadísticas . SSDBM. ACM. doi : 10.1145 / 2484838.2484876 . ISBN 978-1-4503-1921-8.

enlaces externos

Este artículo se basa en material extraído del Diccionario de Computación en línea gratuito antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.