Já faz um tempo que trabalho com armazenamento.
Estou intrigado com os Bancos de Dados Colunares e a velocidade que eles oferecem para recuperação de dados.
Tenho várias perguntas:
- Como funcionam os bancos de dados colunares?
- Como eles diferem dos bancos de dados relacionais?
Respostas:
Como funcionam os bancos de dados colunares?
Banco de dados colunar é um conceito, em vez de uma arquitetura / implementação particular. Em outras palavras, não existe uma descrição particular de como esses bancos de dados funcionam; na verdade, vários são construídos sobre o SGBD tradicional, orientado por linha, simplesmente armazenando as informações em tabelas com uma (ou melhor, duas) colunas (e adicionando a camada necessária para acessar os dados colunares de maneira fácil).
Como eles diferem dos bancos de dados relacionais? Eles geralmente diferem dos bancos de dados tradicionais (orientados a linhas) no que diz respeito a ...
... em casos de uso específicos de DBMSes .
Em particular, eles oferecem vantagens nas áreas mencionadas quando o uso típico é calcular valores agregados em um número limitado de colunas, em oposição a tentar recuperar todas / a maioria das colunas de uma determinada entidade.
Existe uma versão de teste de um banco de dados colunar que eu possa instalar para brincar? (Estou no Windows 7) Sim, existem implementações comerciais, gratuitas e também de código aberto de bancos de dados colunares. Veja a lista no final do artigo da Wikipedia para iniciantes.
Esteja ciente de que várias dessas implementações foram introduzidas para atender a uma necessidade específica (digamos, pegada muito pequena, distribuição de dados altamente compactável ou emulação de matriz sobressalente, etc.) em vez de fornecer um DBMS orientado a coluna de propósito geral per-se.
Nota: A observação sobre a "orientação de propósito único" de vários SGBDs colunares não é uma crítica dessas implementações, mas sim uma indicação adicional de que tal abordagem para SGBDs se desvia da abordagem mais "natural" (e certamente mais amplamente usada) para armazenar entidades de registro. Como resultado, esta abordagem é usada quando a abordagem orientada por linha não é satisfatória e, portanto, tende a
a) ser direcionada para um propósito específico b) receber menos recursos / interesse do que o trabalho em "Propósito Geral", "Testado e Testado ", abordagem tabular.
Tentativamente, o modelo de dados Entity-Attribute-Value (EAV) pode ser uma estratégia de armazenamento alternativa que você pode querer considerar. Embora distinto do modelo de banco de dados colunar "puro", o EAV compartilha várias das características dos bancos de dados colunares.
fonte
Como funcionam os bancos de dados colunares? O conceito de definição de um armazenamento de coluna é que os valores de uma tabela são armazenados contiguamente por coluna. Assim, a tabela de fornecedores clássica do banco de dados de fornecedores e peças de CJ Date:
seria armazenado no disco ou na memória algo como:
Isso está em contraste com um rowstore tradicional, que armazenaria os dados mais como este:
Deste conceito simples fluem todas as diferenças fundamentais no desempenho, para melhor ou pior, entre um armazenamento de coluna e um armazenamento de linha. Por exemplo, um armazenamento de coluna será excelente em fazer agregações como totais e médias, mas inserir uma única linha pode ser caro, enquanto o inverso é verdadeiro para armazenamentos de linha. Isso deve ser aparente no diagrama acima.
Como eles diferem dos bancos de dados relacionais? Um banco de dados de relacionamento é um conceito lógico. Um banco de dados colunar, ou armazenamento de coluna, é um conceito físico. Assim, os dois termos não são comparáveis de nenhuma maneira significativa. DMBSs orientados a coluna podem ser relacionais ou não, assim como os SGBDs orientados a linhas podem aderir mais ou menos aos princípios relacionais.
fonte
Eu diria que o melhor candidato para entender sobre bancos de dados orientados a colunas é verificar o HBase ( Apache Hbase ). Você pode verificar o código e explorar mais para descobrir sobre a implementação.
fonte
Além disso, os bancos de dados colunares têm uma afinidade interna para compactação de dados e o processo de carregamento é único. Aqui está um artigo que escrevi em 2008 que explica um pouco mais.
Você também pode estar interessado em um novo relatório de Carl Olofson da IDC sobre a tecnologia DBMS de 3ª geração. Ele discute colunar, et al. Se você não é um cliente IDC, pode obtê-lo gratuitamente em nosso site. Ele fará um webinar em 16 de junho também (também em nosso site).
(Aliás, um comentário acima lista asterdados, mas não acho que sejam colunares.)
fonte
Para entender o que é banco de dados orientado a colunas, é melhor contrastá-lo com o banco de dados orientado a linhas.
Bancos de dados orientados a linhas (por exemplo, MS SQL Server e SQLite) são projetados para retornar dados de maneira eficiente para uma linha inteira. Isso é feito armazenando todos os valores das colunas de uma linha juntos. Os bancos de dados orientados a linhas são adequados para sistemas OLTP (por exemplo, vendas no varejo e sistemas de transações financeiras).
Os bancos de dados orientados a colunas são projetados para retornar dados de maneira eficiente para um número limitado de colunas. Isso é feito armazenando todos os valores de uma coluna juntos. Dois bancos de dados orientados a colunas amplamente usados são Apache Hbase e Google BigTable (usado pelo Google para Search, Analytics, Maps e Gmail). Eles são adequados para os projetos de big data. Um banco de dados orientado a colunas se sobressairá em operações de leitura em um número limitado de colunas; no entanto, a operação de gravação será cara em comparação com bancos de dados orientados a linhas.
Para mais informações: https://en.wikipedia.org/wiki/Column-oriented_DBMS
fonte
Informação do produto. Isso pode ajudar. Tratava-se de produtos apresentados em uma pesquisa do Google.
http://www.vertica.com/
http://www.paraccel.com/
http://www.asterdata.com/index.php
fonte
kx é outro banco de dados colunar, por exemplo usado no setor financeiro. A licença é algo em torno de $ 50K da última vez que verifiquei, no entanto. Sem otimização necessária, nenhum índice necessário, porque kx tem operadores poderosos (equivalentes Matlab:
.*
,kron
,bsxfun
, ...).fonte