Является программное обеспечение Транзакционной Памятью то же как транзакции базы данных?

Я считал много о программном обеспечении Транзакционную Память, особенно относительно Haskell, но я пытаюсь изобразить, как это отличается от транзакций базы данных? Есть ли некоторые преимущества, которые я не понимаю с STM?

6
задан Don Stewart 4 May 2011 в 16:29
поделиться

3 ответа

Идея «транзакции» в программной транзакционной памяти явно заимствована из баз данных. Разница в том, где реализуются транзакции и как они используются.

STM - это концепция уровня языка: последовательность операций не вступает в силу до тех пор, пока транзакция не будет зафиксирована. Обычно это означает, что значения некоторых глобальных / общих переменных изменяются только при успешном завершении транзакции. Свойство обеспечивается языковой средой выполнения. Не существует неотъемлемого понятия постоянства: переменные, участвующие в транзакции, могут быть чисто динамическими по своей природе (например, размер рабочей очереди).

Транзакции базы данных являются концепцией уровня приложения: последовательность операций с данными не вступает в силу до тех пор, пока транзакция не будет зафиксирована. Поскольку это база данных, постоянство имеет фундаментальное значение: смысл «вступления в силу» внутри базы данных заключается в том, что данные сохраняются в некотором постоянном хранилище.

Вы потенциально можете использовать базу данных и транзакции базы данных для реализации алгоритма в стиле STM, но вы потеряете легкость и удобство (и, вероятно, в большинстве случаев производительность) реализации на уровне языка.

5
ответ дан 10 December 2019 в 00:36
поделиться

Транзакция STM имеет много общего с транзакцией базы данных . В частности, из свойств ACID, важных для разработчиков баз данных, STM обеспечивает атомарность и изоляцию. Однако согласованность зависит от программиста - например, вы можете писать транзакции STM, которые нарушают инварианты внутренних структур данных. Наконец, транзакции STM обычно не являются долговременными; результаты хранятся в энергозависимой оперативной памяти, и если машина выйдет из строя после успешной транзакции, результаты могут быть потеряны. На мой взгляд, это, вероятно, наиболее существенное различие между транзакцией STM и транзакцией базы данных.

4
ответ дан 10 December 2019 в 00:36
поделиться

STM в основном используется для параллелизма, в то время как транзакции базы данных связаны с согласованностью данных.

1
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: