Tech

Améliorer l’efficacité de la base de données de séries chronologiques Goku sur Pinterest

Pinterest a modernisé et amélioré son Gokû base de données de séries chronologiques. Les mises à jour récentes se concentrent sur l’optimisation du stockage et de l’utilisation des ressources sans compromettre la qualité du service.

Pinterest a créé Goku, un moteur de base de données interne, pour répondre aux limitations spécifiques de OuvrirTSDB. Vous pouvez lire une explication détaillée de ce qui a motivé Pinterest dans ce article.

Dans un article de blog récentl’équipe Goku a introduit deux fonctionnalités, un espace de noms de métriques et la fourniture des meilleures métriques d’écriture., à l’équipe d’observabilité du client qui les a aidés à réduire les données stockées sur Goku. Ces innovations ont considérablement réduit les besoins en stockage de données. L’espace de noms des métriques organise les configurations des métriques, permettant une gestion efficace des données. Pendant ce temps, le système d’identification des principales mesures aide l’équipe d’Observabilité à bloquer les données inutiles, réduisant ainsi les séries temporelles stockées de 37 %.

  Exemples de configurations de trois espaces de noms nommés ns1, ns2 et ns3.
Fig 1 : Exemples de configurations de trois espaces de noms nommés ns1, ns2 et ns3.

Les configurations d’espace de noms (Fig. 1) sont stockées dans un fichier de configuration partagé dynamique regardé par tous les hôtes de l’écosystème Goku (Fig. 2). À chaque fois que le contenu de ce fichier change, le processus Goku exécuté sur les hôtes est averti et analyse le nouveau contenu pour comprendre les changements.

Fig 2 : Architecture de Goku avec espace de noms
Fig 2 : Architecture de Goku avec espace de noms

Plusieurs changements architecturaux réduisent encore davantage les coûts d’infrastructure. Les améliorations de l’indexation des noms de métriques ont réduit l’utilisation de la mémoire de 12 Go à 3 Go par hôte. De plus, l’introduction du codage par dictionnaire dans Goku Compactor a éliminé les problèmes de mémoire insuffisante, permettant l’utilisation de matériel moins coûteux.

Fig 3 : Consommation de mémoire au niveau de l'hôte pour stocker un nom de métrique.
Fig 3 : Consommation de mémoire au niveau de l’hôte pour stocker un nom de métrique.

Fig 4 : baisse de l'utilisation de la mémoire par hôte lors d'un compactage de niveau important après l'encodage du dictionnaire.
Fig 4 : baisse de l’utilisation de la mémoire par hôte lors d’un compactage de niveau important après l’encodage du dictionnaire.

Pinterest s’est également concentré sur l’optimisation de l’allocation de mémoire. En s’attaquant à la fragmentation interne et à la mémoire surallocation, l’équipe a réalisé d’importantes économies de mémoire. Par exemple, les modifications apportées à la structure folly::IOBuf ont réduit l’utilisation de la mémoire de 8 à 11 Go par hôte.

Les algorithmes de compression de séries temporelles sont essentiels pour stocker et traiter efficacement de grands volumes de données horodatées. Ces algorithmes réduisent la taille des données en identifiant les modèles et les redondances, permettant un traitement des requêtes plus rapide et des coûts de stockage réduits. Des techniques telles que codage delta, codage delta de deltaet XORLa compression basée sur la technologie est utilisée pour obtenir des efficacités de stockage significatives. Par exemple, TimescaleDB, une base de données de séries chronologiques open sourceutilise ces algorithmes pour atteindre une efficacité de stockage de plus de 90 %, ce qui se traduit par des économies substantielles et des performances de requête améliorées.

Meta, dans sa base de données de séries chronologiques Gorilla, exploite également des techniques de compression telles que delta-de-delta les horodatages et Valeurs à virgule flottante XOR pour réduire l’empreinte de stockage par 10, améliorant ainsi considérablement l’efficacité des requêtes. Plus de détails peuvent être trouvés dans leur document de recherche.

Les efforts de Pinterest s’inscrivent dans une tendance plus large du secteur technologique visant à optimiser les systèmes de gestion de données de séries chronologiques. Des initiatives similaires incluent FiloDB d’Apple, L’Atlas de Netflix, Le M3 d’Uber, Méta Gorille et Argus de Salesforce. Ces projets, comme Goku, se concentrent sur la gestion efficace des données chronologiques et certains sont disponibles sous forme de solutions open source sur des plateformes comme GitHub. Ils représentent une évolution collective vers une infrastructure de données plus évolutive et plus rentable.

Ces améliorations ont permis à Pinterest d’atteindre un 40 % de réduction du stockage des séries temporelles et un 70% de réduction des coûts. Les améliorations permettent également à Pinterest de s’adapter à un Augmentation de 30 % de la croissance organique du stockage sans capacité supplémentaire. Une discussion pertinente sur les dépenses et l’efficacité de l’observabilité peut être trouvée dans ce Fil de discussion Redditoù les professionnels du secteur partagent leurs idées et leurs points de repère. Par exemple, maman sans serveur sur Reddita déclaré :

Au niveau fixé : dans de nombreuses entreprises, l’observabilité est le coût n°2 après l’infrastructure/l’hébergement réel. Les gens paient cher pour savoir ce que fait leur logiciel.



Source link