16 Setembro 2020

Graph Analytics

Introdução

O objetivo deste artigo passa por explicar o conceito de Graph Analytics e descrever a prova de conceito (POC) que realizamos com a ferramenta TigerGraph, que tem como propósito, não só o aumento da visibilidade de uma rede de kits cirúrgicos distribuídos por diferentes instalações médicas, mas também a otimização na gestão deste inventário. Na descrição do POC, explicaremos como fazer a modelação de dados num ambiente de grafos e o desenvolvimento das queries necessárias para a resposta às necessidades de negócio.

O que é?

Graph Analytics é um termo frequentemente usado para descrever ferramentas analíticas usadas o estudo e análise de relações entre diferentes conceitos/entidades  É composto por um conjunto de técnicas de análise que permitem estudar certas entidades como organizações, pessoas e transações e a relação entre as mesmas. Os coneceitos base de Grafos incluem os Vértices/Vertexes, edges, e propriedades associadas. Estes conceitos são usados para modelação de dados com base em relacionamentos de uma forma mais natural e intuitiva do que quando comparado com as tradicionais bases de dados relacionais:

  • Vértices/Vertexes – Entidades ou conceitos abstratos.
  • Edges – Relações entre vertices.
  • Propriedades – Parte interna da estrutura do vértices e edges.

Porquê e porquê agora?

