Escala de pesquisa. Elasticsearch Suas vantagens e requisitos básicos para instalação

Boa tarde. Meu nome é Roman Larchikov, sou engenheiro de suporte técnico na Docsvision. Este artigo foi preparado para aqueles que estão interessados ​​nos detalhes técnicos da implementação do dimensionamento de pesquisa e familiaridade com o trabalho do Elasticsearch. O artigo abordará os motivos do uso do ES, os requisitos do sistema e as vantagens sobre a pesquisa no MS SQL Server.

Se você estiver interessado em termos mais gerais para aprender sobre como dimensionamos a pesquisa na versão mais recente da nossa plataforma, meus colegas falaram sobre isso no webinar “ Docsvision ECM. Pesquise o ElasticSearch em escala . "

Por que a Elasticsearch?


imagem

Para começar, vale ressaltar que a versão da plataforma Docsvision 5.5 é fundamentalmente diferente das anteriores em sua arquitetura modular. Nesse sentido, precisávamos garantir a possibilidade de escala quase ilimitada do sistema, mantendo a velocidade do trabalho. Em particular, era necessário poder dimensionar o serviço de indexação em alta velocidade de operação.

Nesse sentido, a versão do Docsvision 5.5 introduziu a possibilidade de usar bancos de dados externos (via satélite). Agora, não há necessidade de armazenar todos os dados em um banco de dados, que, com trabalho intensivo, cresce diariamente em volumes, o que complica o processo de manutenção do banco de dados, a velocidade de sua recuperação durante falhas e diminui a operação geral do próprio banco de dados.

imagem

Usar um banco de dados para tudo é ruim. A capacidade de transferir dados para separar bancos de dados externos implementados no Docsvision 5.5 permite reestruturar corretamente o banco de dados. Assim, se falamos de pesquisa, os dados de indexação já podem ser armazenados fora do banco de dados principal, eliminando o efeito em seu tamanho.

Facilidade de personalização, flexibilidade, confiabilidade, escalabilidade, velocidade de indexação e pesquisa on-line são tudo sobre o Elasticsearch.

O Elasticsearch é muito orientado a documentos. Após a indexação, podemos pesquisar, classificar, filtrar dados, em vez de linhas de dados em colunas. O que, por sua vez, demonstra uma abordagem diferente para a recuperação de dados e indica que o Elasticsearch pode executar pesquisas complexas de texto completo.

Os documentos são representados como objetos JSON. Ao mesmo tempo, a serialização (o processo de conversão de qualquer estrutura de dados em uma sequência de bits) JSON é suportada pela maioria das linguagens de programação e já é o formato padrão para o NoSQL.

1. Apresentando o Elasticsearch


1.1 O que é isso?


O Elasticsearch é um mecanismo de pesquisa de texto completo escalável de código-fonte aberto usando a biblioteca Lucene e escrito em Java. A descrição de todas as vantagens deste mecanismo está disponível no site oficial .

Destina-se a pesquisas complexas no banco de dados de documentos / arquivos. No banco de dados Elasticsearch, as tabelas são chamadas de índices e o processo de carregamento de documentos é chamado de indexação.

