MonetDB - MonetDB

MonetDB
Logotipo do MonetDB
Desenvolvedor (s) MonetDB BV
Versão estável
Jul2021-SP1 / 5 de outubro de 2021 ( 2021-10-05 )
Repositório
Escrito em C
Sistema operacional Plataforma cruzada
Modelo DBMS RDBMS orientado por coluna
Licença Licença Pública Mozilla , versão 2.0
Local na rede Internet www .monetdb .org

MonetDB é um sistema de gerenciamento de banco de dados relacional orientado a colunas (RDBMS) de código aberto originalmente desenvolvido no Centrum Wiskunde & Informatica (CWI) na Holanda . Ele foi projetado para fornecer alto desempenho em consultas complexas em grandes bancos de dados, como a combinação de tabelas com centenas de colunas e milhões de linhas. MonetDB tem sido aplicado em aplicativos de alto desempenho para processamento analítico online , mineração de dados , sistema de informações geográficas (GIS), Resource Description Framework (RDF), recuperação de texto e processamento de alinhamento de sequência .

História

O antigo logotipo do MonetDB

Os projetos de mineração de dados na década de 1990 exigiam suporte de banco de dados analítico aprimorado. Isso resultou em um spin-off do CWI chamado Data Distilleries, que usou as primeiras implementações do MonetDB em seu pacote analítico. A Data Distilleries acabou se tornando uma subsidiária da SPSS em 2003, que por sua vez foi adquirida pela IBM em 2009.

O MonetDB em sua forma atual foi criado pela primeira vez em 2002 pelo estudante de doutorado Peter Boncz e o professor Martin L. Kersten como parte do projeto de pesquisa MAGNUM dos anos 1990 na Universidade de Amsterdã . Foi inicialmente chamado simplesmente de Monet, em homenagem ao pintor impressionista francês Claude Monet . A primeira versão sob uma licença de software de código aberto (uma versão modificada da Licença Pública Mozilla ) foi lançada em 30 de setembro de 2004. Quando a versão 4 do MonetDB foi lançada no domínio de código aberto, muitas extensões à base de código foram adicionadas por a equipe MonetDB / CWI, incluindo um novo front-end SQL, com suporte ao padrão SQL: 2003 .

O MonetDB introduziu inovações em todas as camadas do DBMS : um modelo de armazenamento baseado em fragmentação vertical, uma arquitetura de execução de consulta ajustada por CPU moderna que frequentemente deu ao MonetDB uma vantagem de velocidade sobre o mesmo algoritmo em relação a um RDBMS baseado em intérprete típico . Foi um dos primeiros sistemas de banco de dados a ajustar a otimização de consulta para caches de CPU . MonetDB inclui índices automáticos e de autoajuste, otimização de consulta em tempo de execução e uma arquitetura de software modular.

Em 2008, um projeto subsequente chamado X100 (MonetDB / X100) foi iniciado, que evoluiu para a tecnologia VectorWise . VectorWise foi adquirido pela Actian Corporation , integrado com o banco de dados Ingres e vendido como um produto comercial.

Em 2011, um grande esforço para renovar a base de código do MonetDB foi iniciado. Como parte disso, o código para o kernel MonetDB 4 e seus componentes XQuery foram congelados. No MonetDB 5, partes da camada SQL foram inseridas no kernel. As alterações resultantes criaram uma diferença nas APIs internas , à medida que fazia a transição de MonetDB Instruction Language (MIL) para MonetDB Assembly Language (MAL). Interfaces de consulta de nível superior mais antigas e sem manutenção também foram removidas. Primeiro foi o XQuery , que dependia do MonetDB 4 e nunca foi portado para a versão 5. O suporte da interface experimental Jaql foi removido com o lançamento de outubro de 2014. Com o lançamento de julho de 2015, o MonetDB ganhou suporte para fragmentação de dados somente leitura e índices persistentes. Neste lançamento, o obsoleto módulo de dados de streaming DataCell também foi removido da base de código principal em um esforço para simplificar o código. Além disso, a licença foi alterada para a Licença Pública Mozilla, versão 2.0 .

Arquitetura

