Question

Serait-ce une bonne idée d’utiliser Terracotta comme solution de persistance (remplacement d’une base de données)? Je m'interroge en particulier sur les problèmes d'intégrité des données et le support des systèmes transactionnels.

Était-ce utile?

La solution

La terre cuite est transactionnelle (blocs synchronisés transactions de forme d'objets modifiés) mais n'est pas et ne veut pas être conforme à JTA. Il existe une discussion assez longue sur les transactions et certaines idées fausses sur Terracotta ici .

J'ai écrit un article sur la durée de vie des données et comment cela devrait encadrer votre réflexion sur l'identification des opportunités d'utilisation de Terracotta. En résumé, le point fort de Terracotta est le cas d'utilisation où vous avez besoin de persistance et de disponibilité (votre application peut se bloquer, mais vous avez toujours besoin des données) mais où les données ne sont pas nécessairement critiques à long terme.

Un exemple canonique est l’importance des données dans le contexte d’une session utilisateur dans une application Web, telles que les informations sur le panier d’achat. Vous souhaitez conserver ces données de manière à ce que votre application Web se bloque, vous maintenez le panier. Mais le panier lui-même peut ou peut ne jamais être acheté. Donc, vous le stockez dans Terracotta jusqu'à son achat, puis vous l'enregistrez dans la base de données sous le nom de "système d'enregistrement". Les données.

Historiquement, les données que vous avez stockées dans une base de données étaient toujours "système d'enregistrement". des données essentielles au succès à long terme de votre entreprise: clients, commandes, etc. Avec l'actuel " apatride " architectures (qui ne sont vraiment pas sans état), nous transmettons toutes les données à moyen terme à la base de données. Cela signifie que nous punissons inutilement notre base de données (avec davantage de travail et de stockage) et nos développeurs (qui doivent gérer le déséquilibre impédance relation-objet, même si vous utilisez ORM). Une meilleure approche consiste à le laisser dans des objets et à le regrouper avec Terracotta. Un certain nombre d'utilisateurs récents de Terracotta ont utilisé cette technique pour réduire considérablement l'empreinte de leur base de données (leur permettant d'économiser des millions de dollars) tout en augmentant simultanément leur capacité à évoluer.

Il y a la question du point d'intégration avec la base de données et comment effectuer le transfert de manière fiable. Nous avons considéré cela comme un cas d'utilisation de la Examinator récemment publiée (une application Web de référence Spring / Terracotta / Tomcat / MySql). . Lorsque les examens sont en cours, l’état (réponses aux questions, ordre de choix aléatoire, questions marquées pour examen) est stocké dans Terracotta. Mais lorsque les examens sont terminés, le résultat est calculé et stocké à long terme dans la base de données.

Pour le faire en toute sécurité, nous utilisons une stratégie de clé Hibernate qui génère d'abord l'identifiant de la ligne de base de données dans l'objet dans Terracotta, puis enregistre les données dans la base de données, puis les supprime de Terracotta. Ce scénario a une condition de concurrence potentielle si l'application se bloque après l'enregistrement dans la base de données mais avant la suppression de Terracotta. Dans ce cas, l'application pourrait essayer de réenregistrer les données sur la base de données, en créant éventuellement deux lignes. Mais en raison de l'ID pré-généré, nous pouvons savoir si la ligne a déjà été écrite avec succès et éviter ce problème.

En résumé, je ne pense pas que Terracotta remplacera bientôt votre base de données. C'est trop nouveau sur le plan opérationnel pour même être considéré comme tel dans la plupart des magasins. Le modèle d'utilisation est très différent. Il n'y a pas de requête ni de capacité SQL dans le tas (votre capacité de requête est définie par votre modèle d'objet). Je pense que cela peut et commence à remplacer l'utilisation de données à moyen terme, qui est une alternative beaucoup moins chère et plus facile. Cependant, certaines personnes commencent à en faire l'expérience pour le stockage à long terme.

Autres conseils

La terre cuite n’est que Java. Si vous pouvez être bloqué dans cette technologie sans avoir la possibilité d'écrire des scripts (sans la machine virtuelle Java) dans d'autres langues, n'hésitez pas.

L'article Tuer votre base de données avec Terracotta était vraiment sympa.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top