Ele pode ser considerado um repositório não relacional de documentos no formato JSON e um mecanismo de pesquisa baseado na pesquisa de texto completo do Lucene. Os clientes oficiais estão disponíveis em Java, NET (C #), Python, Groovy, JavaScript, PHP, Perl e Ruby.

O ES está sendo desenvolvido pela Elastic, juntamente com projetos relacionados chamados Elastic Stack - Elasticsearch, Logstash, Beats e Kibana.

A Elasticsearch é responsável por armazenar e pesquisar dados (daqui em diante, por brevidade, chamaremos de ES).

1.2 Vantagens do Elasticsearch Search Engine comparado ao MS SQL Search Engine


O Docsvision 5.5 pode escolher com qual mecanismo de pesquisa trabalhar. Neste artigo, vou focar no uso do mecanismo de pesquisa Elasticsearch e falar sobre suas vantagens sobre a pesquisa no MS SQL Server.

Vantagens principais:

  • A capacidade do serviço de indexação de acessar repositórios de dados externos. Ao mesmo tempo, os dados são indexados e exibidos corretamente durante a pesquisa. Ao usar o mecanismo de pesquisa do SQL Server, foi possível pesquisar apenas pelos dados armazenados no banco de dados principal.
  • O ES é um projeto de código aberto, e muitas empresas globais o utilizam para pesquisar grandes conjuntos de dados.
  • ES , , .
  • (). ES, SQL Server .
  • ES — , .
  • ES (, , ), .
  • , , , .
  • ES . .
  • . , , , , , .
  • , , , , .
  • ES ( ). Docsvision, ES , SQL .
  • — SQL. , , , . , .. , . , , .. . ES .
  • O banco de dados não aumenta de tamanho ao adicionar idiomas. Diferentemente do ES, ao usar a pesquisa de texto completo no MS SQL, os dados indexados aumentam o tamanho do banco de dados principal, principalmente se a indexação estiver configurada em idiomas diferentes, por exemplo, russo / neutro / inglês. Nesse caso, o crescimento das tabelas de indexação já aumenta várias vezes, se apenas um idioma para indexação fosse escolhido, por exemplo, neutro.

2. Requisitos de software e sistema necessários para instalar o Elasticsearch


O ES pode ser implantado não apenas em servidores de alto desempenho, mas também em um laptop. Mas se estamos falando de um ambiente produtivo, você deve usar um servidor separado e seguir algumas recomendações que valem a pena considerar.

2.1 RAM


O recurso mais crítico para o ES é a RAM. Esse é o principal recurso que provavelmente terminará primeiro. O tamanho mínimo permitido é 8 GB, o recomendado é de 16 a 64 Gb. É permitido mais se realmente houver uma necessidade.

imagem

A classificação e agregação podem consumir uma grande quantidade de memória; portanto, é importante ter um suprimento suficiente dela. Uma máquina com 64 GB de RAM é a solução ideal, mas máquinas com 32 GB e 16 GB também são comuns. Se 8 GB ou menos estiver instalado na máquina, isso poderá levar a resultados opostos (no final, você pode precisar de várias máquinas "pequenas"). O uso de mais de 64 GB também possui características próprias.

2.2 CPU


O ES, como regra, não possui muitos requisitos de processador; portanto, sua escolha é menos importante que outros recursos.

imagem

Mas você deve aderir à regra. Você deve escolher um processador moderno com vários núcleos. Normalmente, os servidores em um cluster usam máquinas de dois a oito núcleos.

Se você tiver escolha entre processadores mais rápidos ou com vários núcleos, escolha o último. O paralelismo adicional oferecido por vários núcleos fornecerá um resultado maior do que uma freqüência de clock um pouco maior.

2.3 Disco


O disco também é um recurso importante para a operação rápida do ES. É importante ao usar um cluster e é duplamente importante para clusters com grandes volumes de dados indexados.

Os discos são o subsistema mais lento do servidor, o que significa que os clusters com gravação intensiva podem sobrecarregar os discos, o que, por sua vez, se torna o gargalo do servidor. Se for possível usar unidades de estado sólido, é necessário usá-las, porque eles são muito superiores a qualquer mídia rotativa. Os hosts com suporte a SSD têm um aumento notável no desempenho da consulta e da indexação.

imagem

Se você pretende usar discos rígidos (HDD), é aconselhável usar discos de servidor de alto desempenho (discos com velocidade de rotação de 15.000 rpm).

O uso do RAID 0 é uma maneira eficaz de aumentar a velocidade do disco para discos giratórios e SSDs. Não há necessidade de usar opções RAID com espelhamento ou paridade, pois a alta disponibilidade é incorporada ao ES por meio de réplicas.

2.4 Agendador de E / S


Se você estiver usando unidades de estado sólido, verifique se o planejador de E / S do sistema operacional está configurado corretamente. Quando os dados estão sendo gravados no disco, o planejador de E / S decide quando esses dados são realmente enviados ao disco. Na maioria dos casos, o planejador cfq padrão é usado (uma fila completamente honesta).

Esse agendador aloca intervalos de tempo para cada processo e otimiza a entrega dessas várias filas no disco. Ele é otimizado para trabalhar com HDD: a natureza das placas rotativas significa que é mais eficiente gravar dados no disco, dependendo da localização física.

No entanto, isso é ineficaz para unidades de estado sólido, porque elas não usam placas rotativas. Em vez disso, use um prazo ou noop. O agendador de prazos otimiza dependendo de quanto tempo a gravação aguarda, enquanto noop é apenas uma fila FIFO simples.

Essas alterações simples podem melhorar significativamente a taxa de transferência de gravação com o agendador correto.

2.5 Rede


Uma rede rápida e confiável é importante para o desempenho em um sistema distribuído. A baixa latência garante que os nós possam trocar dados com facilidade, enquanto a alta taxa de transferência ajuda a mover e recuperar dados.

As redes modernas de data center (1 GbE, 10 GbE) são suficientes para a grande maioria dos clusters.

Os clusters que abrangem vários data centers devem ser evitados, mesmo se os data centers estiverem localizados muito próximos. Definitivamente, evite clusters que abrangem grandes distâncias geográficas.

Os clusters ES assumem que todos os nós são iguais. Atrasos prolongados tendem a exacerbar problemas em sistemas distribuídos e dificultam a depuração e a resolução.

2.6 Recomendações gerais


Vale a pena dar preferência a máquinas "médias" e "grandes", evitando máquinas de baixo desempenho, a fim de eliminar os custos de simplesmente iniciar o ES. Ao mesmo tempo, máquinas realmente grandes devem ser evitadas: elas geralmente levam a um uso desequilibrado de recursos (por exemplo, toda a memória é usada, mas não o processador central) e podem adicionar complexidade logística se for necessário executar vários nós na máquina.

3. Conclusão


Depois de descobrirmos o que é o Elasticsearch, suas principais vantagens e requisitos de instalação, podemos prosseguir com a instalação do ES para configurações adicionais no Docsvision.

Sobre como instalá-lo e executar a configuração, bem como verificar a indexação, ou seja, capacidade de trabalho na Docsvision, leia a publicação de meu colega aqui .

Tópico interessante? Então você pode usar este link e descobrir ainda mais! E aqui você pode se inscrever para os cursos.

All Articles