Qu’est-ce que la persistance des données et pourquoi est-ce important ?
Comprendre ce que signifie la persistance est important pour évaluer différents systèmes de data store. Étant donné l’importance du data store dans la plupart des applications modernes, un choix mal avisé peut entraîner une indisponibilité majeure ou une perte de données. Dans cet article, nous aborderons la persistance et les stratégies de conception des data store, et donnerons des informations contextuelles dans le cadre de Cassandra.
Si vous voulez en savoir plus sur la persistance dans Cassandra et d’autres bases de données NoSQL, consultez notre guide complet de NoSQL.
Qu’est-ce que la persistance des données ?
La persistance est le « maintien d’un effet après que sa cause a été supprimée ». Dans le contexte du stockage de données dans un système informatique, cela signifie que les données perdurent au-delà de la fin du processus avec lequel elles ont été créées. En d’autres termes, pour qu’un data store soit considéré comme persistant, l’écriture doit s’effectuer sur une mémoire non volatile.
Quels sont les data store qui offrent la persistance ?
Si vous avez besoin de persistance dans votre data store, vous devez aussi comprendre les quatre stratégies de conception principales qu’un data store peut adopter et comment (ou si) ces conceptions offrent la persistance :
- 100 % in-memory, aucune persistance, par exemple memcached ou Scalaris
- In-memory avec des instantanés périodiques, par exemple Oracle Coherence ou Redis
- Sur disque avec écritures update-in-place, par exemple MySQL ISAM ou MongoDB
- Basé sur commitlog, par exemple toutes les bases de données OLTP traditionnelles (Oracle, SQL Server, etc.)
Les approches in-memory peuvent atteindre une vitesse fulgurante, mais elles ont un prix : la limitation à un ensemble de données relativement petit. La plupart des charges de travail ont un sous-ensemble actif relativement petit du total des données ; les systèmes qui nécessitent que la totalité de l’ensemble de données tienne en mémoire plutôt que seulement la partie active conviennent pour les caches, mais pas pour la majorité des autres applications. Comme les données sont uniquement en mémoire, elles ne survivront pas à la fin du processus. Par conséquent, ces types de data store ne sont pas considérés comme persistants.
Ajouter de la persistance aux systèmes
La manière la plus facile d’ajouter de la persistance à un système in-memory est de pratiquer des instantanés périodiques vers un disque à un intervalle configurable. Vous pouvez donc perdre au maximum toutes les mises à jour effectuées durant cet intervalle.
Les systèmes update-in-place et basés sur commitlog stockent immédiatement vers une mémoire non volatile, mais seule la persistance basée sur commitlog fournit la durabilité (le D de ACID), chaque écriture étant persistée avant que le succès soit retourné au client.
Cassandra présente une conception de la persistance basée sur commitlog, mais offre en même temps des niveaux variables de durabilité. Cela vous permet de décider du bon compromis entre sécurité et performance. Pour chaque opération d’écriture, vous pouvez choisir d’attendre que cette mise à jour soit :
- mise en mémoire tampon
- écrite sur le disque d’une seule machine
- écrite sur le disque de plusieurs machines
- écrite sur le disque de plusieurs machines dans différents datacenters
Ou vous pouvez choisir d’accepter les écritures aussi vite que possible et d’accuser réception immédiatement avant même qu’elles aient été entièrement désérialisées du réseau.
Pourquoi la persistance des données est importante
Au final, vous seul décidez du bon compromis entre performance et durabilité pour vos données. Faire un choix technologique éclairé en matière de data store est essentiel pour établir ce compromis en fonction de vos besoins. Étant donné que Cassandra offre une telle flexibilité, c’est un choix logique pour les systèmes qui nécessitent un data store durable et performant.