Question

Je l'ai lu beaucoup sur le logiciel transactionnelles mémoire, en particulier en ce qui concerne Haskell mais je suis en train de comprendre comment il est différent des transactions de base de données? Y a-t-il des avantages que je ne comprends pas STM?

Était-ce utile?

La solution

L'idée d'une « transaction » dans le logiciel mémoire transactionnelle est explicitement emprunté à des bases de données. La différence est l'endroit où les transactions sont mises en œuvre et la façon dont ils sont utilisés.

STM est un concept de niveau de langue: une séquence d'opérations ne prend pas effet jusqu'à ce qu'une transaction soit validée. En règle générale, cela signifie que les valeurs de certaines variables globales / partagées ne changent que lorsqu'une transaction réussit. La propriété est appliquée par le moteur d'exécution de la langue. Il n'y a pas de notion inhérente de la persistance:. Les variables impliquées dans une transaction peuvent être de nature purement dynamique (par exemple, la taille d'une file d'attente de travail)

transactions de base de données sont un concept de niveau d'application: une séquence d'opérations de données ne prennent pas effet avant que la transaction est validée. Comme il s'agit d'une base de données, la persistance est fondamentale:. Sens de « prendre effet » à l'intérieur d'une base de données est que les données sont enregistrées dans une mémoire persistante

Vous pouvez éventuellement utiliser une transaction de base de données et base de données pour mettre en œuvre un algorithme de type STM, mais vous perdriez la facilité et la commodité (et probablement dans la plupart des cas, la performance) d'une mise en œuvre au niveau de la langue.

Autres conseils

Une transaction STM a beaucoup en commun avec une transaction de base de données . En particulier, des propriétés ACID importantes pour les concepteurs de bases de données, STM fournit atomicité et isolement. Cependant, la cohérence est au programmeur-vous pouvez écrire des transactions STM qui violent les invariants de structures de données internes, par exemple. Enfin, les transactions STM ne sont généralement pas durable; les résultats sont stockés dans la mémoire vive volatile, et si la machine tombe en panne après une transaction réussie, les résultats peuvent être perdus. Que, dans mon esprit, est sans doute la différence la plus saillante entre une transaction STM et une transaction de base de données.

STM est principalement utilisé pour la concurrence, alors que les transactions de base de données sont sur la cohérence des données.

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