A arquitetura do MonetDB é representada em três camadas, cada uma com seu próprio conjunto de otimizadores. O front end é a camada superior, fornecendo interface de consulta para SQL , com interfaces SciQL e SPARQL em desenvolvimento. As consultas são analisadas em representações específicas de domínio, como álgebra relacional para SQL, e otimizadas. Os planos de execução lógica gerados são então traduzidos em instruções MonetDB Assembly Language (MAL), que são passadas para a próxima camada. A camada intermediária ou de back-end fornece vários otimizadores baseados em custos para o MAL. A camada inferior é o kernel do banco de dados, que fornece acesso aos dados armazenados em Binary Association Tables (BATs). Cada BAT é uma tabela que consiste em um identificador de objeto e colunas de valor, representando uma única coluna no banco de dados.

A representação de dados internos do MonetDB também depende das faixas de endereçamento de memória de CPUs contemporâneas usando paginação por demanda de arquivos mapeados de memória e, portanto, partindo de projetos de DBMS tradicionais que envolvem gerenciamento complexo de grandes armazenamentos de dados em memória limitada.

Reciclagem de consulta

A reciclagem de consulta é uma arquitetura para reutilizar os subprodutos do paradigma operador por vez em um DBMS de armazenamento de coluna. A reciclagem faz uso da ideia genérica de armazenar e reutilizar os resultados de cálculos caros. Ao contrário dos caches de instrução de baixo nível, a reciclagem de consulta usa um otimizador para pré-selecionar as instruções para armazenar em cache. A técnica foi projetada para melhorar os tempos de resposta da consulta e a taxa de transferência, enquanto trabalha de forma auto-organizada. Os autores do grupo CWI Database Architectures, composto por Milena Ivanova, Martin Kersten , Niels Nes e Romulo Goncalves, ganharam o "Best Paper Runner Up" na conferência ACM SIGMOD 2009 por seu trabalho em Query Recycling.

Quebra de banco de dados

MonetDB foi um dos primeiros bancos de dados a introduzir o cracking de banco de dados. O cracking de banco de dados é uma indexação parcial incremental e / ou classificação dos dados. Ele explora diretamente a natureza colunar do MonetDB. O cracking é uma técnica que transfere o custo de manutenção do índice de atualizações para processamento de consulta. Os otimizadores de pipeline de consulta são usados ​​para massagear os planos de consulta para quebrar e propagar essas informações. A técnica permite tempos de acesso melhorados e comportamento auto-organizado. O cracking de banco de dados recebeu o prêmio de melhor dissertação ACM SIGMOD 2011 J.Gray.

Componentes

Existem várias extensões para o MonetDB que estendem a funcionalidade do mecanismo de banco de dados. Devido à arquitetura de três camadas, as interfaces de consulta de nível superior podem se beneficiar das otimizações feitas nas camadas de back-end e kernel.

SQL

MonetDB / SQL é uma extensão de nível superior, que fornece suporte completo para transações em conformidade com o padrão SQL: 2003 .

GIS

MonetDB / GIS é uma extensão do MonetDB / SQL com suporte para o padrão Simple Features Access do Open Geospatial Consortium (OGC).

SciQL

SciQL, uma linguagem de consulta baseada em SQL para aplicativos científicos com arrays como cidadãos de primeira classe. O SciQL permite que o MonetDB funcione efetivamente como um banco de dados de array . SciQL é usada na União Europeia PlanetData e teleios projeto, junto com a tecnologia Data Vault, oferecendo acesso transparente a grandes repositórios de dados científicos. O Data Vaults mapeia os dados dos repositórios distribuídos para os arrays SciQL, permitindo um manuseio aprimorado de dados espaço-temporais no MonetDB. O SciQL será estendido para o Projeto Cérebro Humano .

Data Vaults

O Data Vault é um repositório de arquivos externo anexado ao banco de dados para MonetDB, semelhante ao padrão SQL / MED . A tecnologia Data Vault permite a integração transparente com repositórios de arquivos distribuídos / remotos. Ele é projetado para exploração e mineração de dados científicos , especificamente para dados de sensoriamento remoto . Há suporte para os formatos GeoTIFF ( observação da Terra ), FITS ( astronomia ), MiniSEED ( sismologia ) e NetCDF . Os dados são armazenados no repositório de arquivos no formato original e carregados no banco de dados de forma preguiçosa , apenas quando necessário. O sistema também pode processar os dados na ingestão, se o formato dos dados exigir. Como resultado, mesmo repositórios de arquivos muito grandes podem ser analisados ​​com eficiência, já que apenas os dados necessários são processados ​​no banco de dados. Os dados podem ser acessados ​​por meio das interfaces MonetDB SQL ou SciQL. A tecnologia Data Vault foi usado na União Europeia 's teleios projeto, que visava a construção de um observatório virtual para os dados de observação da Terra. Dados Vaults para arquivos FITS também foram usados ​​para processar dados de pesquisa astronômica para o INT Photometric H-Alpha Survey (IPHAS)

