BANCOS DE DADOS NOSQL COLUNARES – INTRODUÇÃO

Os bancos de dados NoSQL colunares otimizam o armazenamento e a análise de grandes volumes de dados, melhorando a performance e escalabilidade.

Por
5 min. de leitura

Os bancos de dados NoSQL colunares são projetados para armazenar e gerenciar grandes volumes de dados distribuídos em clusters de servidores. Diferente dos bancos de dados relacionais que utilizam linhas e colunas, os bancos colunares armazenam dados por colunas. Isso oferece vantagens significativas em termos de performance para operações de leitura em larga escala e análises de dados.

Um banco de dados colunar organiza os dados em famílias de colunas, onde cada família agrupa colunas relacionadas. Ao armazenar dados por coluna, as consultas que necessitam de apenas algumas colunas podem ser executadas muito mais rapidamente, pois apenas os dados relevantes são lidos do disco. Essa abordagem resulta em economias significativas de I/O e melhora o desempenho de consultas analíticas.

Os bancos de dados colunares são ideais para cenários onde são necessárias análises em tempo real e consultas agregadas. Eles são amplamente utilizados em aplicações de data warehousing, business intelligence e big data, onde grandes volumes de dados precisam ser processados rapidamente para obter insights.

Entre os bancos de dados NoSQL colunares mais populares estão Apache Cassandra, HBase e Google Bigtable. 

O Apache Cassandra, por exemplo, é conhecido por sua escalabilidade e alta disponibilidade, utilizando uma arquitetura descentralizada que evita pontos únicos de falha. 

O HBase, que é baseado no modelo de Bigtable do Google, integra-se bem com o ecossistema Hadoop, facilitando o processamento e análise de grandes conjuntos de dados.

Ao usar bancos de dados colunares, é importante entender o modelo de dados e projetar esquemas que aproveitem ao máximo a estrutura de colunas. Isso envolve definir famílias de colunas que agrupem colunas frequentemente acessadas juntas, otimizando assim as consultas.

Em termos de armazenamento, os bancos colunares utilizam técnicas de compressão de dados eficientes, reduzindo o espaço de armazenamento necessário e melhorando ainda mais o desempenho de leitura. Essa compressão é possível porque os dados em uma coluna são geralmente do mesmo tipo e têm valores repetidos, o que permite uma compactação mais eficaz.

Além disso, os bancos de dados colunares suportam operações de leitura paralela, aproveitando ao máximo os recursos de hardware disponíveis. Isso os torna particularmente eficientes para cargas de trabalho que envolvem grandes volumes de leitura e análise de dados.

A imagem a seguir ilustra um exemplo de como os dados são organizados em um banco de dados colunar NoSQL.

Imagem 1 – Apresentação de um modelo genérico de organização de dados em um banco de dados orientado a colunas

Interface gráfica do usuário, Aplicativo

Descrição gerada automaticamente

Fonte: https://excelity.io/apache-cassandra-nosql-database/  

Este tipo de banco de dados é projetado para armazenar e gerenciar dados de maneira eficiente, agrupando-os por colunas em vez de linhas. Vamos analisar as características mostradas na imagem:

  1. Organização por Famílias de Colunas: A estrutura mostrada na imagem é dividida em “famílias de colunas”. Por exemplo, temos três famílias de colunas principais: “name”, “address”, e “website”. Cada família de colunas agrupa informações relacionadas, o que pode melhorar significativamente o desempenho das consultas que acessam somente dados específicos dentro de uma mesma família.
  2. Super Coluna Família: Algumas implementações de bancos de dados colunares utilizam o conceito de “super coluna família”, que é um agrupamento ainda maior, como “company” na imagem. Isso permite uma organização lógica que facilita o acesso a conjuntos relacionados de dados, onde cada super família pode conter múltiplas famílias de colunas menores.
  3. Chave de Linha (Row Key): Cada registro (ou linha) em um banco de dados colunar é identificado por uma chave de linha única. Na imagem, as chaves de linha são “1” para a DataX e “2” para a Process-One. Essas chaves permitem acesso rápido a todas as colunas associadas a uma determinada linha.
  4. Escalabilidade Horizontal: Como cada coluna é armazenada independentemente, é mais fácil distribuir os dados em vários servidores. Isso é visível na forma como as diferentes colunas podem ser facilmente segmentadas e gerenciadas independentemente umas das outras, o que permite que o banco de dados escale horizontalmente adicionando mais servidores para manejar mais colunas ou mais dados dentro de cada coluna.
  5. Flexibilidade de Esquema: Em bancos de dados colunares, é fácil adicionar novas colunas em famílias de colunas existentes sem perturbar o restante dos dados. Por exemplo, adicionar uma nova coluna de “zipcode” à família de colunas “address” não requer modificação das linhas existentes que não possuem essa nova coluna.
  6. Otimização para Leituras e Análises: A organização por colunas é ideal para realizar operações de leitura e análise em grandes volumes de dados, pois operações como agregações (soma, média) são mais rápidas quando os dados necessários estão armazenados juntos, como é o caso das colunas em um banco de dados colunar.

