Tratamento avançado de tabelas no Cassandra

Índice
Em tutoriais anteriores, entramos totalmente com CQL e a maneira como nos ajuda a gerenciar Cassandra, vimos as operações básicas para o espaços-chave e as tabelas no Cassandra, poderíamos aplicá-las para criar uma estrutura inicial no Banco de Dados, porém há uma quantidade considerável de conceitos avançados que precisamos saber para obter o máximo do Cassandra.
Estes conceitos ou características para os chamar de alguma forma, permitem-nos alcançar diferentes funcionalidades nas nossas tabelas, dando-nos um leque de possibilidades muito maior do que as restantes. Banco de dados NoSQL.
Anteriormente, criamos algumas tabelas e usamos valores como texto ou data para nossas colunas, mas isso não é tudo CQL tem disponível, vamos ver os tipos de dados que temos para nossas operações:
asciiCadeia de caracteres US-ASCII.
bigintUm valor inteiro longo de 64 bits.
bolhaTipo de dados expresso como hexadecimal no console de comando do CQLAlém disso, não tem validação e é baseado em bytes arbitrários.
boleanoO tipo de dados booleano clássico em que seus valores podem ser verdadeiros ou falsos.
contadorcounter é um novo tipo de dado para quem vem do mundo relacional e indica que é distribuído em 64 bits.
decimalOutro tipo de dado que podemos reconhecer, o que nos dá precisão decimal para nossas informações.
DuploTipo de dados de ponto flutuante, mas baseado em 64 bits.
flutuadorComo o anterior, é um tipo de dados de ponto flutuante, mas baseado em 32 bits.
inetEste tipo é bastante particular e muito útil ao mesmo tempo e nos permite armazenar uma string de caracteres de um endereço IP, ele suporta tanto o formato IPV4 O que IPV6.
intO tipo de dados inteiro clássico que oferece suporte a números de até 32 bits.
ListaOutro tipo de dado que faz sua estreia no Cassandra e nos permite armazenar uma coleção ordenada de elementos.
mapaComo a lista, é outro tipo de novo dado e nos permite armazenar um array associativo, o que é muito útil para o desenvolvimento de aplicativos.
definirSemelhante ao tipo de dados de lista, ele armazena uma coleção de itens, mas sem uma ordem específica.
textoArmazena uma sequência de caracteres codificados.
carimbo de data / horaTipo de dados que armazena data e hora, codificado como um número inteiro de 8 bytes.
VarintTipo de dados de precisão para inteiros arbitrários.
Como podemos ver, existem muitos tipos de dados que podemos reconhecer se viermos do mundo relacional, como outros que veremos pela primeira vez e que fazem Cassandra destaca-se acima de outras bases de dados.
Em Cassandra não temos apenas tipos de dados para nossas tabelas, graças a CQL Podemos atribuir às tabelas dentro de nossas propriedades de banco de dados que nos ajudam enormemente nas tarefas de manutenção e desenvolvimento, vamos ver o que temos disponível.
CacheEsta propriedade nos dá a otimização da memória cache. Os níveis disponíveis para esta propriedade são ou todos, keys_only ou apenas chaves, row_only ou apenas linhas e Nenhum ou nenhum. Todas as opções são bastante úteis, no entanto row_only deve ser usado com cuidado como Cassandra colocar uma quantidade considerável de dados na memória quando essa opção for usada.
ComenteUma opção que está presente no modelo relacional e é usada por administradores ou desenvolvedores para fazer anotações e destacar detalhes importantes nas tabelas.
CompactaçãoEsta propriedade permite definir a estratégia de gerenciamento do hortelã, podem ser dos seguintes tipos: O primeiro SizeTiered que é acionado quando a tabela ultrapassa um limite, a vantagem de usar esta estratégia é que ela não prejudica o desempenho de gravação, no entanto, tem a desvantagem de que ocasionalmente usa o dobro do tamanho dos dados no disco, resultando em desempenho ruim lendo. A segunda estratégia é LeveledCompaction e funciona em níveis diferentes ao longo do tempo, juntando tabelas com outras mais longas, resultando em um desempenho de leitura muito bom.
CompressãoEsta propriedade determina como as informações serão compactadas. Podemos selecionar para obter benefícios em velocidade ou espaço, onde quanto maior a velocidade, menos espaço em disco é economizado.
Gc_grace_secondsEsta propriedade define o tempo de espera para remover as informações das marcas para exclusão. Por padrão, são 10 dias.
Populate_io_cache_on_flushEsta propriedade está desabilitada por padrão e só devemos ativá-la se desejarmos que todas as informações caibam na memória cache.
Read_repair_chanceUma propriedade muito interessante que indica um número entre 0 e 1,0 especificando a probabilidade de reparar a informação quando o quorum não é atingido. O valor padrão é 0,1.
Replicate_on_writeEsta propriedade se aplica apenas a tabelas do tipo contador. Quando definidas, as réplicas gravam em todas as réplicas afetadas, ignorando o nível de consistência especificado.
Já sabemos o que temos, tanto no nível dos tipos de dados quanto das propriedades, é hora de aplicar algumas das coisas aprendidas em nossas tabelas em Cassandra.
Primeiro, vamos criar uma tabela simples à qual aplicaremos a propriedade comments, vamos ver a sintaxe que usaremos para ela:
 CRIAR TABELA artigos (título do texto, conteúdo do texto, categoria do texto, CHAVE PRIMÁRIA (título)) COM comentário = 'Tabela para armazenar informações do artigo';