SAM / BAM

MonetDB tem um módulo SAM / BAM para processamento eficiente de dados de alinhamento de sequência . Voltado para pesquisas de bioinformática , o módulo possui um carregador de dados SAM / BAM e um conjunto de UDFs SQL para trabalhar com dados de DNA . O módulo usa a popular biblioteca SAMtools .

RDF / SPARQL

MonetDB / RDF é uma extensão baseada em SPARQL para trabalhar com dados vinculados, que adiciona suporte para RDF e permite que o MonetDB funcione como um triplestore . Em desenvolvimento para o projeto Linked Open Data 2 .

Integração R

O módulo MonetDB / R permite que UDFs escritos em R sejam executados na camada SQL do sistema. Isso é feito usando o suporte nativo R para rodar embutido em outro aplicativo, neste caso dentro do RDBMS. Anteriormente, o conector MonetDB.R permitia o uso de fontes de dados MonetDB e processá-los em uma sessão R. O novo recurso de integração R do MonetDB não requer que os dados sejam transferidos entre o RDBMS e a sessão R, reduzindo a sobrecarga e melhorando o desempenho. O recurso destina-se a fornecer aos usuários acesso às funções do software estatístico R para análise em linha de dados armazenados no RDBMS. Ele complementa o suporte existente para C UDFs e deve ser usado para processamento no banco de dados .

Integração Python

Da mesma forma que as UDFs R incorporadas no MonetDB, o banco de dados agora tem suporte para UDFs gravadas em Python / NumPy . A implementação usa arrays Numpy (eles próprios wrappers Python para arrays C), como resultado, há sobrecarga limitada - fornecendo uma integração Python funcional com correspondência de velocidade com funções SQL nativas. As funções Python incorporadas também suportam operações mapeadas, permitindo ao usuário executar funções Python em paralelo dentro de consultas SQL. O lado prático do recurso dá aos usuários acesso às bibliotecas Python / NumPy / SciPy , que podem fornecer uma grande seleção de funções estatísticas / analíticas.

MonetDBLite

Após o lançamento do driver remoto para R ( MonetDB.R ) e R UDFs no MonetDB (MonetDB / R), os autores criaram uma versão embutida do MonetDB em R chamada MonetDBLite . É distribuído como um pacote R, eliminando a necessidade de gerenciar um servidor de banco de dados, necessário para as integrações R anteriores. O DBMS é executado dentro do próprio processo R, eliminando a comunicação de soquete e a sobrecarga de serialização - melhorando muito a eficiência. A ideia por trás disso é entregar um pacote semelhante ao SQLite para R, com o desempenho de um armazenamento colunar otimizado na memória.

Extensões anteriores

Várias extensões anteriores foram descontinuadas e removidas da base de código estável ao longo do tempo. Alguns exemplos notáveis ​​incluem uma extensão XQuery removida no MonetDB versão 5; uma extensão JAQL e uma extensão de dados de streaming chamada Data Cell .

Veja também

Referências

