Bases de données

L'histoire des bases de données en marche : Ingres rencontre le X100

Emma McGrattan

19 décembre 2017

contexte pour les données de strates new york

Doug Inkster est un membre d'Actian qui a une longue expérience du marché des bases de données. Il a commencé avec IDMS dans les années 1970 et est passé à Ingres dans les années 1990. Nous lui avons demandé de nous rappeler les moments les plus passionnants de sa longue carrière. Voici quelques-unes de ses réflexions :

En plus de 40 ans de travail et de développement de logiciels de gestion de bases de données, l'un des meilleurs jours a été celui où j'ai rencontré Peter Boncz et Marcin Żukowski pour la première fois. J'étais à Redwood City, où je dirigeais l'apprentissage la requête optimizer pour l'équipe d'ingénierie des performances d'Ingres Corp. (aujourd'hui Actian), et Peter et Marcin étaient dans la région de la baie pour donner une conférence à l'université de Stanford.

Dan Koren, directeur de l'ingénierie des performances, les a invités à discuter de la technologie MonetDB/X100, qui était le sujet de la recherche de doctorat de Marcin sous la direction de Peter. Dan était un grand fan de la recherche MonetDB menée en grande partie par Peter au CWI (le centre de recherche en mathématiques et en informatique financé par le gouvernement néerlandais) à Amsterdam, et X100 était une suite de MonetDB.

La journée a commencé avec nous quatre dans une salle de conférence au siège d'Ingres et Marcin a donné le coup d'envoi avec un aperçu rapide de leur présentation à Stanford. Peter et Marcin ont expérimenté en comparant une variété de SGBD de stockage en ligne exécutant la première requête du benchmark TPC H à un programme C écrit à la main équivalent à la même requête. Le programme écrit à la main était beaucoup plus rapide que le SGBD le plus rapide et a donné naissance au projet de recherche X100 (ainsi nommé en raison de leur objectif "modeste" de battre les performances actuelles des bases de données par un facteur de 100).

Graphique de performance du X100

Leurs recherches ont rapidement permis de conclure que la complexité des "row stores" ne se limitait pas uniquement à leur représentation sur disque. Le traitement des données des magasins de rangées une fois dans la mémoire d'un serveur de base de données est encore très complexe. La complexité du code défie les tentatives des caches de tirer parti de la localité et de l'exécution des instructions dans l'ordre. En fait, certains magasins de colonnes souffrent des mêmes problèmes de traitement en convertissant le format du magasin de colonnes en lignes une fois que les données se trouvent dans la mémoire du serveur. L'adressage des colonnes en question, puis l'exécution des opérations cellule par cellule consomment de nombreux cycles machine.

Ils avaient déjà abordé certains des problèmes avec MonetDB, mais celui-ci restait limité par des questions de complexité de requête et d'évolutivité. X100 a introduit l'idée de traiter des "vecteurs" de données de colonnes en une seule fois et de les streaming d'un opérateur à l'autre. Plutôt que de calculer des expressions sur les colonnes d'une ligne à la fois, ou de comparer les valeurs des colonnes d'une seule ligne à la fois, le moteur d'exécution X100 traite les opérateurs sur des vecteurs de valeurs de colonnes avec une seule invocation des routines de traitement des expressions. Les routines prennent les vecteurs comme paramètres et consistent en de simples boucles pour traiter toutes les valeurs des vecteurs fournis. Ce type de code se compile très bien dans les architectures informatiques modernes, en tirant parti de la mise en pipeline des boucles, en bénéficiant de la localité de référence et, dans certains cas, en introduisant des instructions SIMD instruction unique, données multiples) qui peuvent opérer sur toutes les valeurs du vecteur d'entrée en même temps.

Le résultat était la réduction simultanée des instructions par tuple et des cycles par instruction, conduisant à une amélioration massive des performances. Je me souvenais des vieux ordinateurs scientifiques des années 1970 (CDC, Cray, etc.), qui avaient également la capacité d'exécuter simultanément certaines instructions sur des vecteurs de données. Mais à l'époque, ces techniques étaient réservées à des traitements scientifiques très pointus - prévisions météorologiques, etc. Même la réintroduction moderne de ces caractéristiques matérielles était davantage orientée vers les applications multimédias et les jeux informatiques. Le fait que Peter et Marcin les aient exploitées pour résoudre d'anciens problèmes de traitement de bases de données était brillant !

Bien entendu, leurs recherches ne se limitaient pas à cela. L'idée d'utiliser la hiérarchie de la mémoire - du disque à la mémoire principale et à la mémoire cache - de la manière la plus efficace possible est un élément majeur de X100. Les données sont compressées (légèrement) sur le disque et ne sont décompressées que lorsque les vecteurs de valeurs sont prêts à être traités. La taille des vecteurs est optimisée pour équilibrer le débit d'E/S et la capacité de la mémoire cache. Mais pour moi, l'excitation (et l'amusement en même temps) était de voir qu'un matériel conçu pour regarder des films streaming et jouer à Minecraft pouvait être utilisé aussi efficacement dans une application commerciale aussi fondamentale que la gestion de bases de données.

L'adoption ultérieure de la technologie X100 par Ingres a rapidement conduit à des performances TPC H enregistrement (fracassantes, plutôt) et à quelques-unes des années les plus agréables de ma carrière professionnelle.

Remarque : Ingres est toujours un SGBDR populaire orienté ligne qui prend en charge les applications critiques, tandis que X100 offre des performances de requête pointe dans la base de données analytique Actian Vector et la base de données hybride Actian X, une combinaison des technologies Ingres et X100 capable de gérer à la fois des tables basées sur des lignes et des tables basées sur des colonnes.

blog d'emma mcgrattan

À propos d'Emma McGrattan

Emma McGrattan est directrice technique chez Actian, où elle dirige la R&D mondiale dans les domaines de l'analyse de de haute performance , de la gestion des données et de l'intégration. Depuis plus de vingt ans chez Actian, Emma détient plusieurs brevets dans le domaine des technologies de données et a joué un rôle déterminant dans l'innovation pour les applications critiques. Elle est une autorité reconnue, intervenant fréquemment lors de conférences de l'industrie telles que Strata Data, et elle a publié des articles techniques sur l'analytique moderne. Dans les articles qu'elle publie sur le blogue d'Actian, Emma aborde l'optimisation des performances, les architectures de nuages hybrides et les stratégies d'analytique avancée . Découvrez ses meilleurs articles pour une réussite basée sur les données.