Em PARTE INa seção "Indexação", abordamos as diferenças na indexação com índices locais e globais. Também concluímos com as duas opções de armazenamento que o Couchbase Server oferece para índices secundários globais: GSI padrão e GSI otimizado para memória. Vamos nos aprofundar agora no GSI otimizado para memória;

O que é um índice secundário global otimizado para memória?

Em post anterior sobre índices globais e locaisNa seção "Como manter os índices globais", falamos bastante sobre como os índices globais reduzem a latência das consultas em comparação com os índices locais. Também vimos como pode ser desafiador manter esses índices globais: Os índices globais exigem um subconjunto de nós para acompanhar um grande cluster de nós. No caso do Couchbase Server, 10 a 100 mil operações por segundo é a norma para um cluster.

Desafios não termina aí! A indexação global pode ser ainda mais desafiadora em casos como índices de matriz (leia mais sobre índices de matriz aqui). Os índices de matriz indexam os elementos de uma incorporado em um documento JSON e as mutações para documentos com matrizes ampliam um documento a muitas gravações de índice. O índice secundário global otimizado de memória (MOI) foi criado especificamente para resolver os desafios desses aplicativos mais exigentes. itinerário de viagem, placar e detecção de fraudes - Sem problemas!

A MOI pode oferecer latência e taxa de transferência dez vezes melhores em mutações mais rápidas para os dados em comparação com a GSI padrão, e é assim que ela faz isso:

  1. O processamento sem bloqueio para indexação simplesmente permite uma concorrência maciça ao manter a mutação de entrada no índice.
  2. A estrutura Skiplist otimiza o armazenamento na memória, ao contrário dos índices B+Tree.
  3. Forçar o índice para o armazenamento em memória significa que o MOI não é executado em velocidades de disco para armazenar o índice; em vez disso, ele tira instantâneos regulares para o disco somente para recuperação.

Índices secundários globais otimizados para memória versus índices secundários globais padrão

Os índices otimizados para memória foram adicionados na versão 4.5 como uma opção de armazenamento adicional para GSIs. Os índices secundários globais padrão estão presentes desde a versão 4.0. Os administradores podem configurar o GSI com o armazenamento padrão do GSI, que usa o ForestDB por baixo, para índices que não cabem na memória, ou podem escolher o GSI otimizado para memória para indexação e consultas mais rápidas na memória.

Normalmente, os índices são criados para reduzir as latências de consulta, e manter os índices na memória reduz muito mais as latências! A MOI foi projetada para reduzir a latência e mais alto As necessidades de taxa de transferência e o MOI exigem máquinas com grande memória para manter o índice na RAM. O GSI padrão pode ser transferido para o disco quando a memória se esgota. O desempenho do subsistema IO torna-se extremamente importante para que o GSI padrão tenha um bom desempenho. Entretanto, diferentemente do GSI padrão, o hO subsistema de E/S de alto desempenho não é necessário para o MOI. Como o MOI é executado em velocidades na memória, os tempos de indexação inicial e contínua são mais rápidos com o MOI em comparação com o GSI padrão. 

A tabela a seguir resume as principais diferenças entre as GSIs padrão e as otimizadas para memória;

Criação e gerenciamento de GSIs otimizadas para memória

Independentemente do tipo de armazenamento, CREATE INDEX é a maneira de criar índices secundários globais no Couchbase Server. De fato, não há opções específicas de MOI na instrução CREATE INDEX. Em geral, a alta disponibilidade e a mecânica de particionamento permanecem as mesmas com padrões versus GSI otimizado para memória. No entanto, é importante observar que o MOI vem com estatísticas e alertas adicionais para ajudar na colocação de índices e no gerenciamento de índices.

Colocação de índices otimizados para memória no cluster do Couchbase Server

Os índices otimizados para memória fornecem duas estatísticas importantes que podem orientar o posicionamento do MOI com a cláusula NODES em CRIAR ÍNDICE.

  • Índice máximo de RAM usado %: Informa a cota máxima de RAM usada em porcentagem (%) no cluster e em cada nó, tanto em tempo real quanto com um histórico de minutos, horas, dias, semanas e muito mais.
  • Índice restante de RAM: Informa a cota de RAM de índice livre para o cluster como um total e em cada nó, tanto em tempo real quanto com um histórico de minutos, horas, dias, semanas e mais.

Ao colocar o próximo índice otimizado para memória, você pode observar a disponibilidade de memória no nó e colocar o índice com base no tamanho da memória.

Alertas com índices otimizados para memória

A falta de memória interrompe a indexação com o MOI, portanto, é importante que os administradores possam ver visualmente se um nó está se aproximando da cota de RAM. A estatística MAX Index RAM Used % (discutida acima) foi criada exatamente para isso. Há também um alerta que alertará o usuário interativo ou notificará os administradores por e-mail. O alerta "Aproximando-se da cota total de RAM do indexador"O alerta de cota de RAM do indexador, que dispara se mais de 75% da cota de RAM do indexador for esgotada em qualquer nó do cluster. Você pode configurar os alertas no Console da Web em configurações.

A documentação técnica fornece informações mais detalhadas sobre o MOI e o GSI em geral. Você pode ler mais sobre como selecionar o modo de armazenamento para GSI e como administrar o serviço de índice e GSIs no guia de administradores aqui e encontre o guia de arquitetura do serviço de indexação e dos indexadores aqui.

Em Parte III da série, falaremos sobre o novo Circular Write Mode com índices globais padrão e como o Circular Write Mode melhora o desempenho de E/S ao indexar dados no Couchbase Server 4.5.

Feliz hacking

-Cihan

Autor

Postado por Cihan Biyikoglu, diretor de gerenciamento de produtos, Couchbase

Cihan Biyikoglu é diretor de gerenciamento de produtos da Couchbase, responsável pelo produto Couchbase Server. Cihan é um entusiasta de big data que traz mais de vinte anos de experiência para a equipe de produtos da Redis Labs. Cihan começou sua carreira como desenvolvedor C/C++.

Deixar uma resposta