Pesquisa de texto completo

Tipo de índice Scorch - Por que isso é importante?

Tipos de índices em Full Text Search (FTS) - refere-se à especificação coletiva do formato de índice invertido e seus aspectos de armazenamento. Scorch é o tipo de índice avançado e em evolução. Mas antes de se aprofundar nos detalhes do scorch, é imperativo dar uma olhada no tipo de indexação anterior, conhecido como upside_down.

No formato de indexação upside_down, os aspectos de armazenamento do índice de apoio são transferidos para um armazenamento de valores-chave. Essencialmente, isso significa que todas as estruturas de dados rudimentares de recuperação de informações, como dicionário de termos, listas de postagens etc., são armazenadas na forma de chaves e valores em um armazenamento genérico de valores-chave. Como em muitos sistemas semelhantes, as chaves foram decoradas com mais detalhes para identificar o que o valor representa. Vamos pular os detalhes aqui, pois o principal tópico em discussão é o scorch. O upside_down era o tipo de índice padrão até a versão 5.5.0 do servidor Couchbase.

O projeto cuidadoso sangrar(biblioteca de indexação) nos ajudaram a fazer experimentos e a avaliar o desempenho da representação do índice invertido em diferentes sistemas de valor-chave (por exemplo, levelDB, RockDB, mossStore etc.). Mas logo a representação do valor-chave provou ser um gargalo no dimensionamento do índice invertido.

Alguns dos principais problemas observados são os seguintes,

  • enorme amplificação do tamanho do índice, principalmente devido à representação ingênua de dados em formatos KV.
  • os potenciais de desduplicação de dados não foram aproveitados.
  • representação menos amigável para atender a consultas em linguagem natural, como distância difusa/edição.

Essas falhas se transformaram em problemas maiores de escalabilidade com conjuntos de dados maciços, o que levou à decisão de reprojetar a representação do índice invertido e o armazenamento em disco.  E esses esforços conceberam o tipo de índice mais novo chamado queimar.

Queimadura

Muitos conceitos fundamentais de design do scorch são inspirados no Lucene.

O Scorch segue uma arquitetura de índice baseada em segmentos. Cada índice é uma coleção de segmentos e cada segmento é um subíndice autossuficiente e imutável capaz de atender à consulta.

Com o scorch, decidimos representar internamente os documentos usando identificadores numéricos. Isso abriu grandes oportunidades de otimização na representação do índice invertido.

Agora, vamos dar uma olhada mais profunda na arquitetura do segmento. Cada segmento é composto por esses blocos de construção principais.

Dicionário de termos - Sem dúvida, a parte mais importante de um índice invertido. Ela armazena todos os termos indexados, juntamente com a frequência do documento e um ponteiro para as listas de lançamento por campo.

O Scorch usa transdutores de estado finito (FST) para implementar esses dicionários de termos. As implementações baseadas em FST ajudam na economia de memória e nas otimizações de consulta para consultas avançadas, como distância de edição ou consultas baseadas em regex, aproveitando o DFA propriedade dos FSTs.

Listas de lançamentos - Fornece a lista de documentos nos quais ocorre um termo de pesquisa. Como fornecemos IDs numéricos para representar documentos internamente, a melhor forma de representá-los é como um bitmap. As representações de bitmap ajudam a economizar espaço, a fazer pesquisas mais rápidas e a otimizar o código SSE.

Normas de frequência/detalhes de localização - Os detalhes de frequência e norma dos termos indexados são usados durante a pontuação. Os detalhes de localização ou posicionamento são necessários para realizar consultas de frases ou destacar os resultados etc. Portanto, esses valores numéricos não ordenados são varint codificados e armazenados usando uma lógica de fragmentação proprietária.

Campos armazenados - Ajuda os usuários a armazenar valores de campo não analisados no índice e recuperá-los como parte dos resultados da pesquisa. Isso ajuda a evitar mais viagens de pesquisa de dados para o KV.  O Scorch usa técnicas de compactação na lógica proprietária de chunking para representar esses dados.

ValoresDoc - realiza pesquisas inversas no índice, por exemplo: encontrar todos os valores indexados para um determinado documento. Isso ajuda a potencializar consultas como facetas ou classificação em campos personalizados etc. O Scorch usa uma representação colunar em cima da lógica proprietária de fragmentação compactada para representar essa parte do índice.

O Scorch usa um formato binário mais recente chamado "zap" para representar esses conteúdos de segmento achatados por bytes no disco. E esses bytes de segmento de disco são mapeados.

TLDR; - As otimizações acima no scorch proporcionaram uma redução de até 4 vezes no tamanho do índice e melhorias no desempenho da consulta (em latência e taxa de transferência) de até 20 vezes para muitas consultas em nosso benchmarking interno.

O Scorch é o tipo de índice padrão desde a versão 6.0.0 do servidor Couchbase, e mais recursos estão sendo adicionados e mapeados para o scorch nas próximas versões do FTS.

Portanto, é altamente recomendável atualizar os índices para formatos de índice scorch, se você tiver um caso de uso genuíno de FTS.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Sreekanth Sivasankaran

Sreekanth Sivasankaran é engenheiro principal/gerente sênior de engenharia da Couchbase R&D. Ele lidera o projeto e o desenvolvimento da funcionalidade de pesquisa distribuída e de alto desempenho. Ele tem mais de 17 anos de experiência em desenvolvimento de produtos em vários domínios, como telecomunicações, telefones celulares, software corporativo, tecnologias de big data e sistemas distribuídos.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.