4 pontos por GN⁺ 2025-08-10 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A Radar fornece uma infraestrutura geoespacial que processa mais de 1 bilhão de requisições de API por dia e migrou do Elasticsearch e MongoDB existentes para o HorizonDB de desenvolvimento próprio para resolver problemas de desempenho e escalabilidade
  • O HorizonDB foi desenvolvido em Rust e é um banco de dados geoespacial de alto desempenho que combina várias ferramentas open source, incluindo RocksDB, S2, Tantivy, FST, LightGBM e FastText
  • Na arquitetura anterior, os custos e a complexidade de expansão do Elasticsearch e MongoDB eram altos, o que tornava a operação difícil
  • O HorizonDB opera com base em um processo único multithread, alcançando redução de custos, melhoria de desempenho e alta confiabilidade
  • A produtividade de desenvolvimento e a eficiência operacional melhoraram significativamente, tornando possível a aplicação rápida de novos dados e funcionalidades
  • Os dados são pré-processados no Apache Spark e armazenados com versionamento no AWS S3, e os desenvolvedores conseguem executar e testar localmente com facilidade
  • Isso permitiu desativar o cluster Mongo e Elasticsearch, reduzir custos substancialmente e melhorar a velocidade de desenvolvimento de recursos e a eficiência de processamento de dados

Introdução e contexto

  • A Radar é uma plataforma de infraestrutura de geolocalização que processa mais de 1 bilhão de chamadas de API por dia em centenas de milhões de dispositivos em todo o mundo
    • Principais APIs: Geocoding, Search, Routing, Geolocation compliance etc.
  • À medida que a escala de dados e de produtos crescia, tornou-se urgente resolver problemas de alto desempenho, escalabilidade e custo
  • Para isso, foi introduzido o HorizonDB escrito em Rust, disponibilizando várias funcionalidades de serviços de localização em um único binário de alto desempenho
    • 1.000 QPS por core
    • Latência mediana de geocodificação forward de 50 ms, reverse geocoding <1 ms
    • Escala linear em hardware genérico

Limitações do sistema anterior

  • Estrutura anterior: forward geocoding processado pelo Elasticsearch, reverse geocoding pelo MongoDB
  • Problemas:
    • O Elasticsearch distribui a consulta em todos os shards e exige atualizações de lote periódicas
    • O MongoDB tem dificuldade com ingestão de lote em larga escala, exige alocação excessiva de recursos e não possui rollback confiável

Objetivos da arquitetura do HorizonDB

  • Eficiência - operar em hardware comum, autoescala previsível e funcionar como fonte de dados única para todas as entidades geográficas
  • Operabilidade - construir e processar os dados várias vezes ao dia, com mudanças e rollback fáceis, simplificando a operação
  • Experiência de desenvolvimento - possível executar no ambiente local, com alterações e testes fáceis

Pilha de tecnologias utilizadas

São utilizadas várias ferramentas open source, incluindo RocksDB, S2, Tantivy, FSTs, LightGBM e FastText; os dados são pré-processados com Apache Spark e salvos no S3 como arquivos com controle de versão em Rust

  • Rust

    • Uma linguagem de programação de sistema desenvolvida pela Mozilla
    • Garante segurança de compilação e memória, permitindo gerenciamento de memória de índice de grande escala previsível sem coleta de lixo
    • Suporta abstrações de alto nível como tratamento de nulos e pattern matching, tornando fácil expressar a lógica complexa de ranking de busca
    • Otimizado para um processo único multithread para processar centenas de GB em SSD
  • RocksDB

    • Armazenamento in-process de alto desempenho baseado em árvore LSM
    • Resposta em microssegundos e desempenho estável mesmo para grandes volumes de dados
  • S2

    • Biblioteca de indexação espacial do Google que acelera consultas ponto-polígono ao dividir a Terra em quadrantes
    • A Radar desenvolveu sua própria binding em Rust da biblioteca S2 em C++, com previsão de publicação open source em breve
  • FSTs (Finite State Transducers)

    • Estrutura de dados para compactação eficiente de strings e busca por prefixo
    • Reflete que 80% das consultas seguem a “happy path” regular, permitindo armazenar centenas de milhões de caminhos com poucos MB de memória
  • Tantivy

    • Biblioteca de índice reverso em processo semelhante ao Lucene
    • Motivos para adotar em vez de serviço externo como Elasticsearch:
      • Qualidade de busca - resposta a processamento de busca avançado, como expansão dinâmica de palavras-chave, sem latência de comunicação UML
      • Simplificação operacional - processamento dentro de um processo único, e expansão fácil de índices grandes com memory-mapping
  • FastText

    • Usa um modelo FastText treinado com corpus e logs próprios para gerar representações vetoriais de palavras e usar em aplicações de ML
    • É robusto contra erros de digitação e termos não registrados, permitindo entendimento semântico de busca por meio da similaridade de significado entre vetores adjacentes
  • LightGBM

    • Utiliza vários modelos LightGBM para classificação de intenção da consulta, etiquetagem de atributos na consulta e outros
    • Ex.: consultas regionais como “New York” pulam a busca de endereço; “841 Broadway” pula a busca de POI/região
  • Apache Spark

    • Processa centenas de milhões de pontos de dados em menos de 1 hora, com melhoria contínua do desempenho de joins/agregações
    • Os dados finais são armazenados no S3, permitindo exploração de resultados por SQL com ferramentas como Amazon Athena ou DuckDB

Resultados da adoção do HorizonDB

  • O serviço ficou consideravelmente mais rápido, com operação simplificada e confiabilidade aprimorada
  • A equipe de engenharia consegue aplicar e validar novos dados e funcionalidades em um dia
  • Fechamento de clusters de grande escala de Mongo, Elasticsearch e diversos microsserviços, com economia de dezenas de milhares de dólares por mês
  • A Radar finalizou a preparação para lidar com uma expansão de grande escala no futuro. O processo de design de funcionalidades específicas será apresentado em um próximo post no blog

Ainda não há comentários.

Ainda não há comentários.