T + Conf 2019: Tarantool na Aeroflot, ou MDM on the fly



Hoje publicamos uma transcrição do relatório de Nikolai Shevtsov e Rustam Kildiev com o T + Conf 2019 " Tarantool in Aeroflot, ou MDM (Master Data Management) on the fly ". No relatório, você aprenderá:

  • Por que o MDM é necessário?
  • Por que preciso de tempo real?
  • A ciência de dados é mais do que apenas um notebook Jupyter.
  • Profissionais de Tarantool.
  • Por que Lua é boa em vendas.

A tecnologia da informação ajuda ativamente nossa empresa a atrair clientes. Hoje, estamos introduzindo ativamente vários projetos de Big Data. São projetos de marketing que nos ajudam a segmentar dados e comunicar informações aos clientes, pesquisas sociais, lidar com reclamações e apelações e muito mais. Além disso, vários projetos estão sendo implementados que ajudam a aumentar a lucratividade e a lucratividade do negócio. Por exemplo, um dos projetos é a análise da bagagem disponível a bordo, a fim de vender excedentes no prazo, ou prever a falha de componentes individuais e peças de reposição de aeronaves para manutenção oportuna.

É na plataforma de gerenciamento de chamadas que usamos ativamente o Tarantool e um pouco mais sobre isso.

O principal valor do Big Data para nós é a capacidade de analisar dados. Estamos tentando coletar todas as novas fontes de informações relacionadas à Aeroflot em um único campo de informações para processamento adicional.

Nikolay Shevtsov, Aeroflot. Gerente de Projetos no Departamento de Sistemas de Informação.

Como as pessoas costumam comprar um ingresso? Há uma ideia sobre a viagem, uma pessoa a compartilha com amigos e parentes, em redes sociais e fóruns, e depois compra um ingresso no site. Existem muitas fontes de informação, e nossa tarefa é coletar todas e analisá-las para entender a atitude dos passageiros em relação ao serviço e à companhia aérea como um todo.

Um de nossos projetos é chamado de plataforma de chamadas. Coletamos todas as críticas, recursos e reclamações de diversas fontes. "Plataforma" é a nossa única janela de coleta no site ou no aplicativo móvel através do qual recebemos informações dos usuários. Também coletamos análises de mídias sociais relacionadas à Aeroflot.

Muitas divisões da Aeroflot estão envolvidas no tratamento de reclamações e recursos: funcionários envolvidos na manutenção a bordo, na área de embarque, na área de desembarque, etc. A maioria das reclamações, cerca de 2,5 mil por dia, vem de passageiros que chegam com algum problema. Cada reclamação precisa ser processada, classificada e redirecionada ao departamento apropriado para um funcionário específico que possa resolver o problema do passageiro. Reclamações idênticas podem ser agrupadas para economizar tempo analisando a situação e tomando uma decisão.

O objetivo do projeto é otimizar o processamento de aplicativos e reduzir o tempo de processamento. Para isso, foi necessário criar um sistema que, no momento da reclamação, determine automaticamente seu tópico e o envie ao departamento apropriado ao funcionário responsável. No processo de processamento de uma reclamação, o sistema deve encontrar todas as informações disponíveis no cliente, até seu perfil, futuros vôos planejados etc.

No início do projeto, consideramos várias ferramentas que poderiam nos ajudar nesse assunto e, eventualmente, escolhemos o Tarantool. A vida mostrou que essa era a escolha certa: permite que você cumpra os requisitos de SLA e, ao mesmo tempo, escala bem com o aumento da carga.

Implementação


A Aeroflot introduziu uma plataforma para lidar com reclamações. Este é um repositório de informações não estruturadas, com base no qual a análise e síntese de perfis de clientes exclusivos é realizada.


As informações recebidas mediante solicitações devem ser processadas e sistematizadas. Apelações são textos que não podem ser armazenados em formato bruto, portanto todo o texto é vetorizado. É feita uma pesquisa por um conjunto de ocorrências, um mapa de palavras e frases exclusivas é compilado, com base no qual o vetor inicial é calculado para converter todas as ocorrências subsequentes. Inicialmente, nossos especialistas em análise de dados usavam ferramentas clássicas - Python e Jupyter Notebook em um cluster ou laptop local. O vetor tem um tamanho dinâmico, o que cria dificuldades.

