Sugestão de um ecossistema Hadoop para análises em Grandes Bancos de Dados de séries temporais
Por Alessandro Lemes da Silva
Quando o “Descobridor dos Mares”, “Pai da Oceanografia Moderna e Meteorologia Naval” Matthew Fontaine Maury ficou imobilizado por conta de uma lesão na perna, aproveitou seu tempo para ampliar seus estudos de navegação, meteorologia, ventos e correntes. Ele estudou milhares de registros e cartas dos navios e analisou mais de um bilhão de pontos de dados para publicar gráficos de ventos e do tempo. Ele fez diversas cartas náuticas, que ensinam a marinheiros de todo o mundo como usar correntes oceânicas e vento para reduzir a duração das viagens.
Passados cerca de 150 anos, percebemos como os dados históricos ou dispostos em séries temporais são fundamentais para a tomada de decisões orientada por dados. Hoje, milhões de pontos de dados são recolhidos por sensores, medidores inteligentes, RFID e outros – cada segundo de nossas vidas.
O mundo está se tornando mais e mais conectado e inteligente, o que costumo chamar de os 3 Vs de big data:
- Volume;
- Velocidade;
- Variedade.
Como os custos de armazenamento diminuiu significativamente na última década e o surgimento da computação distribuída, as empresas querem capturar e organizar esses dados para realização de análise de grandes volumes históricos para a abrangência completa de seus segmentos de negócio e o apoio efetivo à tomada de decisões.
Nos segmentos modernos de supply chains, toda a viagem da origem ao destino é rigidamente monitorada através de sensores, que transmitem continuamente dados telemáticos, informações de veículos como o desempenho do motor, consumo de combustível, o desempenho de frenagem, etc.; Os dados de GPS transmite continuamente localização; as etiquetas RFID são usadas para rastrear embarques em centros de distribuição e dados de clientes coletados em diferentes interfaces.
Todos esses dados é imensamente valioso, e oferece insumo para identificar oportunidades de otimização, redução de custos e alavancagem de novos de negócios.
Para embarcar, classificar e analisar esse grande volume de dados é preciso uma infraestrutura específica, a construção de um ecossistema dedicado e com requisitos que atendam ao tempo de resposta sobre a vastidão dos dados.
Porque não o bom e velho RDBMS?
Honestamente, RDBMS em seu formato natural não foi concebido para armazenar e analisar grandes volumes de dados dispostos em séries temporais. Por exemplo, uma empresa de logística que tem 16 milhões de embarques diários, transmitindo informações a cada hora, realizará mais de 300 milhões de inserções de dados na base por dia.
Agora, se os dados forem retransmitidos quatro vezes por hora, já somos mais de um bilhão de pontos de dados em um dia. Um banco de dados relacional normal armazena dados em linhas separadas, o que significa que a tabela continua crescendo verticalmente. Além disso, há um monte de duplicação de dados, como dados de envios estáticos, como informações de clientes, dados de origem e de destino, etc. repetido em cada linha. Idealmente, você pode evitar tudo isso através da normalização em várias tabelas e criar índices.
Um bom DBA iria dizer-lhe como fazer a normalização ou de-normalização e especificar que esse é o caminho a percorrer. No entanto, mesmo que criar tabelas para armazenar de forma eficiente tais grandes volumes de dados, a consulta desses dados é uma história diferente. Com mais de um bilhão de linhas que estão sendo adicionados a cada dia, combinando SLAs dos clientes de hoje é realmente desafiador.
Leia os dados, não os armazene. Eis a questão.
Num banco de dados de séries de temporais, consultas usuais é uma comparação dos pontos de dados em intervalos de tempo diferentes. Por exemplo:
- É o número de transferências ocorridas hoje comparadas aos últimos 5 anos;
- É o tempo médio gasto de transporte nas estradas comparado aos últimos 3 anos e com aplicação de modelagem preditiva para análise de tendências;
- É avaliar a quilometragem de alguns tipos de caminhões nos últimos 6 meses e cruzar com o comportamento de outro modelo de transporte para avaliação de eficiência modal.
Produzir uma grande quantidade de dados é fácil e produzir uma grande quantidade de dados derivados é ainda mais fácil.
Considerando o tamanho qual a solução? Comprimir todos os dados.
Mas como responder a consultas, então? Percorrer os dados.
Isso é rápido? Definitivamente não!
Esperar resultados de consultas nunca é produtivo. Nós precisamos de compressão, mas não à custa da velocidade. Para reduzir o tempo de consulta, o objetivo deve ser o de minimizar o tempo de I/O, reduzindo o número de registros lidos à cada tempo.
As soluções para grandes bancos de dados de séries temporais são especializadas baseados em tecnologias de código aberto e um modelo de dados inteligente para superar deficiências.
Temos hoje a tecnologia do Apache Parquet que é um formato de armazenamento colunar disponível para qualquer projeto dentro do ecossistema Hadoop, independentemente da escolha da estrutura de processamento de dados, modelagem ou linguagem.
Quais as vantagens da armazenagem colunar dos dados?
- A organização de dados por colunas permite uma melhor compactação, já que os dados tornam-se homogêneos.
- O I/O é reduzido consideravelmente porque podemos verificar eficazmente apenas um subconjunto das colunas.
- Como dados do mesmo tipo são armazenados em cada coluna, isso permite técnicas de codificação eficientes.
- Por último, o Spark SQL é conhecido por trabalhar melhor com tabelas em formato Parquet.
Que vantagem temos com esse tipo de implementação?
PERFORMACE
O modelo colunar para armazenagem de dados oferece maior velocidade e eficiência. Ele é otimizado para bancos de dados de séries temporais com altíssima performance no desempenho de consultas, agregação e análise.
ESCALABILIDADE
Esse tipo de implementação usa HDFS e computação distribuída em seu núcleo. Como o volume de dados aumenta, mais máquinas podem ser adicionadas para lidar com o aumento da carga. Em todos os setores, como instituições financeiras, serviços públicos, telecomunicações e petróleo e gás, mais e mais empresas estão adotando o armazenamento colunar para grandes volumes de dados.
VELOCIDADE DE RESPOSTA
Bases de dados de séries temporais normalmente têm dois desafios; a taxa a que novos dados são adicionados é muito elevado e os dados históricos sobre o qual são feitas consultas não vastos. Assim, qualquer solução deve ser capaz de combinar ingestão rápida em um curto tempo de resposta. Combinando Spark SQL com tabelas em formato Apache Parquet.
BAIXO TCO
Usando tecnologias open-source e infraestrutura de nuvem ajuda a reduzir drasticamente o custo total das operações, especialmente quando comparamos alternativas muito mais caras.
Agora que a tecnologia é capaz de armazenar e analisar grandes volumes de dados, o que isso nos permitirá fazer?
Há uma variedade de casos de uso, incluindo BI, análises exploratórias e classificação e detecção de anomalias. Tecnologias open-source e computação distribuída abriram portas para novas possibilidades e novas fronteiras no BI em bancos de dados de séries temporais.