L’analyse des données est essentielle au succès des activités d’Uber. Parmi d'autres fonctions, ces analyses sont utilisées pour:
- Construire des tableaux de bord pour surveiller ses métriques commerciales
- Prendre des décisions automatisées (telles que la tarification des voyages et la détection de la fraude) en fonction de statistiques agrégées recueillies.
- Effectuer des requêtes ad hoc pour diagnostiquer et résoudre les problèmes liés aux opérations commerciales
Nous pouvons résumer ces fonctions en catégories avec des exigences différentes comme suit:
Les tableaux de bord et les systèmes de décision exploitent les systèmes analytiques en temps réel pour effectuer des requêtes similaires sur des sous-ensembles de données relativement petits, mais très précieux (avec une actualité maximale des données) avec un QPS élevé et une latence faible.
La nécessité d'un autre moteur d'analyse
Le problème le plus souvent résolu par l'analyse en temps réel chez Uber consiste à savoir comment calculer les agrégats de séries chronologiques, calculs qui lui donnent un aperçu de l'expérience utilisateur afin d'améliorer ses services en conséquence. Avec ces calculs, Uber peut demander des métriques selon des dimensions spécifiques (telles que le jour, l'heure, l'identifiant de la ville et l'état du trajet) sur une plage de temps sur des données arbitrairement filtrées (ou parfois jointes). Au fil des ans, Uber a déployé de nombreuses solutions pour résoudre ce problème de différentes manières.
Parmi les solutions tierces utilisées par Uber pour résoudre ce type de problème, citons:
[LIST][*]Apache Pinot, une base de données analytique distribuée open source écrite en Java, qui peut être exploitée pour l'analyse de données à grande échelle. Pinot utilise une architecture lambda en interne pour interroger des données par lots et en temps réel dans un stockage en colonnes, utilise un index bitmap inversé pour le filtrage et s’appuie sur un arbre en étoile pour la mise en cache des résultats agrégés. Cependant, il ne prend pas en charge la déduplication à base de clés, l'Usert, les jointures et les fonctionnalités de requête avancées telles que le filtrage géospatial. En outre, en tant que base de données basée sur la machine virtuelle Java, l’exécution de requêtes sur Pinot a un coût plus élevé en termes d’utilisation de la mémoire.[*]Elasticsearch est utilisé chez Uber pour une variété de besoins d'analyse en continu. Il a été construit sur Apache Lucene pour la recherche de mots clés en texte intégral qui stocke des documents et un index inversé. Il a été...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.