Главная страница
Навигация по странице:

  • Распределенные транзакции

  • Архитектура распределенных систем программного обеспечения. Учебное пособие издано при поддержке образовательной программы Формирование


    Скачать 1 Mb.
    НазваниеУчебное пособие издано при поддержке образовательной программы Формирование
    АнкорАрхитектура распределенных систем программного обеспечения
    Дата13.01.2023
    Размер1 Mb.
    Формат файлаdocx
    Имя файлаmdwrbook.docx
    ТипУчебное пособие
    #885216
    страница7 из 36
    1   2   3   4   5   6   7   8   9   10   ...   36

    Транзакционное взаимодействие


    1. Свойстватранзакционноговзаимодействия

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

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

    Ключевой является возможность отката ситуации к исходному состоянию при невозможности совершить транзакцию. Для программирования транзакций создаются специальные приемы и разрабатываются системные примитивы, которые могут поддерживаться как базовой операционной системой, так и дополнительными программными системами (транзакционными мониторами). Список примитивов зависит от используемых в транзакциях объектов, и в разных системах эти примитивы разные. Однако практически во всех системах

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

    Чтобы транзакции действительно выполняли свою роль, они должны:

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

    • быть непротиворечивыми (Consistent). Непротиворечивость есть

    соблюдение инвариантов системы. Для каждой системы такие инварианты свои, например, в банковских системах инвариантом служит общая сумма вложенных средств. Никакая внутренняя операция (не затрагивающая кассу) не меняет общую сумму средств в банке;

    • быть изолированными (Isolated). Изолированность или сериализуемость

    – это отсутствие влияния на параллельно выполняемые транзакции. Если какие-либо транзакции выполняются параллельно, итог будет таким же, как если бы все транзакции выполнялись последовательно в некотором (задаваемом системой) порядке;

    • быть долговечными (Durable). Никакие сбои после завершения

    операции не могут привести к отмене результатов транзакции.

    В совокупности все эти свойства объединяют термином ACID. К наиболее важным видам транзакций можно отнести транзакции плоские, составные и распределенные.

    Плоские транзакциив полной мере обладают свойствами ACID. Это наиболее простой и наиболее часто используемый тип транзакции. Однако плоские транзакции имеют ограничения, в частности, они не могут иметь частичного результата в случае завершения или прерывания.

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

    Составные транзакции не в полной мере обладают свойствами ACID. Например, свойство долговечности применимо только к транзакциям самого верхнего уровня (результаты вложенных транзакций могут быть отменены, если не сможет быть выполнена какая-либо из других вложенных транзакций). Вложенные транзакции требуют серьезного подхода к администрированию. Семантика такого администрирования такова: в начале любой транзакции создается копия данных всей системы. Если транзакция прерывается, копия просто уничтожается, если она завершается успешно, ее внутренняя копия заменяет внешнюю и так далее.




    Рис.2.9.Составнаяивложенныетранзакции(а)ираспределеннаятранзакция (б).

    Вложенные транзакции делят исходную транзакцию логически, а логическое разделение транзакций не обязательно означает распределенности. Распределенные транзакциипредставляют собой плоские неделимые транзакции, работающие с распределенными данными (Рис. 2.9).
        1. 1   2   3   4   5   6   7   8   9   10   ...   36


    написать администратору сайта