Os bancos de dados colunares têm uma história rica que remonta aos anos 90, quando a necessidade de gerenciar e analisar grandes volumes de dados de forma eficiente começou a crescer. 

O conceito de bancos de dados colunares surgiu com o desenvolvimento do Sybase IQ no início dos anos 90. Sybase IQ foi um dos primeiros sistemas a adotar a abordagem de armazenamento em colunas, visando melhorar o desempenho de consultas analíticas. No entanto, a verdadeira popularização dos bancos de dados colunares ocorreu com a publicação do artigo “Bigtable: A Distributed Storage System for Structured Data” pelo Google em 2006. 

Bigtable foi projetado para escalar e gerenciar petabytes de dados distribuídos por milhares de servidores. Ele não só solucionou os desafios de armazenamento do Google, mas também inspirou a criação de outros sistemas colunares.

Para finalizar essa introdução, uma questão de concurso:

Prova: CESPE / CEBRASPE – 2023 – EMPREL – Analista de Infraestrutura e Suporte – Especialidade: Banco de Dados

Com relação ao banco de dados NoSQL orientado a colunas, assinale a opção correta.

A As operações de leitura são atômicas, enquanto as de escrita não são atômicas. 

B O banco de dados NoSQL orientado a colunas garante alta disponibilidade. 

C Diferentemente do modelo relacional, um banco de dados NoSQL não permite agrupar colunas que armazenam o mesmo tipo de dados.

D Diferentemente dos outros tipos de banco de dados NoSQL, o orientado a colunas não permite particionamento dos dados.

E Nesse banco de dados, os dados são indexados por uma tripla (linha, coluna 

Analisando as alternativas:

Alternativa A: “As operações de leitura são atômicas, enquanto as de escrita não são atômicas.”

Comentário: Esta afirmação é incorreta. Em bancos de dados NoSQL orientados a colunas, tanto as operações de leitura quanto as de escrita podem ser atômicas, dependendo da implementação e das garantias oferecidas pelo banco. Em geral, esses bancos oferecem garantias de atomicidade para leituras e escritas em uma única célula (linha, coluna, timestamp). Um exemplo é o HBase, que garante atomicidade em nível de linha, mas não em nível de transações distribuídas complexas. A atomicidade em sistemas distribuídos depende do modelo de consistência adotado (eventual ou forte).

Alternativa B: “O banco de dados NoSQL orientado a colunas garante alta disponibilidade.”

Comentário: Esta afirmação é incorreta. Bancos de dados NoSQL orientados a colunas, como o Apache Cassandra, são projetados para garantir alta disponibilidade em cenários distribuídos. Isso é alcançado por meio de replicação de dados em vários nós do sistema, o que possibilita a continuidade de operações mesmo quando ocorrem falhas em alguns nós. No entanto, a garantia de alta disponibilidade deve ser vista em conjunto com o modelo CAP (Consistência, Disponibilidade e Tolerância a Partições), onde, geralmente, há um trade-off entre consistência e disponibilidade.

Alternativa C: “Diferentemente do modelo relacional, um banco de dados NoSQL não permite agrupar colunas que armazenam o mesmo tipo de dados.”

Comentário: Esta afirmação é incorreta. Em bancos de dados orientados a colunas, como o HBase ou Cassandra, é possível agrupar colunas relacionadas em “famílias de colunas”. Uma família de colunas pode conter múltiplas colunas que armazenam dados do mesmo tipo ou dados relacionados de uma forma lógica. Portanto, essa característica é diferente da estrutura fixa de colunas do modelo relacional, mas permite o agrupamento de colunas que armazenam o mesmo tipo de dados ou informações relacionadas.

Alternativa D: “Diferentemente dos outros tipos de banco de dados NoSQL, o orientado a colunas não permite particionamento dos dados.”

Comentário: Esta afirmação é incorreta. Bancos de dados NoSQL orientados a colunas frequentemente permitem o particionamento dos dados. Na verdade, eles foram projetados para trabalhar com particionamento (também chamado de sharding) para melhorar a escalabilidade e o desempenho. Por exemplo, no Apache Cassandra, os dados são distribuídos em vários nós com base em uma chave de particionamento, o que permite uma distribuição eficiente dos dados em grandes clusters.

Alternativa E: “Nesse banco de dados, os dados são indexados por uma tripla (linha, coluna e timestamp).”

Comentário: Esta afirmação é correta. Em bancos de dados orientados a colunas, como o HBase, os dados são armazenados e indexados com base em uma combinação de linha, coluna e timestamp. O timestamp é usado para gerenciar múltiplas versões de dados. Dessa forma, o banco consegue armazenar várias versões de um dado em uma célula e, através do timestamp, determinar a versão mais recente ou realizar a recuperação de versões anteriores de um dado.


Quer ficar por dentro dos concursos públicos abertos e previstos pelo Brasil?
Clique nos links abaixo:

Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:

Por
5 min. de leitura