SGBD Apache Cassandra 4.0 disponível

A Apache Software Foundation apresentou o lançamento do DBMS distribuído Apache Cassandra 4.0, que pertence à classe de sistemas noSQL e é projetado para criar armazenamento altamente escalável e confiável de grandes quantidades de dados armazenados na forma de um array associativo (hash). A versão Cassandra 4.0 é considerada pronta para implementação em produção e já foi testada nas infraestruturas da Amazon, Apple, DataStax, Instaclustr, iland e Netflix com clusters de mais de 1000 nós. O código do projeto é escrito em Java e distribuído sob a licença Apache 2.0.

O SGBD Cassandra foi originalmente desenvolvido pelo Facebook e em 2009 transferido sob os auspícios da Fundação Apache. Soluções industriais baseadas em Cassandra foram implantadas para alimentar serviços de empresas como Apple, Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Huawei, Netflix, Sony, Rackspace, Reddit e Twitter. Por exemplo, a infraestrutura de armazenamento baseada em Apache Cassandra implantada pela Apple possui mais de mil clusters, incluindo 160 mil nós e armazenando mais de 100 petabytes de dados. A Huawei utiliza mais de 300 clusters Apache Cassandra, compreendendo 30 mil nós, e a Netflix utiliza mais de 100 clusters, cobrindo 10 mil nós e processando mais de um trilhão de solicitações por dia.

O Cassandra DBMS combina um sistema hash Dynamo totalmente distribuído, que fornece escalabilidade quase linear à medida que o volume de dados aumenta. Cassandra utiliza um modelo de armazenamento de dados baseado em uma família de colunas (ColumnFamily), que se diferencia de sistemas como o memcachedb, que armazenam dados apenas em uma cadeia chave/valor, pela capacidade de organizar o armazenamento de hashes com diversos níveis de aninhamento. Para simplificar a interação com o banco de dados, é suportada a linguagem de consulta estruturada CQL (Cassandra Query Language), que lembra SQL, mas com funcionalidade reduzida. Os recursos incluem suporte para namespaces e famílias de colunas e a criação de índices usando a expressão “CREATE INDEX”.

O SGBD permite criar armazenamento resistente a falhas: os dados colocados no banco de dados são replicados automaticamente para vários nós de uma rede distribuída, que pode abranger diferentes data centers. Quando um nó falha, suas funções são captadas instantaneamente por outros nós. A adição de novos nós ao cluster e a atualização da versão do Cassandra são feitas dinamicamente, sem intervenção manual adicional ou reconfiguração de outros nós. Drivers com suporte CQL são preparados para Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ e JavaScript (Node.js).

Principais inovações:

  • Melhor desempenho e escalabilidade. A eficiência da troca de dados no formato SSTable (Sorted Strings Table) entre nós foi melhorada. O protocolo de mensagens entre nós foi otimizado. A velocidade de transferência de fluxos de dados entre nós aumentou até 5 vezes (principalmente devido ao uso da técnica Zero Copy e à transferência de SSTables inteiras), e a taxa de transferência para operações de leitura e gravação aumentou para 25%. O processo de recuperação incremental foi otimizado. As latências devido à pausa na coleta de lixo são reduzidas para alguns milissegundos.
  • Adicionado suporte para um log de auditoria que permite rastrear operações de autenticação de usuário e todas as consultas CQL executadas.
  • Adicionada a capacidade de manter um log de solicitação binário completo, permitindo salvar todo o tráfego de solicitação e resposta. Para gerenciamento são propostos os comandos “nodetool enablefullquerylog|disablefullquerylog|resetfullquerylog” e é fornecido o utilitário fqltool para análise de logs. São fornecidos comandos para converter o log em um formato legível (Dump), comparar fatias de atividade (Compare) e reexecutar (Replay) para análise reproduzindo as condições inerentes à carga real.
  • Adicionado suporte para tabelas virtuais que refletem não dados armazenados em SSTables, mas saída de informações por meio da API (métricas de desempenho, informações de configurações, conteúdo de cache, informações sobre clientes conectados, etc.).
  • A eficiência do armazenamento de dados compactados foi melhorada, reduzindo o consumo de espaço em disco e melhorando o desempenho de leitura.
  • Os dados relacionados ao keyspace do sistema (system.*) agora são colocados no primeiro diretório por padrão, em vez de serem distribuídos por todos os diretórios de dados, o que permite que o nó permaneça operacional se um dos discos adicionais falhar.
  • Adicionado suporte experimental para replicação transitória e quóruns baratos. As réplicas temporárias não armazenam todos os dados e usam a restauração incremental para serem consistentes com as réplicas completas. Quóruns leves implementam otimização de gravação na qual nenhuma gravação é feita em réplicas temporárias até que um conjunto suficiente de réplicas completas esteja disponível.
  • Adicionado suporte experimental para Java 11.
  • Adicionada opção experimental para comparar todas as árvores Merkle. Por exemplo, habilitar a opção em um cluster de 3 nós em que duas réplicas são idênticas e uma é obsoleta resultará em uma atualização da réplica obsoleta usando apenas uma operação de cópia da réplica atual.
  • Adicionadas novas funções currentTimestamp, currentDate, currentTime e currentTimeUUID.
  • Adicionado suporte para operações aritméticas em consultas CQL.
  • É fornecida a capacidade de realizar operações aritméticas entre dados com os tipos “timestamp”/”data” e “duração”.
  • Adicionado um modo para visualizar fluxos de dados necessários para recuperação (nodetool repair —preview) e a capacidade de verificar a integridade dos dados que estão sendo restaurados (nodetool repair —validate).
  • Consultas SELECT agora têm a capacidade de processar elementos Map e Set.
  • Adicionado suporte para paralelizar o estágio inicial de construção de visualizações materializadas (cassandra.yaml:concurrent_materialized_view_builders).
  • O comando "nodetool cfstats" adicionou suporte para classificação por determinadas métricas e limitação do número de linhas exibidas.
  • As configurações são fornecidas para limitar a conexão do usuário apenas a determinados data centers.
  • Adicionada a capacidade de limitar a intensidade (limite de taxa) das operações de criação e limpeza de instantâneos.
  • cqlsh e cqlshlib agora suportam Python 3 (Python 2.7 ainda é compatível).
  • O suporte para a plataforma Windows foi descontinuado. Para executar o Cassandra no Windows, é recomendável utilizar ambientes Linux criados com base no subsistema WSL2 (Windows Subsystem for Linux 2) ou sistemas de virtualização.



Fonte: opennet.ru

Adicionar um comentário