Abrimos nosso console de comando CQL e criamos nossa tabela com a propriedade mencionada, vamos ver como fica:

Como já sabemos, o console de comando não retorna nada, exceto que não há erro, mas se quisermos ver essas alterações, podemos ir para o nosso OpsCenter e verifique se tudo correu corretamente:

PROLONGAR

Como podemos ver, podemos ver nosso comentário e outras propriedades com seus valores padrão. É importante mencionar que a definição das demais propriedades em Cassandra é bastante simples, como pudemos ver no exemplo anterior, usando a sintaxe COM podemos fazer isso sem nenhum problema.
Vamos realizar outro exemplo onde vamos definir as propriedades compressão Y compactação mas para isso é importante saber que eles possuem uma série de subopções para seu uso, vamos ver por compressão que devemos saber:
Sstable_compressionEsta opção especifica o algoritmo de compressão a ser usado, seus valores são: LY4Compressor, SnappyCompressor, Y DeflateCompressor.
Chunck_length_kbAs tabelas são compactadas por blocos. Valores mais longos geralmente fornecem melhor compactação, mas aumentam o tamanho das informações a serem lidas. Por padrão, essa opção é definida para 64 kb.
Manipular as opções de compressão pode levar a um aumento significativo de desempenho, incluindo muitas implementações de Cassandra Eles estão com esses valores padrão, mas para perfeição é necessário usar esses valores. Vamos ver agora o que devemos saber para compactação:
HabilitadoDetermina se a propriedade será executada na tabela, embora por padrão todas as propriedades tenham compactação ativado.
AulaAqui vamos definir o tipo de estratégia para lidar com as tabelas.
min_thresholdEste valor está disponível com a estratégia SizeTiered y representa o número mínimo de tabelas necessárias para iniciar um processo de compactação. É definido por padrão em 4.
max_thresholdDisponível da mesma forma na estratégia SizeTiered y define o número máximo de tabelas processadas no compacto. Ele é definido por padrão em 32.
Essas são algumas das opções mais importantes para essas propriedades, o que é importante mencionar é que para a definição dessas opções devemos usar uma sintaxe JSON Para ser válido, vamos ver um exemplo da inclusão dessas duas propriedades:
 CRIAR TABELA table_for_properties (int id, nome do texto, propriedade do texto, número varint, PRIMARY KEY (id)) WITHcompression = {'sstable_compression': 'DeflateCompressor', 'chunk_length_kb': 64} ANDcompaction = {'class': 'SizeTieredCompactionStrategy', 'min_threshold': 6};
Como podemos ver, alteramos o tipo de compressão e definimos o tamanho para ela, adicionalmente para compactação deixamos a estratégia usual com o valor aula e nós definimos o min_threshold como 6 aumentou o valor padrão assim, para terminar, vamos ver como fica quando o executamos em nosso console de comando:

No último tutorial, pudemos ver que, como resultado da definição de mais de uma chave primária, elas são criadas como chaves de cluster e diga-nos o caminho Cassandra ordena as informações, por padrão a ordem é definida em ordem crescente e fazer uma consulta em ordem decrescente pode causar problemas de desempenho, porém o Cassandra tem uma solução para qualquer problema e está com a frase CLUSTERING ***** BY. Vamos ver como usá-lo.
 CRIAR TABELA usuários_pedidos (texto do usuário, data e hora, folga salarial, texto do departamento, texto do supervisor, CHAVE PRIMÁRIA (usuário, data)) COM CLUSTERING ***** BY (data DESC);
Vamos executar nossa sintaxe no console de comando e ver como fica:

Como pudemos ver, foi muito fácil resolver esse problema com apenas uma linha simples, mas o mais importante, fomos capazes de estender nosso conhecimento quando se trata de lidar com tabelas em Cassandra, com o qual concluímos este tutorial, onde cobrimos tudo o que precisamos saber para a criação de tabela ideal em Cassandra.
wave wave wave wave wave