Aujourd’hui, dans le monde de l’entreprise, l’exigence de rapidité est omniprésente.
Les clients veulent un accès instantané, une visibilité en temps réel, une personnalisation à l’achat et des livraisons le jour même. Zéro attente et zéro tolérance s’il faut redonner des informations personnelles dont l’entreprise est déjà censée disposer.
Il n’est donc pas étonnant que les bases de données en mémoire et les mémoires caches remportent un énorme succès auprès des entreprises dans de nombreux secteurs. En déportant les données en mémoire cache sur des bases de données en mémoire, celles-ci deviennent plus rapides et agiles, comparables à des motos. En revanche, la plupart des bases de données sur disque classique sont comme des poids lourds, robustes et résistants, capables de traiter des charges de travail avec fiabilité et à grande échelle, mais incapables d’atteindre les mêmes niveaux de performance.
La haute performance des bases de données en mémoire a toutefois un coût.
Un coût total de possession plus élevé
Avec les bases de données en mémoire, fini le stockage permanent des données. Les entreprises doivent donc acquérir et prévoir suffisamment de mémoire pour l’ensemble de leurs données, avec suffisamment de mémoire supplémentaire pour ingérer de nouvelles données, traiter les tâches analytiques et retourner les résultats des requêtes.
Une scalabilité strictement limitée
Les données et les requêtes — en particulier celles qui requièrent de grandes capacités d’analyse — sont susceptibles de consommer toute la mémoire disponible, particulièrement pour les applications qui connaissent une croissance rapide ou une volatilité inattendue. Lorsque la mémoire disponible est épuisée, l’application s’arrête et les serveurs peuvent lâcher.
Des retards de redémarrage
Avec les bases de données en mémoire, le contenu de la mémoire est périodiquement écrit dans des fichiers de contrôle ; et toutes les données suivantes sont inscrites dans des fichiers journaux à écriture anticipée (WAL). Lorsque la mémoire est épuisée et que des arrêts surviennent, la reconstruction de l’état « in-process » à partir de ces fichiers peut prendre des heures. Sur les applications stratégiques, les temps d’arrêt peuvent avoir des conséquences dévastatrices pour l’entreprise. Conserver des copies superflues des données en production peut s’avérer être une possibilité, mais cela augmente davantage le coût total de possession.
Et les caches en mémoire ?
Une autre approche quelque peu similaire consiste à utiliser un cache en mémoire entre une base de données persistante et les serveurs d’application, afin de préserver la disponibilité des données récemment utilisées pour garantir un accès rapide. Cette approche cumule toutes les faiblesses des bases de données en mémoire, auxquelles s’ajoute une plus grande complexité architecturale et applicative, une latence réseau accrue, et des coûts CPU plus élevés associés à la conversion des données entre les différentes structures dans le cache et la couche applicative.
De fait, un groupe d’ingénieurs travaillant chez Google et à l’Université de Stanford a récemment publié un article scientifique consacré à cette approche architecturale. On y lit que « l’époque [du stockage distant de données clé-valeur en mémoire] est révolue : les API indépendantes du domaine (ex. : PUT/GET) repoussent la complexité vers l’application, ce qui conduit à augmenter les coûts de sérialisation/désérialisation et les sauts de réseau. »
Une technologie de plate-forme de données moderne offre le meilleur des deux mondes : elle apporte tous les avantages des technologies en mémoire en termes de performance, et ce sans aucune de leurs contraintes.
Pour en savoir plus sur InterSystems IRIS