La prochaine version du système de gestion de base de données relationnelle de Microsoft, SQL Server 2014 attendue la fin de l'année, promet d'apporter d'immenses gains en performance pour les systèmes de traitement des transactions en ligne. SQL Server 2014 se dote d'un moteur OLTP in-memory basé sur la technologie Hekaton développée à l'origine par Microsoft Research. « Nous avons fait en sorte que le travail de traitement transactionnel soit réalisé directement dans la base de données. Ce n'est pas un produit distinct et il n'y a pas de processus à programmer », a déclaré Quentin Clark, vice-président corporate de SQL Server. Celui-ci s'exprimait pendant la keynote qui a précédé l'annonce du lancement de SQL Server 2014 lors de la conférence Microsoft TechEd North America qui se tient du 3 au 6 juin à la Nouvelle-Orléans. « Ce choix technologique nous permet d'atteindre un niveau de latence extrêmement bas et d'obtenir un débit très élevé pour les données transactionnelles », a-t-il ajouté.

Microsoft présente Hekaton comme une technologie in-memory, mais contrairement à d'autres magasins de données in-memory comme TimesTen d'Oracle ou HANA de SAP (en fonction des applications), celle-ci n'installe pas la totalité de la base de données dans la RAM de travail pour accélérer les performances. En effet, Hekaton sélectionne uniquement les tables de bases de données les plus consultées en mémoire. « Selon les tests menés dans les laboratoires de Microsoft, Hekaton réduit les temps de transaction de 50 fois, et les clients qui ont essayé les premières versions de la technologie ont constaté une amélioration x16 de la performance », a déclaré Eron Kelly, directeur général de Microsoft SQL Server, dans un entretien avec IDG News Service. « En plus d'accélérer la performance du système transactionnel, SQL Server 2014 pourrait également permettre de réduire les coûts en matériel. Du fait de leur efficacité, ces nouvelles technologies pourraient permettre de réduire les besoins en capacité de calcul, ou en nombre de serveurs, pour exécuter une charge de travail donnée », a déclaré le DG de SQL Server.

Analyse et déplacement des données dans la mémoire


En général, chaque fois qu'un système OLTP effectue une transaction, par exemple confirmer une commande auprès d'une agence de voyages, les résultats sont écrits vers, ou lus à partir d'une rangée de données dans une table de base de données résidant sur un disque dur. Les systèmes OLTP pourraient faire la même chose beaucoup plus rapidement si les tables de données étaient stockées dans la mémoire de travail d'un serveur. Cependant, pour plupart des systèmes OLTP commerciaux, le coût du stockage de toutes les tables dans la mémoire de travail serait prohibitif. Pour accélérer ce fameux temps de transaction, Hekaton fait, entre autres choses, une utilisation plus judicieuse de la mémoire. « Hekaton déplace les données chaudes, ou les données qui génèrent beaucoup de lectures et écritures, dans la mémoire de travail d'un serveur. Pour activer le mode in-memory, l'administrateur de la base de données utilise une application de diagnostic que surveille l'usage des données de la table et identifie celles qui mériteraient d'être installées dans la mémoire vive du serveur », a expliqué Eron Kelly.

Le système maintient l'intégrité transactionnelle, c'est-à-dire qu'il garantit que chaque fois qu'une transaction est achevée, elle est sauvegardée, même en cas de panne du système - puisque les transactions sont inscrites dans un fichier de log séparé. Hekaton scrute aussi les procédures ou les requêtes stockées pour repérer celles qui gagneraient à être optimisées. Le logiciel est capable d'identifier les procédures qui sont très souvent répétées pour les compiler en codes machines, généralement beaucoup plus rapides à exécuter - et nécessitant moins de mémoire - que le code écrit dans des langages complexes comme le SQL lui-même. Hekaton améliore aussi la performance en affinant le processus de verrouillage des tables de base de données pour écrire des données. La plupart du temps, afin d'éviter l'écrasement des transactions intermédiaires par une autre opération, le SGBDR verrouille la page de table à chaque fois qu'une ligne de données doit être mise à jour. Mais les multiples lectures et écritures simultanées sur la table de base de données peuvent entraîner des retards et ralentir les performances.

Une technologie déjà utilisée dans Parallel Data Warehouse


Le moteur OLTP ne verrouille pas les données par page. « Chaque processus peut modifier la ligne de son choix dans la table. Les seuls cas fois où il peut y avoir conflit, c'est quand deux processus veulent modifier la même ligne au même moment », a précisé le directeur général de Microsoft SQL Server. Même les lignes individuelles ne sont pas verrouillées quand elles sont en cours d'écriture. Si cela arrive, le système de gestion de base de données relationnelle écrit la ligne mise à jour dans un nouvel emplacement et ajoute dans la table un pointeur qui renvoie au nouvel emplacement. La ligne peut répondre à toute requête intervenue pendant la mise à jour. Eron Kelly appelle cette technique « la concomitance optimiste ».

Ce n'est pas la première incursion de Microsoft dans les technologies in-memory. Parallel Data Warehouse de Microsoft utilise une technologie similaire pour l'analyse de données à grande échelle et la technologie PowerPivot, introduite dans Excel 2010, fait du traitement en colonnes compressé pour analyser des ensembles de données volumineux en mémoire, une technique que l'on a retrouvée par la suite dans SQL Server 2012. Selon Eron Kelly, les chaînes de distribution pourraient tirer un grand bénéfice de la technologie Hekaton de SQL Server.