Ao contrário de muitas outras ferramentas, o Tarantool é um servidor de aplicativos completo. Podemos usar muitas bibliotecas, como SciLua, escrever lógica em uma linguagem de programação regular etc. Agora estamos vetorizando dados usando a biblioteca SicLua em tempo real diretamente no Tarantool. Em seguida, usando o método da distância do cosseno, o sistema procura um vetor semelhante por um período de três meses. Como resultado, recebemos chamadas duplas ou similares para processamento adicional. No processo de busca, são realizados muitos cálculos matemáticos: em 3 meses, aproximadamente 100 mil chamadas são processadas de todas as fontes disponíveis. O tempo médio de processamento é de 120 ms.

Rustam Kildiev, CTO da Innodata.

A infraestrutura


Nosso banco de dados Tarantool é executado em quatro servidores de dezesseis núcleos com uma grande quantidade de RAM. Graças ao módulo Vshard, foi possível implementar uma pesquisa rápida com força bruta. Os dados são divididos em partes - baldes, para que o processamento da consulta seja paralelo. O sistema é fácil de dimensionar, basta adicionar um servidor. Temos replicação mestre-mestre implementada, embora a maioria dos DBMSs esteja chegando a isso. Além disso, não precisamos adicionar módulos, não há problemas com a administração.

Nossa quantidade de dados, se contamos a partir da RAM, é de cerca de 1 TB. No estágio de inicialização, depuração e correção de erros no projeto, surgiram problemas. Quase todas as tabelas contêm 7-8 índices; portanto, o banco de dados Tarantool para 1 TB levou 20 a 40 minutos, o que é inaceitável. Durante a inicialização, o sistema cria índices e, se você os remover, o carregamento será muito mais rápido. Nessa situação, a função Hot-standby nos ajudou.

Planos


Tanto o cliente como nós, os artistas, gostamos do Tarantool. Consideramos outras bases, mas no final escolhemos o Tarantool. Em primeiro lugar, precisávamos de uma base muito rápida. Em segundo lugar, ele terá que trabalhar muito com ele, escrever lógica, etc., portanto Lua foi uma vantagem para nós. Em terceiro lugar, o Tarantool grava imediatamente no disco e não tira instantâneos, e isso também é bom para nós, porque, embora haja muitas chamadas de clientes, não podemos perder uma sequer.

O Tarantool provou sua utilidade na produção e carregaremos ainda mais dados nele, acrescentando lógica de negócios. Ao contrário de outros bancos de dados, ele não precisa ser constantemente ajustado e algo alterado. A propósito, a conversão e o carregamento de dados no Tarantool a partir de outro sistema é automatizada e é realizada diariamente.

No futuro, planejamos mudar para o Tarantool Enterprise, o que nos permitirá administrar e configurar convenientemente várias instâncias do Tarantool. Ainda existem poucos especialistas nesse banco de dados e a necessidade deles está em constante crescimento. Às vezes, nossas qualificações não são suficientes. Nesses casos, o bate-papo interno dos desenvolvedores do Tarantool ajuda, no qual você pode pedir ajuda. Isso não está em nenhum outro sistema.

Também planejamos atualizar para Tarantool2 e SQL. Existem muitos especialistas em SQL no mercado de trabalho, portanto a transição não será muito difícil.

achados


O principal problema deste projeto foi Lua. Poucos desenvolvedores sabem disso, mas adoram ainda menos. Inicialmente, escrevemos usando outro idioma, mas devido ao grande número de solicitações, o sistema funcionou lentamente. Portanto, copiamos tudo com Lua por um longo período de tempo, mas, como resultado, o sistema funciona de forma clara e rápida, com um pequeno número de correções e lançamentos. Lua está muito próximo do código de máquina e é uma das linguagens mais rápidas da família C. Embora seja uma linguagem de script pequena, possui todas as bibliotecas necessárias e pudemos transferir algoritmos de pesquisa, vetorização, distância de cosseno etc.

Tarantool é muito tolerante a falhas e funciona imediatamente. Realizamos inúmeras experiências: desligamos o Tarantool, levantamos etc. - tudo funciona bem, e os dados intermediários são gravados no disco, para não perdermos dados.

All Articles