Bibliografia

  • Boncz, Peter; Manegold, Stefan; Kersten, Martin (1999). Arquitetura de banco de dados otimizada para o novo gargalo: Acesso à memória . Proceedings of International Conference on Very Large Data Bases . pp. 54–65.
  • Schmidt, Albrecht; Kersten, Martin; Windhouwer, Menzo; Waas, Florian (2001). “Armazenamento relacional eficiente e recuperação de documentos XML” . A World Wide Web e os bancos de dados . Notas de aula em Ciência da Computação. Springer. 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). Quebra de banco de dados . Processos do CIDR .
  • Boncz, Peter A; Kersten, Martin L; Manegold, Stefan (2008). "Quebrando a parede da memória no MonetDB" . Comunicações da ACM . ACM. 51 (12): 77–85. doi : 10.1145 / 1409360.1409380 . S2CID  5633935 .
  • Sidirourgos, Lefteris; Gonçalves, Romulo; Kersten, Martin; Nes, Niels; Manegold, Stefan (2008). "Suporte de armazenamento de coluna para gerenciamento de dados RDF: nem todos os cisnes são brancos". Proceedings of the VLDB Endowment . 1 (2): 1553–1563. doi : 10.14778 / 1454159.1454227 .
  • Ivanova, Milena G .; Kersten, Martin L .; Nes, Niels J .; Gonçalves, Romulo AP (2009). "Uma Arquitetura para Reciclagem de Intermediários em um Armazém de Colunas". Proceedings of the 2009 ACM SIGMOD International Conference on Management of Data . SIGMOD '09. ACM. pp. 309–320. doi : 10.1145 / 1559845.1559879 . ISBN 978-1-60558-551-2.
  • Manegold, Stefan; Boncz, Peter A .; Kersten, Martin L. (dezembro de 2000). "Otimizando a arquitetura de banco de dados para o novo gargalo: acesso à memória" . The VLDB Journal . 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; Gonçalves, Romulo AP (2010). "Uma arquitetura para reciclar intermediários em um depósito de colunas" . Transações ACM em sistemas de banco de dados . ACM. 35 (4): 24. doi : 10.1145 / 1862919.1862921 . S2CID  52811192 .
  • Gonçalves, Romulo & Kersten, Martin (2011). "O esquema de processamento da consulta do ciclotron de dados" . Transações ACM em sistemas de banco de dados . ACM. 36 (4): 27. doi : 10.1145 / 2043652.2043660 .
  • Kersten, Martin L; Idreos, Stratos; Manegold, Stefan; Liarou, Erietta (2011). "O guia do pesquisador para o dilúvio de dados: Consultando um banco de dados científico em apenas alguns segundos". Desafios e visões do PVLDB .
  • Kersten, M; Zhang, Ying; Ivanova, Milena; Nes, Niels (2011). "SciQL, uma linguagem de consulta para aplicações científicas". Proceedings of the EDBT / ICDT 2011 Workshop on Array Databases . ACM. pp. 1–12.
  • Sidirourgos, Lefteris; Kersten, Martin; Boncz, Peter (2011). "SciBORQ: Gerenciamento de dados científicos com Bounds On Runtime and Quality". Creative Commons. Citar diário requer |journal=( ajuda )
  • Liarou, Erietta; Idreos, Stratos; Manegold, Stefan; Kersten, Martin (2012). "MonetDB / DataCell: análises online em uma loja de colunas de streaming" . Proceedings of the VLDB Endowment . 5 (12): 1910–1913. doi : 10.14778 / 2367502.2367535 . S2CID  545154 .
  • Ivanova, Milena; Kersten, Martin; Manegold, Stefan (2012). "Cofre de dados: uma simbiose entre tecnologia de banco de dados e repositórios de arquivos científicos". Gerenciamento de banco de dados científico e estatístico . SSDBM 2012. Springer Berlin Heidelberg. pp. 485–494.
  • Kargin, Yagiz; Ivanova, Milena; Zhang, Ying; Manegold, Stefan; Kersten, Martin (agosto de 2013). "Lazy ETL em ação: dados científicos sobre datas de tecnologia ETL". Proceedings of the VLDB Endowment . 6 (12). pp. 1286–1289. doi : 10.14778 / 2536274.2536297 . ISSN  2150-8097 .
  • Sidirourgos, Lefteris & Kersten, Martin (2013). "Impressões de coluna: uma estrutura de índice secundária". Anais da conferência internacional de 2013 sobre gestão de dados . ACM. pp. 893–904.
  • Ivanova, Milena; Kargin, Yagiz; Kersten, Martin; Manegold, Stefan; Zhang, Ying; Datcu, Mihai; Molina, Daniela Espinoza (2013). "Data Vaults: A Database Welcome to Scientific File Repositories". Anais da 25ª Conferência Internacional sobre Gerenciamento de Banco de Dados Científico e Estatístico . SSDBM. ACM. doi : 10.1145 / 2484838.2484876 . ISBN 978-1-4503-1921-8.

links externos

Este artigo é baseado em material retirado do Dicionário Online Gratuito de Computação anterior a 1 de novembro de 2008 e incorporado sob os termos de "relicenciamento" do GFDL , versão 1.3 ou posterior.