Задача против транзакции - какая практическая разница?

Есть ли практическая разница между термином "задача" и "транзакция" в разработке программного обеспечения?

Небольшой веб-поиск дает результаты, которые слишком специфичны для CICS. Хотя моя область интересов связана с системами управления базами данных (графовые базы данных, объектные базы данных и т. Д.), Чем шире применим ответ, тем лучше.

1 ответ

Решение

Термин "задача" широко применим к ряду концепций в разработке программного обеспечения, следуя лишь нескольким из его значений:

  1. На самом высоком уровне задача - это то, что нужно сделать.
  2. В параллельном программировании задачи обычно являются единицами выполнения. Будь то процесс, поток или что-то в пакетной работе.
  3. Определенные структуры могут использовать термин даже более специализированный. Например, в Seaside Web Framework (написанном на Smalltalk) задачей является (грубо говоря) веб-сайт, который ведет себя как мастер в настольных компьютерах.

С другой стороны, термин "транзакция" почти всегда передает семантику своей базы данных (за исключением специфического для домена значения, конечно, например, финансовых транзакций в бухгалтерском программном обеспечении). Следовательно, транзакция обычно может быть запущена, зафиксирована и прервана, а иногда перезапущена.

Транзакции могут быть использованы для параллельного программирования, как задача в смысле (2). Типичным примером этого является программная транзакционная память, где это поведение является явным. GemStone/S OODB это именно то, что: База данных, которая в то же время является программной реализацией транзакционной памяти. Здесь задача и транзакция практически совпадают.

По опыту из рабочего домена.

1. Транзакция. Представляет последовательность задач (определяемую рабочим процессом), которая приводит к определенному конечному результату.

2. Задача. Представляет этап конкретной транзакции. Транзакция считается завершенной только после выполнения всех задач транзакции.

3. Рабочий процесс. Определяет последовательность задач, которые необходимо выполнить для завершения конкретной транзакции.