Segundo o relatório feito pela market and market, Graph Analytics é um mercado em constante crescimento,  com um tamanho estimado de ~$600 milhões em  2019 e espera-se que chegue a $2.5 bilhões em 2024 (https://www.marketsandmarkets.com/Market-Reports/graph-analytics-market-10738263.html). Graph analytics tem vindo a observar um importante crescimento, em muito devido à necessidade de resposta a perguntas cada vez mais complexas e com dados, também eles, cada vez mais complexos. Este tipo de análise, nem sempre é prático de trabalhar e responder em sistemas tradicionais de bases de dados e  com as habituais queries de SQL.

Graphs analytics permitem às empresas:

  • Acelerar a preparação de dados e o processo de data science;
  • Analisar as relações entre diferentes entidades e chegar a conclusões através da procura de estruturas e padrões de dados que se encontram conectados;
  • E uma forma melhor, mais rápida e com menos custo de contruir uma base de dados

Mas não podemos aplicar o mesmo tipo de operações numa base de dados relacional?

Atualmente, a maioria dos sistemas de análises de dados estão assentes em base de dados relacionais. Têm uma estrutura definida, na qual, a maioria das operações são realizadas em SQL (Structured Query Language).  Estas estruturas envolvem habitualmente uma tabela por cada entidade de dados. As tabelas relacionam-se através de chaves estrangeiras.

Quando falamos sobre uma base de dados com grafos, podemos responder a qualquer pergunta desde que os dados existam e haja um caminho entre eles. Um grafo é projetado para atravessar relações que estão conectadas direcata ou indiretamente, podemos também adicionar mais relações sem pôr em causa o desempenho da base de dados.

Uma base de dados com grafos têm inúmeras vantagens quando comparando com uma base de dados relacional, para além da performance mencionada acima. Com uma base de dados de grafos, é possível obter updates em tempo real sobre a base de dados enquanto estamos a correr queries ao mesmo tempo.  Também permite ter uma flexibilidade no design do schema. Podemos estar constantemente a adicionar ou retirar novos edges, vértices ou alterar os seus atributos para aumentar ou diminuir o modelo de dados. Um exemplo a mencionar, é quando queremos construir uma base de dados relacional, nós construímos com o propósito de responder a questões definidas/diretas. No caso dos grafos, podemos identificar e extrair dinamicamente mais análises e responder a mais perguntas de negócio, quando comparando com uma base de dados relacional.

 

Casos de uso

Alguns exemplos onde uma base de dados em grafos pode gera valor para o negócio.

Detecção de Fraude:

Grafos têm se tornado uma ferramenta essencial para a indústria financeira no que toca à deteção de fraude. A identificação de padrões é fundamental neste combate. Quando algo parece fora do normal, torna-se um sinal de preocupação.  Um exemplo de um sinal de que algo pode não estar bem, é quando por exemplo uma pessoa que passa a maior parte do tempo na área de São Francisco, repentinamente faz uma compra tardia em Nova York, isto levanta suspeita sobre uma possível atividade fraudulenta.

Redes Sociais

Grafos são usados para analisar as relações nas redes sociais.  Por exemplo o Facebook, uma das redes sociais mais utilizadas, a rede de grafos é usada para a análise das relações de amizade, páginas e grupos que existem comum.  A rede de grafos do Facebook é considerada uma das maiores redes de grafos de redes sociais do mundo. Outros exemplos incluem LinkedIn e Twitter.

Recomendação de Podutos

Recomendações de produtos personalizadas aumenta a conversação, melhora as vendas, e permite ter uma melhor user-expirience. Grafos são utilizados para perceber o comportamento e as preferências dos consumidores. Uma base de dados em grafos pode manter  a performance e ao mesmo tempo estar a receber constantemente novos dados em tempo real para melhorar as recomendações. Alguns exemplos incluem Amazon, Wish e Zillow.

 

Graph Analytics POC

A BI4ALL tem uma parceria com a TigerGraph, uma das plataformas de análise de base de dados de grafos mais rápida e escalável do mercado. A prova de conceito descrita em baixo, foi criada e desenvolvida usando a TigerGraph cloud.

O POC foi aplicado num negócio que tem como principal objetivo, o empréstimo de kits cirúrgicos a entidades de saúde, para a realização de cirurgias. Um kit pode ser definido como um bloco de componentes predefinidas, para um determinado tipo de cirurgia. Os kits são construídos à medida ou por catálogo. Entre os diferentes desafios, temos a visibilidade de todos os kits espalhados pelos diferentes clientes e o facto de estes estarem em constante movimento por diferentes entidades de saúde. Esta constante utilização e movimentação levanta o desafio da alocação de kits. Quando as componentes de um determinado kit já foram utilizados numa cirurgia, ou seja, se um hospital já utilizou um kit numa cirurgia de ortopedia, os componentes utilizados não poderão ser fornecidos a outro hospital/cirurgia, pelo que este kit já não vai com o stock completo. Para tal, existe uma pessoa responsável que avalia os componentes utilizados de cada kit, e que tem como principal função, ir ao armazém requisitar os componentes em falta para completar o kit, que assim, pode ser utilizado noutro hospital/cirurgia.

O objetivo da prova de conceito foi construir um sistema para aumentar e otimizar a gestão dos inventários e a rede de distribuição de kits cirúrgicos. De forma resumida, este POC permite, de uma forma otimizada, a gestão logística dos kits, com as componentes necessárias, disponíveis para a realização de uma cirurgia num determinado hospitalCom uma abordagem de grafos pretendemos:Ter uma rede completa da localização dos kits em diferentes instituições médicas.Com uma abordagem de grafos pretendemos:

  • Ter uma rede completa da localização dos kits em diferentes instituições médicas.
  • Otimizar a utilização de diferentes kits cirúrgicos.

Com o objetivo não só de melhorar a satisfação dos clientes, mas também otimização da  utilização dos kits cirúrgicos e redução de custos. Para isso decidimos seguir a seguinte metodologia:

  • Modelação de dados;
  • Mapeamento de dados;
  • Carregamento de dados;
  • Desenvolvimento das GSQL Queries;
  • Análises dos resultados.

 

Modelação de dados

No desenho do schema, vamos adicionar os vertexes e edges para adicionar as entidades e as suas coneções. Abaixo está uma exemplo de um schema de uma empresa no ramos da medicina em que uma parte do seu negócio baseia-se no empréstimo de kits cirúrgicos

Um kit é composto por vários componetes que têm um elevado custo para serem produzidos.  Dado o elevado custo de produção e o facto de parte dos componentes terem uma data de expiração, para além de outros factores menos relevantes, torna-se essencial ter uma maior visibilidade deste inventário, de forma a permitir assim optimizar a utilização dos mesmos e reduzir custos e desperdícios associados.

Esta rede de localização dos kits permite também um potencial aumento da satisfação dos clientes, já que permite uma gestão mais eficiente do inventário.

Na imagem abaixo podemos ver o modelo de dados criado, para a resolução do problema:

Figura 1 – Modelo de dados

 

Nos vértices e edges podemos definir atributos que podem ser usados na queries para responder aos problema de negócio

Figura 2 – Propriedades dos Edges e Vertexes

 

As edges podem ser de três tipos diferentes:

  • Undirected Edge – A relação entre quaisquer 2 vértices ocorre em ambas as direções;
  • Directed Edge – A relação entre quaisquer 2 vértices ocorre apenas numa direção;
  • Directed Edge + Reverse Edge – A relação entre dois vértices pode ser: vértice A pode ir para o vértice B via AB, vértice b pode ir para vértice A via BA.

Abaixo, encontram-se alguns exemplos:

 

 

Mapeamento de dados

Uma vez finalizada a modelação, precisamos de fazer o upload dos dados que vão popular o modelo. Para este POC, decidimos utilizar ficheiros CSV. Temos um conjunto de ficheiros sobre a localização dos armazéns, detalhes sobre os kits (se os kits foram reservados ou não, quais os componentes que pertencem aos kit), e sobre as entidades médicas.

 

Figura 6 – Mapeamento de dados

 

Na imagem abaixo, conectamos cada dataset à respetiva entidade. O próximo passo é mapear a data ao grafo. Mapeamos a data do ficheiro CSV para os atributos dos vértices e edges como exemplo abaixo:

Figura 7 – Mapeamento de dados – mapeamento dos dados para os vertices e edges de acordo com os atributos

 

Carregamento de dados

Uma vez os dados mapeados, o próximo passo é fazer carregamento dos mesmos. Para isso basta apenas clicar no botão de play, no separador Load Data.

Figura 8 – Carregamento de dados

 

Exploração de grafos

Com o schema design criado e o carregamento de dados feito, podemos proceder para a exploração dos dados. Temos várias opções, podemos procurar por um vértice específico, utilizando o vértice id, ou podemos procurar um vértice aleatório de um certo tipo. Para o nosso exemplo vamos mostrar 3 vértices do tipo Warehouse.

Figura 9 – Exploração de dados

 

Também temos a opção de expandir os vértices, clicando no símbolo semelhante a um triângulo. Esta opção permite expandir os vértices para outros vértices que têm conexões imediatas. Como mencionado, no exemplo acima, vamos expandir os três vértices de Warehouse.

Figura 10 – Exploração de dados – Detalhes dos vértices

 

Desenvolvimento das queries

No separador Write Queries, podemos criar e correr queries com a linguagem TigerGraph – GSQL. Esta linguagem é similar ao tradicional SQL. Uma nota relevante a apontar, atualmente existe uma iniciativa para a definição de uma nova linguagem de queries GQL(GQL é diferente GSQL, mas mais similar do que outras linguagens de grafos existentes no mercado). Esta standarização inclui a colaboração de vários fornecedores de tecnologias de grafos, que incluem Neo4j, TigerGraph, entre outros.

Abaixo encontra-se algumas das análises realizadas:

Clientes com o maior volumes de kits

Esta query faz o print do top k clientes que têm o maior numero de kits em sua posse. Se quisermos saber quais são os top 3 clientes.

Figura 11 – GSQL – Top K de clientes com maior volumetria de kits

 

O resultado da query:

Figura 12 – Top 3 clientes com maior volumetria de kits

 

Kits com components que estão prestes a expirar

Para maximizar o recursos e reduzir o desperdicio, é muito importante perceber a localização dos kits que têm componentes em vias de expirar. Para isso foi criado uma query A_ExpiringComponents. Por exemplo se um gestor quiser saber quais os kits que têm componentes que vão expirar, por exemplo em Maio:

Figure 13 – GSQL – Kits com componentes prestes a expirar

 

Resultado da query:

Figure 14 – GSQL – Lista de Kits com componentes prestes a expirar

 

Outras analyses foram realizadas durante a prova de conceito:

  • A_KitsLocationByKitFamily – Esta query permite visualizarmos a rede de localizações de kits de um determinado tipo de família.
  • A_Kits_At_Medical_Facilities – Esta query permite visualizar uma rede de todos os kits que se encontram numa determinada instituição médica.
  • A_SurgeryKitsLocationNeededByDate – Esta query permite visualizar a rede de localização de todos os kits de uma determinada família de kits , cuja a data de retorno é antes da data que o kit precisa de estar em armazém.

 

Conclusão

Grafos oferecem vários benefícios relativamente uma base de dados relacional, especialmente no que toca ao mapeamento e análise de dados que estão intrinsecamente conectados. As bases de dados de grafos são extremamente flexíveis e escaláveis, já que permitem facilmente analisar as relações e comportamentos complexos entre dados que se encontram conectados. Isto deve-se ao facto de os grafos estarem desenhados para encontrar estruturas e padrões em dados que se encontram interligados de alguma forma. Em graph analytics, podemos  fazer adaptações ao modelo muito mais facilmente que num esquema relacional. Para isso basta apenas adicionar uma nova entidade, num processo que demora menos que um  minuto a ser realizado. Este tipo de tecnologia é de elevada importância para as organizações, pois permite estas consigam tomar decisões de negócio mais informadas e ganhem vantagens competitivas, criando assim um valor adicional para o negócio.

   José Oliveira BI4ALL
    Marta Barreto         
    Big Data Team

 

Blog