Rationaliser le développement pour une base de données d’analyse en temps réeel

Rationaliser le développement pour une base de données d’analyse en temps réeel

Intel Threading Building Blocks (Intel TBB) permet à QuasarDB de fournir des performances de premier ordre pour l’analyse de donnée volumineuses en temps réel.

Quasardb est une base de données transactionnelle et distribuée conçue pour donner aux utilisateurs un accès instantané aux données de n’importe quel type de moteur d’analyse et permettant aux entreprises de faire leurs analyses en temps réel.

Grâce à son évolutivité, quasardb offre aux utilisateurs des capacités de traitement pratiquement illimitées :

– Un stockage efficace et fiable de l’historique et des données du marché en temps réel

– Des bases de données sur les vols d’essai Aéronautique

– Un historique des livraisons logistiques

– Et plus encore

Pour fournir des performances élevées, quasardb doit non seulement effectuer une implémentation de haute qualité, mais aussi tirer parti de l’infrastructure multicœur d’Intel.

L’un des éléments clés qui permettent à quasardb de fournir des performances de premier ordre est l’outil Intel Threading Building Blocks (Intel TBB), la bibliothèque de threading C++ d’Intel pour créer des applications parallèles hautes performances et évolutives.

Pourquoi le multicœur est-il important, même pour les charges de travail liées aux E/S ?

Les bases de données sont généralement liées à des E/S et bénéficient d’une bande passante mémoire accrue ainsi que de disques et de cartes réseau plus rapides. Quasardb bénéficie de la large bande passante mémoire des derniers processeurs Intel Xeon.

Mais l’architecture multicœur est également essentielle pour garantir des performances à l’épreuve du temps. Grâce à l’upscaling, les utilisateurs peuvent maximiser leurs investissements et avoir besoin de moins de serveurs pour gérer la même charge de travail.

L’upscaling peut se faire de deux façons :

  • Architecture Share Nothing : Où chaque noyau a sa propre copie des données à travailler. Celle-ci peut fournir une extensibilité linéaire pour certaines charges de travail, mais peut entraîner une augmentation considérable de la consommation de mémoire pour d’autres charges de travail.
  • Des architectures multicœurs qui utilisent une structure de données simultanées pour minimiser, voire prévenir, les décrochages de threads.

Quasardb utilise la seconde méthode.

UNE ARCHITECTURE MULTICŒURS SIMPLIFIÉE

Les données quasardb sont disponibles pour tous les threads; cependant, chaque requête distante est traitée dans un thread dédié. Quasardb est soigneusement conçu pour s’assurer qu’une opération se déroulant dans un thread n’interfère pas avec un autre. Par exemple, deux lectures sur la même entrée ne causent aucune contention.

Pourquoi Intel TBB ?

Lorsque l’équipe a commencé à concevoir quasardb au début de 2009, elle avait deux choix :

  • Mettre en œuvre toutes les briques fondamentales nécessaires à l’évolutivité multicœurs, soit en écrivant tout eux-mêmes, soit en assemblant des briques open source.
  • Accélérer le développement en utilisant une bibliothèque qui fournit une boîte à outils complète pour atteindre l’efficacité multicœur.

« Lorsque nous avons découvert Intel TBB, nous avons réalisé que c’était exactement ce dont nous avions besoin », a déclaré M. Alligand. « Il a été écrit en C++, avait les bonnes fonctionnalités, était multi-plateforme, et la performance était très bonne. Enfin et surtout, avec Intel Corporation derrière nous, nous étions confiants sur le fait que la bibliothèque serait supportée pendant longtemps et qu’elle utiliserait efficacement l’architecture Intel, architecture la plus utilisée par nos clients. »

CRÉATION D’UNE BASE DE DONNÉES EFFICACE ET MULTICŒUR

Dans quasardb, une fois que le moteur reçoit une requête réseau, il est essentiel de s’assurer qu’elle est traitée dans le même thread avec le moins de bulles possible. Les goulots d’étranglement courants qui peuvent empêcher une application de mettre à disposition les ressources incluent :

  • Des structures de données simultanées
  • Une allocation efficace de la mémoire
  • Des verrous légers
Figure 1. Structures de données concurrentes Intel TBB et verrous légers

DES STRUCTURES DE DONNÉES SIMULTANÉES

Les structures de données sans verrouillage permettent aux threads d’accéder efficacement aux données partagées. La rédaction d’une structure de données à la fois en accès simultané et sûre peut être une tâche longue et difficile.

Intel TBB simplifie cette tâche en fournissant des vecteurs, des files d’attente, des ensembles et des mappages simultanés.

ALLOCATION EFFICACE DE LA MÉMOIRE

Le taille de la mémoire est la clé de la performance. Mais il n’y a aucun moyen de contourner l’allocation dynamique, en particulier dans une base de données. Lorsque les utilisateurs ajoutent de nouvelles entrées, cela se traduit généralement, tôt ou tard, par une allocation de mémoire.

« Pendant le développement de quasardb, nous nous sommes rendu compte que l’allocateur système par défaut pouvait causer des litiges. » Explique Alligand. « L’utilisation de l’allocateur efficace et évolutif d’Intel TBB permettrait d’augmenter jusqu’à 100 % les performances des opérations de mise à jour « 

DES VERROUS LÉGERS

Bien que les structures concurrentes fournies par Intel TBB utilisent parfois des verrous légers en interne, cet outil s’est révélé très efficace pour réduire la latence lorsqu’un thread doit accéder à une ressource partagée. Si l’on utilise des Mutex plus lourds comme celui fourni par la bibliothèque standard, il y a le risque de perdre le reste du quantum du thread, et donc d’un changement de contexte.

Lorsque le verrou est maintenu pendant une courte période et que la contention est rare, c’est en fait un moyen extrêmement efficace d’obtenir une évolutivité tout en ayant un code facile à prévoir et à comprendre. » explique M. Alligand.

DES PERFORMANCES DE PREMIÈRE CLASSE

Intel TBB a permis à quasardb d’offrir des performances de premier ordre et de tirer parti des dernières innovations technologiques Intel. La riche boîte à outils d’Intel TBB a permis à quasardb d’atteindre des performances de haut niveau. L’utilisation d’Intel TBB avec quasardb peut atteindre des taux soutenus supérieurs à 100 GBit/s, (validé avec Cisco).

« Lorsque vous travaillez sur un produit comme quasardb, » dit Alligand, « les briques fondamentales prennent un temps relativement long à se mettre en place. Intel TBB nous a fait économiser quasiment un an de temps de développement. »