Что такое транзакция в информатике
Перейти к содержимому

Что такое транзакция в информатике

  • автор:

Транзакция (информатика)

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

Различают последовательные (обычные), параллельные и распределённые транзакции. Распределённые транзакции подразумевают использование больше чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также, в некоторых системах реализованы автономные транзакции, или под-транзакции, которые являются автономной частью родительской транзакции.

Пример транзакции

Пример: необходимо перевести с банковского счёта номер 5 на счёт номер 7 сумму в 10 денежных единиц. Этого можно достичь, к примеру, приведённой последовательностью действий:

  • Начать транзакцию
  • Окончить транзакцию

Эти действия представляют собой логическую единицу работы «перевод суммы между счетами», и таким образом, являются транзакцией. Если прервать данную транзакцию, к примеру, в середине, и не аннулировать все изменения, легко оставить владельца счёта номер 5 без 10 единиц, тогда как владелец счета номер 7 их не получит.

Свойства транзакций

Основная статья: ACID

Одним из наиболее распространённых наборов требований к транзакциям и транзакционным системам является набор ACID (Atomicity, Consistency, Isolation, Durability). Вместе с тем, существуют специализированные системы с ослабленными транзакционными свойствами [1] .

Уровни изоляции транзакций

В идеале транзакции разных пользователей должны выполняться так, чтобы создавалась иллюзия, что пользователь текущей транзакции — единственный. Однако в реальности, по соображениям производительности и для выполнения некоторых специальных задач, СУБД предоставляют различные уровни изоляции транзакций. Уровни описаны в порядке увеличения изоляции транзакций и надёжности работы с данными

  • 0 — Неподтверждённое чтение (Read Uncommitted, Dirty Read, грязное чтение) — чтение незафиксированных изменений своей транзакции и параллельных транзакций, возможны нечистые, неповторяемые чтения и фантомы
  • 1 — Подтверждённое чтение (Read Committed) — чтение всех изменений своей транзакции и зафиксированных изменений параллельных транзакций, нечистые чтения невозможны, возможны неповторяемые чтения и фантомы;
  • 2 — Повторяемое чтение (Repeatable Read, Snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые параллельными транзакциями после начала своей, недоступны, нечистые и неповторяемые чтения невозможны, возможны фантомы;
  • 3 — Упорядоченный — (Serializable, сериализуемый) — упорядоченные (сериализуемые) транзакции. Идентичен ситуации, при которой транзакции выполняются строго последовательно, одна после другой, то есть результат действия которых не зависит от порядка выполнения шагов транзакции (запрещено чтение всех данных, изменённых с начала транзакции, в том числе и своей транзакцией). Фантомы невозможны.

Чем выше уровень изоляции, тем больше требуется ресурсов, чтобы их поддерживать.

В СУБД уровень изоляции транзакций можно выбрать как для всех транзакций сразу, так и для одной конкретной транзакции. По умолчанию в большинстве баз данных используется уровень 1 (Read Committed). Уровень 0 используется в основном для отслеживания изменений длительных транзакций или для чтения редко изменяемых данных. Уровни 2 и 3 используются при повышенных требованиях к изолированности транзакций.

Реализация

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

Первые коммерческие СУБД (к примеру, IBM DB2), пользовались исключительно блокировкой доступа к данным для обеспечения свойств ACID. Но большое количество блокировок приводит к существенному уменьшению производительности. Есть два популярных семейства решений этой проблемы, которые снижают количество блокировок:

  • Журнализация изменений (write ahead logging, WAL)
  • механизм теневых страниц (shadow paging) [2] .

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

При упреждающей журнализации, используемой в Sybase и MS SQL Server до версии 2005, все изменения записываются в журнал, и только после успешного завершения — в базу данных. Это позволяет СУБД вернуться в рабочее состояние после неожиданного падения системы. Теневые страницы содержат копии тех страниц базы данных на начало транзакции, в которых происходят изменения. Эти копии активизируются после успешного завершения. Хотя теневые страницы легче реализуются, упреждающая журнализация более эффективна [3]

Дальнейшее развитие технологий управления базами данных привело к появлению безблокировочных технологий. Идея контроля за параллельным доступом с помощью временных меток (timestamp-based concurrency control) была развита и привела к появлению многоверсионной архитектуры MVCC. Эти технологии не нуждаются ни в журнализации изменений, ни в теневых страницах. Архитектура, реализованная в Oracle 7.х и выше, записывает старые версии страниц в специальный сегмент отката, но они все ещё доступны для чтения. Если транзакция при чтении попадает на страницу, временная метка которой новее начала чтения, данные берутся из сегмента отката (то есть используется «старая» версия). Для поддержки такой работы ведётся журнал транзакций, но в отличие от «упреждающей журнализации», он не содержит данных. Работа с ним состоит из трёх логических шагов:

  1. Записать намерение произвести некоторые операции
  2. Выполнить задание, копируя оригиналы изменяемых страниц в сегмент отката
  3. Записать, что всё сделано без ошибок

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

  • Если повреждена запись, то сбой произошёл во время проставления отметки в журнале. Значит, ничего важного не потерялось, игнорируем эту ошибку.
  • Если все записи помечены как успешно выполненные, то сбой произошёл между транзакциями, здесь также нет потерь.
  • Если в журнале есть незавершённая транзакция, то сбой произошёл во время записи на диск. В этом случае мы восстанавливаем старую версию данных из сегмента отката.

Firebird вообще не имеет ни журнала изменений, ни сегмента отката, а реализует MVCC, записывая новые версии строк таблиц прямо в активное пространство данных. Так же поступает MS SQL 2005. Теоретически это даёт максимальную эффективность при параллельной работе с данными, но ценой является необходимость «сборки мусора», то есть удаления старых и уже не нужных версий данных.

См. также

В Викисловаре есть статья «транзакция»

  • Транзакционная система
  • ACID
  • Атомарные операции

Примечания

  1. Advanced Transaction Models and Architectures (англ.)
  2. Семейство алгоритмов ARIES
  3. Gray, J., McJones, P., Blasgen, M., Lindsay, B., Lorie, R., Price, T., Putzolu, F., and Traiger, I. The recovery manager of the System R database manager. ACM Comput. Surv. 13, 2 (June 1981).

Транзакция информатика У этого термина существуют и другие значения см Транзакция значения Транза кция англ transaction

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

Различают последовательные (обычные), параллельные и распределённые транзакции. Распределённые транзакции подразумевают использование более чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также в некоторых системах реализованы автономные транзакции, или подтранзакции, которые являются автономной частью родительской транзакции.

Пример транзакции Править

Пример: необходимо перевести с банковского счёта номер 5 на счёт номер 7 сумму в 10 денежных единиц. Этого можно достичь, к примеру, приведённой последовательностью действий:

  1. Прочесть баланс на счету номер 5.
  2. Уменьшить баланс на 10 денежных единиц.
  3. Сохранить новый баланс счёта номер 5.
  4. Прочесть баланс на счету номер 7.
  5. Увеличить баланс на 10 денежных единиц.
  6. Сохранить новый баланс счёта номер 7.

Эти действия представляют собой логическую единицу работы «перевод суммы между счетами», и таким образом, являются транзакцией. Если прервать данную транзакцию, к примеру, в середине, и не аннулировать все изменения, легко оставить владельца счёта номер 5 без 10 единиц, тогда как владелец счета номер 7 их не получит.

Свойства транзакций Править

Основная статья: ACID

Одним из наиболее распространённых наборов требований к транзакциям и транзакционным системам является набор ACID (Atomicity, Consistency, Isolation, Durability). Требования ACID были в основном сформулированы в конце 1970-х годов Джимом Греем. Вместе с тем существуют специализированные системы с ослабленными транзакционными свойствами.

Уровни изоляции транзакций Править

Основная статья: Уровни изолированности транзакций

В идеале транзакции разных пользователей должны выполняться так, чтобы создавалась иллюзия, что пользователь текущей транзакции — единственный. Однако в реальности, по соображениям производительности и для выполнения некоторых специальных задач, СУБД предоставляют различные уровни изоляции транзакций.

Уровни описаны в порядке увеличения изолированности транзакций и, соответственно, надёжности работы с данными.

  • 0 — Чтение незафиксированных данных (Read Uncommitted) — чтение незафиксированных изменений как своей транзакции, так и параллельных транзакций. Нет гарантии, что данные, изменённые другими транзакциями, не будут в любой момент изменены в результате их отката, поэтому такое чтение является потенциальным источником ошибок. Невозможны потерянные изменения (lost changes), возможны грязное чтение (dirty read), неповторяемое чтение и фантомы.
  • 1 — Чтение зафиксированных данных (Read Committed) — чтение всех изменений своей транзакции и зафиксированных изменений параллельных транзакций. Потерянные изменения и грязное чтение не допускается, возможны неповторяемое чтение и фантомы.
  • 2 — Повторяемое чтение (Repeatable Read, Snapshot) — чтение всех изменений своей транзакции, любые изменения, внесённые параллельными транзакциями после начала своей, недоступны. Потерянные изменения, грязное и неповторяемое чтение невозможны, возможны фантомы.
  • 3 — Сериализуемый (Serializable) — сериализуемые транзакции. Результат параллельного выполнения сериализуемой транзакции с другими транзакциями должен быть логически эквивалентен результату их какого-либо последовательного выполнения. Проблемы синхронизации не возникают.

Чем выше уровень изоляции, тем больше требуется ресурсов, чтобы его обеспечить. Соответственно, повышение изолированности может приводить к снижению скорости выполнения параллельных транзакций, что является «платой» за повышение надёжности.

В СУБД уровень изоляции транзакций можно выбрать как для всех транзакций сразу, так и для одной конкретной транзакции. По умолчанию в большинстве баз данных используется уровень 1 (Read Committed). Уровень 0 используется в основном для отслеживания изменений длительных транзакций или для чтения редко изменяемых данных. Уровни 2 и 3 используются при повышенных требованиях к изолированности транзакций.

Реализация Править

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

Первые коммерческие СУБД (к примеру, IBM DB2), пользовались исключительно блокировкой доступа к данным для обеспечения свойств ACID. Но большое количество блокировок приводит к существенному уменьшению производительности. Есть два популярных семейства решений этой проблемы, которые снижают количество блокировок:

  • журнализация изменений (write ahead logging, WAL);
  • механизм теневых страниц (shadow paging).

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

При упреждающей журнализации, используемой в Sybase и MS SQL Server до версии 2005, все изменения записываются в журнал, и только после успешного завершения — в базу данных. Это позволяет СУБД вернуться в рабочее состояние после неожиданного падения системы. Теневые страницы содержат копии тех страниц базы данных на начало транзакции, в которых происходят изменения. Эти копии активизируются после успешного завершения. Хотя теневые страницы легче реализуются, упреждающая журнализация более эффективна.

Дальнейшее развитие технологий управления базами данных привело к появлению безблокировочных технологий. Идея контроля над параллельным доступом с помощью временных меток (timestamp-based concurrency control) была развита и привела к появлению многоверсионной архитектуры MVCC. Эти технологии не нуждаются ни в журнализации изменений, ни в теневых страницах. Архитектура, реализованная в Oracle 7.х и выше, записывает старые версии страниц в специальный сегмент отката, но они все ещё доступны для чтения. Если транзакция при чтении попадает на страницу, временная метка которой новее начала чтения, данные берутся из сегмента отката (то есть используется «старая» версия). Для поддержки такой работы ведётся журнал транзакций, но в отличие от «упреждающей журнализации», он не содержит данных. Работа с ним состоит из трёх логических шагов:

  1. Записать намерение произвести некоторые операции
  2. Выполнить задание, копируя оригиналы изменяемых страниц в сегмент отката
  3. Записать, что всё сделано без ошибок

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

  • Если повреждена запись, то сбой произошёл во время проставления отметки в журнале. Значит, ничего важного не потерялось, игнорируем эту ошибку.
  • Если все записи помечены как успешно выполненные, то сбой произошёл между транзакциями, здесь также нет потерь.
  • Если в журнале есть незавершённая транзакция, то сбой произошёл во время записи на диск. В этом случае мы восстанавливаем старую версию данных из сегмента отката.

Firebird вообще не имеет ни журнала изменений, ни сегмента отката, а реализует MVCC, записывая новые версии строк таблиц прямо в активное пространство данных. Так же поступает MS SQL 2005. Теоретически это даёт максимальную эффективность при параллельной работе с данными, но ценой является необходимость «сборки мусора», то есть удаления старых и уже не нужных версий данных.

Обработка транзакций Править

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

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

Обработка транзакций позволяет нескольким отдельным операциям автоматически быть связанными друг с другом, как единая неделимая транзакция. Системы обработки транзакций гарантирует, что либо все операции в транзакции завершены без ошибок, либо ни одна из них. Если некоторые из операций завершены, но с ошибками, а другие без, системы обработки транзакций дает команду на «откат» всех операций транзакции (в том числе удачных), что означает стирание всех следов операции и восстановление системы до согласованного известного состояния, которое было до начала процесса транзакции. Если все операции транзакции завершены успешно, то транзакция фиксируется в системе, и все изменения в базе данных становятся «постоянными» (commited); транзакции не могут быть отменены, если они уже были сделаны.

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

Транзакции оформлены в строгом хронологическом порядке. Если сделка N+1 намерена коснуться той же части базы данных что и транзакция N, транзакция N+1 не начинается до момента совершения транзакции N. До совершения любых транзакций, все остальные транзакции, затрагивающие ту же часть системы, также должны быть завершены; не может быть никаких «дырок» в последовательности предыдущих транзакций.

Методология Править

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

Системы обработки транзакций обеспечивают целостность базы данных при помощи записи промежуточного состояния базы данных перед её изменением, а затем, используя эти записи, восстанавливают базу данных до известного состояния, если транзакция не может быть совершена. Например, копии информации в базе данных до её изменения транзакцией, делаются системой перед транзакцией, которая может сделать любые изменения (иногда это называют before image). Если какая-либо часть транзакции не удается до её совершения, эти копии используются для восстановления базы данных в состояние, в котором она находилась до начала транзакции (Rollback).

Кроме того, можно вести отдельный журнал всех изменений базы данных (иногда это называется after images); это не требует отката неудачных операций, но это полезно для обновления базы данных в случае отказа базы данных, поэтому некоторые системы обработки транзакций обеспечивают эту функцию. Если база данных отказывает совсем, она должна быть восстановлена из последней резервной. Резервные копии не будут отражать операции, совершенные после её создания. Однако, как только будет восстановлена база данных, журнал after images может быть применен к базе данных (rollforward), чтобы привести её в актуальное состояние. Любые транзакции, которые находятся в процессе на момент сбоя, могут быть свернуты. Результат представляет собой базу данных в известном согласованном состоянии, которое включает результаты всех транзакций, совершенных до момента отказа.

В некоторых случаях, две транзакции могут в ходе их обработки пытаться получить доступ к одной и той же части базы данных в одно и то же время, таким образом, что это будет препятствовать их совершению. Например, транзакция А может получить доступ к части Х базы данных, и транзакция В может получить доступ к Y части базы данных. Если в этот момент транзакция А пытается получить доступ к части Y базы данных, в то время как транзакция B пытается получить доступ к части X, возникает ситуация взаимоблокировки, и ни одна транзакция не может быть произведена. Системы обработки транзакций предназначены для обнаружения таких ситуаций. Обычно обе транзакции отменяются и производится откат, а затем они автоматически запускаются в другом порядке, так что взаимоблокировка не повторится. Или иногда, только одна из транзакций, попавших в тупик, отменяется, производится откат, и автоматически повторяется после небольшой задержки.

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

См. также Править

В Викисловаре есть статья « транзакция »
  • Транзакционная система
  • ACID
  • Атомарные операции
  • Программная транзакционная память
  • MVCC

Примечания Править

  1. Gray, Jim. The Transaction Concept: Virtues and Limitations. Proceedings of the 7th International Conference on Very Large Databases: pages 144—154, 1981(англ.)
  2. Advanced Transaction Models and Architectures(англ.)
  3. Семейство алгоритмов ARIES20 сентября 2008 года.
  4. Gray, J., McJones, P., Blasgen, M., Lindsay, B., Lorie, R., Price, T., Putzolu, F., and Traiger, I. The recovery manager of the System R database manager. ACM Comput. Surv. 13, 2 (June 1981).
  5. ↑ Ahmed K. Elmagarmid (Editor), Transaction Models for Advanced Database Applications, Morgan-Kaufmann, 1992, ISBN 1-55860-214-3
  6. ↑ Gerhard Weikum, Gottfried Vossen, Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery, Morgan Kaufmann, 2002, ISBN 1-55860-508-8
  7. Philip A. Bernstein, Eric Newcomer, Principles of Transaction Processing, 1997, Morgan Kaufmann, ISBN 1-55860-415-4

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры

Дата публикации: Октябрь 22, 2023, 10:25 am
Самые читаемые

Домрачевка

Доминский, Иван Антонович

Домеро

Домбский, Станислав (1724-1802)

Домбский, Ян Игнацы

Домаха (Днепропетровская область)

Дольск (значения)

Дольск (гмина)

Долина предков

Долгоруков, Дмитрий Иванович

© Copyright 2021, Все права защищены.

U etogo termina sushestvuyut i drugie znacheniya sm Tranzakciya znacheniya Tranza kciya angl transaction gruppa posledovatelnyh operacij s bazoj dannyh kotoraya predstavlyaet soboj logicheskuyu edinicu raboty s dannymi Tranzakciya mozhet byt vypolnena libo celikom i uspeshno soblyudaya celostnost dannyh i nezavisimo ot parallelno idushih drugih tranzakcij libo ne vypolnena voobshe i togda ona ne dolzhna proizvesti nikakogo effekta Tranzakcii obrabatyvayutsya tranzakcionnymi sistemami v processe raboty kotoryh sozdayotsya istoriya tranzakcij Razlichayut posledovatelnye obychnye parallelnye i raspredelyonnye tranzakcii Raspredelyonnye tranzakcii podrazumevayut ispolzovanie bolee chem odnoj tranzakcionnoj sistemy i trebuyut namnogo bolee slozhnoj logiki naprimer two phase commit dvuhfaznyj protokol fiksacii tranzakcii Takzhe v nekotoryh sistemah realizovany avtonomnye tranzakcii ili podtranzakcii kotorye yavlyayutsya avtonomnoj chastyu roditelskoj tranzakcii Soderzhanie 1 Primer tranzakcii 2 Svojstva tranzakcij 3 Urovni izolyacii tranzakcij 4 Realizaciya 5 Obrabotka tranzakcij 5 1 Metodologiya 6 Sm takzhe 7 PrimechaniyaPrimer tranzakcii PravitPrimer neobhodimo perevesti s bankovskogo schyota nomer 5 na schyot nomer 7 summu v 10 denezhnyh edinic Etogo mozhno dostich k primeru privedyonnoj posledovatelnostyu dejstvij Prochest balans na schetu nomer 5 Umenshit balans na 10 denezhnyh edinic Sohranit novyj balans schyota nomer 5 Prochest balans na schetu nomer 7 Uvelichit balans na 10 denezhnyh edinic Sohranit novyj balans schyota nomer 7 Eti dejstviya predstavlyayut soboj logicheskuyu edinicu raboty perevod summy mezhdu schetami i takim obrazom yavlyayutsya tranzakciej Esli prervat dannuyu tranzakciyu k primeru v seredine i ne annulirovat vse izmeneniya legko ostavit vladelca schyota nomer 5 bez 10 edinic togda kak vladelec scheta nomer 7 ih ne poluchit Svojstva tranzakcij PravitOsnovnaya statya ACID Odnim iz naibolee rasprostranyonnyh naborov trebovanij k tranzakciyam i tranzakcionnym sistemam yavlyaetsya nabor ACID Atomicity Consistency Isolation Durability Trebovaniya ACID byli v osnovnom sformulirovany v konce 1970 h godov Dzhimom Greem 1 Vmeste s tem sushestvuyut specializirovannye sistemy s oslablennymi tranzakcionnymi svojstvami 2 Urovni izolyacii tranzakcij PravitOsnovnaya statya Urovni izolirovannosti tranzakcij V ideale tranzakcii raznyh polzovatelej dolzhny vypolnyatsya tak chtoby sozdavalas illyuziya chto polzovatel tekushej tranzakcii edinstvennyj Odnako v realnosti po soobrazheniyam proizvoditelnosti i dlya vypolneniya nekotoryh specialnyh zadach SUBD predostavlyayut razlichnye urovni izolyacii tranzakcij Urovni opisany v poryadke uvelicheniya izolirovannosti tranzakcij i sootvetstvenno nadyozhnosti raboty s dannymi 0 Chtenie nezafiksirovannyh dannyh Read Uncommitted chtenie nezafiksirovannyh izmenenij kak svoej tranzakcii tak i parallelnyh tranzakcij Net garantii chto dannye izmenyonnye drugimi tranzakciyami ne budut v lyuboj moment izmeneny v rezultate ih otkata poetomu takoe chtenie yavlyaetsya potencialnym istochnikom oshibok Nevozmozhny poteryannye izmeneniya lost changes vozmozhny gryaznoe chtenie dirty read nepovtoryaemoe chtenie i fantomy 1 Chtenie zafiksirovannyh dannyh Read Committed chtenie vseh izmenenij svoej tranzakcii i zafiksirovannyh izmenenij parallelnyh tranzakcij Poteryannye izmeneniya i gryaznoe chtenie ne dopuskaetsya vozmozhny nepovtoryaemoe chtenie i fantomy 2 Povtoryaemoe chtenie Repeatable Read Snapshot chtenie vseh izmenenij svoej tranzakcii lyubye izmeneniya vnesyonnye parallelnymi tranzakciyami posle nachala svoej nedostupny Poteryannye izmeneniya gryaznoe i nepovtoryaemoe chtenie nevozmozhny vozmozhny fantomy 3 Serializuemyj Serializable serializuemye tranzakcii Rezultat parallelnogo vypolneniya serializuemoj tranzakcii s drugimi tranzakciyami dolzhen byt logicheski ekvivalenten rezultatu ih kakogo libo posledovatelnogo vypolneniya Problemy sinhronizacii ne voznikayut Chem vyshe uroven izolyacii tem bolshe trebuetsya resursov chtoby ego obespechit Sootvetstvenno povyshenie izolirovannosti mozhet privodit k snizheniyu skorosti vypolneniya parallelnyh tranzakcij chto yavlyaetsya platoj za povyshenie nadyozhnosti V SUBD uroven izolyacii tranzakcij mozhno vybrat kak dlya vseh tranzakcij srazu tak i dlya odnoj konkretnoj tranzakcii Po umolchaniyu v bolshinstve baz dannyh ispolzuetsya uroven 1 Read Committed Uroven 0 ispolzuetsya v osnovnom dlya otslezhivaniya izmenenij dlitelnyh tranzakcij ili dlya chteniya redko izmenyaemyh dannyh Urovni 2 i 3 ispolzuyutsya pri povyshennyh trebovaniyah k izolirovannosti tranzakcij Realizaciya PravitPolnocennaya realizaciya urovnej izolyacii i svojstv ACID predstavlyaet soboj netrivialnuyu zadachu Obrabotka postupayushih dannyh privodit k bolshomu kolichestvu malenkih izmenenij vklyuchaya obnovlenie kak samih tablic tak i indeksov Eti izmeneniya potencialno mogut poterpet neudachu zakonchilos mesto na diske operaciya zanimaet slishkom mnogo vremeni timeout i t d Sistema dolzhna v sluchae neudachi korrektno vernut bazu dannyh v sostoyanie do tranzakcii Pervye kommercheskie SUBD k primeru IBM DB2 polzovalis isklyuchitelno blokirovkoj dostupa k dannym dlya obespecheniya svojstv ACID No bolshoe kolichestvo blokirovok privodit k sushestvennomu umensheniyu proizvoditelnosti Est dva populyarnyh semejstva reshenij etoj problemy kotorye snizhayut kolichestvo blokirovok zhurnalizaciya izmenenij write ahead logging WAL mehanizm tenevyh stranic shadow paging 3 V oboih sluchayah blokirovki dolzhny byt rasstavleny na vsyu informaciyu kotoraya obnovlyaetsya V zavisimosti ot urovnya izolyacii i implementacii blokirovki zapisi takzhe rasstavlyayutsya na informaciyu kotoraya byla prochitana tranzakciej Pri uprezhdayushej zhurnalizacii ispolzuemoj v Sybase i MS SQL Server do versii 2005 vse izmeneniya zapisyvayutsya v zhurnal i tolko posle uspeshnogo zaversheniya v bazu dannyh Eto pozvolyaet SUBD vernutsya v rabochee sostoyanie posle neozhidannogo padeniya sistemy Tenevye stranicy soderzhat kopii teh stranic bazy dannyh na nachalo tranzakcii v kotoryh proishodyat izmeneniya Eti kopii aktiviziruyutsya posle uspeshnogo zaversheniya Hotya tenevye stranicy legche realizuyutsya uprezhdayushaya zhurnalizaciya bolee effektivna 4 Dalnejshee razvitie tehnologij upravleniya bazami dannyh privelo k poyavleniyu bezblokirovochnyh tehnologij Ideya kontrolya nad parallelnym dostupom s pomoshyu vremennyh metok timestamp based concurrency control byla razvita i privela k poyavleniyu mnogoversionnoj arhitektury MVCC Eti tehnologii ne nuzhdayutsya ni v zhurnalizacii izmenenij ni v tenevyh stranicah Arhitektura realizovannaya v Oracle 7 h i vyshe zapisyvaet starye versii stranic v specialnyj segment otkata no oni vse eshyo dostupny dlya chteniya Esli tranzakciya pri chtenii popadaet na stranicu vremennaya metka kotoroj novee nachala chteniya dannye berutsya iz segmenta otkata to est ispolzuetsya staraya versiya Dlya podderzhki takoj raboty vedyotsya zhurnal tranzakcij no v otlichie ot uprezhdayushej zhurnalizacii on ne soderzhit dannyh Rabota s nim sostoit iz tryoh logicheskih shagov Zapisat namerenie proizvesti nekotorye operacii Vypolnit zadanie kopiruya originaly izmenyaemyh stranic v segment otkata Zapisat chto vsyo sdelano bez oshibokZhurnal tranzakcij v sochetanii s segmentom otkata oblast v kotoroj hranitsya kopiya vseh izmenyaemyh v hode tranzakcii dannyh garantiruet celostnost dannyh V sluchae sboya zapuskaetsya procedura vosstanovleniya kotoraya prosmatrivaet otdelnye ego zapisi sleduyushim obrazom Esli povrezhdena zapis to sboj proizoshyol vo vremya prostavleniya otmetki v zhurnale Znachit nichego vazhnogo ne poteryalos ignoriruem etu oshibku Esli vse zapisi pomecheny kak uspeshno vypolnennye to sboj proizoshyol mezhdu tranzakciyami zdes takzhe net poter Esli v zhurnale est nezavershyonnaya tranzakciya to sboj proizoshyol vo vremya zapisi na disk V etom sluchae my vosstanavlivaem staruyu versiyu dannyh iz segmenta otkata Firebird voobshe ne imeet ni zhurnala izmenenij ni segmenta otkata a realizuet MVCC zapisyvaya novye versii strok tablic pryamo v aktivnoe prostranstvo dannyh Tak zhe postupaet MS SQL 2005 Teoreticheski eto dayot maksimalnuyu effektivnost pri parallelnoj rabote s dannymi no cenoj yavlyaetsya neobhodimost sborki musora to est udaleniya staryh i uzhe ne nuzhnyh versij dannyh Obrabotka tranzakcij PravitObrabotka tranzakcij napravlena na podderzhanie kompyuternoj sistemy kak pravilo bazy dannyh ili kakih libo sovremennyh fajlovyh sistem v izvestnom soglasovannom sostoyanii putyom obespecheniya togo chtoby lyubye operacii osushestvlyayushiesya v sisteme yavlyayutsya vzaimozavisimymi i libo vse uspeshno zaversheny libo polnostyu i uspeshno otmeneny 5 Naprimer rassmotrim tipichnuyu bankovskuyu tranzakciyu kotoraya vklyuchaet v sebya peremeshenie 700 dollarov s sberegatelnogo scheta klienta na raschetnyj schet klienta Eta tranzakciya yavlyaetsya odnoj operaciej dlya banka no ona vklyuchaet v sebya po krajnej mere dve otdelnye operacii v kompyuternyh terminah zachislyayutsya na depozitnyj schet 700 dollarov a takzhe kredituetsya raschetnyj schet na 700 dollarov Esli debetovye operacii proshli uspeshno a kreditnye net ili naoborot v knigah banka ne budet ostatka na konec dnya Poetomu dolzhen byt sposob garantirovat chto obe operacii libo imeli uspeh libo provalilis tak chto nikogda ne byvaet kakih libo nesootvetstvij v baze dannyh banka v celom Obrabotka tranzakcij prednaznachena dlya obespecheniya etogo Obrabotka tranzakcij pozvolyaet neskolkim otdelnym operaciyam avtomaticheski byt svyazannymi drug s drugom kak edinaya nedelimaya tranzakciya Sistemy obrabotki tranzakcij garantiruet chto libo vse operacii v tranzakcii zaversheny bez oshibok libo ni odna iz nih Esli nekotorye iz operacij zaversheny no s oshibkami a drugie bez sistemy obrabotki tranzakcij daet komandu na otkat vseh operacij tranzakcii v tom chisle udachnyh chto oznachaet stiranie vseh sledov operacii i vosstanovlenie sistemy do soglasovannogo izvestnogo sostoyaniya kotoroe bylo do nachala processa tranzakcii Esli vse operacii tranzakcii zaversheny uspeshno to tranzakciya fiksiruetsya v sisteme i vse izmeneniya v baze dannyh stanovyatsya postoyannymi commited tranzakcii ne mogut byt otmeneny esli oni uzhe byli sdelany Obrabotka tranzakcij zashishaet ot apparatnyh i programmnyh oshibok kotorye mogut ostavit tranzakciyu zavershennoj chastichno s sistemoj ostavlennoj v neizvestnom protivorechivom sostoyanii Esli v kompyuternoj sisteme proishodit sboj v seredine tranzakcii obrabotka tranzakcij garantiruet chto vse operacii v lyubyh nezafiksirovannyh to est ne polnostyu obrabotannyh tranzakciyah budut otmeneny Tranzakcii oformleny v strogom hronologicheskom poryadke Esli sdelka N 1 namerena kosnutsya toj zhe chasti bazy dannyh chto i tranzakciya N tranzakciya N 1 ne nachinaetsya do momenta soversheniya tranzakcii N Do soversheniya lyubyh tranzakcij vse ostalnye tranzakcii zatragivayushie tu zhe chast sistemy takzhe dolzhny byt zaversheny ne mozhet byt nikakih dyrok v posledovatelnosti predydushih tranzakcij 6 5 Metodologiya Pravit Osnovnye principy vseh sistem obrabotki tranzakcij odinakovy Odnako terminologiya mozhet varirovatsya ot odnoj sistemy obrabotki tranzakcij do drugoj i terminy ispolzuemye nizhe ne obyazatelno yavlyayutsya universalnymi 7 Otkat angl rollback Sistemy obrabotki tranzakcij obespechivayut celostnost bazy dannyh pri pomoshi zapisi promezhutochnogo sostoyaniya bazy dannyh pered eyo izmeneniem a zatem ispolzuya eti zapisi vosstanavlivayut bazu dannyh do izvestnogo sostoyaniya esli tranzakciya ne mozhet byt sovershena Naprimer kopii informacii v baze dannyh do eyo izmeneniya tranzakciej delayutsya sistemoj pered tranzakciej kotoraya mozhet sdelat lyubye izmeneniya inogda eto nazyvayut before image Esli kakaya libo chast tranzakcii ne udaetsya do eyo soversheniya eti kopii ispolzuyutsya dlya vosstanovleniya bazy dannyh v sostoyanie v kotorom ona nahodilas do nachala tranzakcii Rollback 6 Progon angl rollforward Krome togo mozhno vesti otdelnyj zhurnal vseh izmenenij bazy dannyh inogda eto nazyvaetsya after images eto ne trebuet otkata neudachnyh operacij no eto polezno dlya obnovleniya bazy dannyh v sluchae otkaza bazy dannyh poetomu nekotorye sistemy obrabotki tranzakcij obespechivayut etu funkciyu Esli baza dannyh otkazyvaet sovsem ona dolzhna byt vosstanovlena iz poslednej rezervnoj Rezervnye kopii ne budut otrazhat operacii sovershennye posle eyo sozdaniya Odnako kak tolko budet vosstanovlena baza dannyh zhurnal after images mozhet byt primenen k baze dannyh rollforward chtoby privesti eyo v aktualnoe sostoyanie Lyubye tranzakcii kotorye nahodyatsya v processe na moment sboya mogut byt svernuty Rezultat predstavlyaet soboj bazu dannyh v izvestnom soglasovannom sostoyanii kotoroe vklyuchaet rezultaty vseh tranzakcij sovershennyh do momenta otkaza 6 Vzaimnaya blokirovka angl deadlocks V nekotoryh sluchayah dve tranzakcii mogut v hode ih obrabotki pytatsya poluchit dostup k odnoj i toj zhe chasti bazy dannyh v odno i to zhe vremya takim obrazom chto eto budet prepyatstvovat ih soversheniyu Naprimer tranzakciya A mozhet poluchit dostup k chasti H bazy dannyh i tranzakciya V mozhet poluchit dostup k Y chasti bazy dannyh Esli v etot moment tranzakciya A pytaetsya poluchit dostup k chasti Y bazy dannyh v to vremya kak tranzakciya B pytaetsya poluchit dostup k chasti X voznikaet situaciya vzaimoblokirovki i ni odna tranzakciya ne mozhet byt proizvedena Sistemy obrabotki tranzakcij prednaznacheny dlya obnaruzheniya takih situacij Obychno obe tranzakcii otmenyayutsya i proizvoditsya otkat a zatem oni avtomaticheski zapuskayutsya v drugom poryadke tak chto vzaimoblokirovka ne povtoritsya Ili inogda tolko odna iz tranzakcij popavshih v tupik otmenyaetsya proizvoditsya otkat i avtomaticheski povtoryaetsya posle nebolshoj zaderzhki Vzaimoblokirovki mogut proishodit mezhdu tremya ili bolee tranzakciyami Chem bolshe tranzakcii svyazany tem trudnee ih obnaruzhit Sistemy obrabotki tranzakcij dazhe ustanovili prakticheskoe ogranichenie na tupikovye situacii kotorye oni mogut obnaruzhit Sm takzhe Pravit nbsp V Vikislovare est statya tranzakciya Tranzakcionnaya sistema ACID Atomarnye operacii Programmnaya tranzakcionnaya pamyat MVCCPrimechaniya Pravit Gray Jim The Transaction Concept Virtues and Limitations Proceedings of the 7th International Conference on Very Large Databases pages 144 154 1981 angl Advanced Transaction Models and Architectures angl Semejstvo algoritmov ARIES Arhivirovano 20 sentyabrya 2008 goda Gray J McJones P Blasgen M Lindsay B Lorie R Price T Putzolu F and Traiger I The recovery manager of the System R database manager ACM Comput Surv 13 2 June 1981 1 2 Ahmed K Elmagarmid Editor Transaction Models for Advanced Database Applications Morgan Kaufmann 1992 ISBN 1 55860 214 3 1 2 3 Gerhard Weikum Gottfried Vossen Transactional information systems theory algorithms and the practice of concurrency control and recovery Morgan Kaufmann 2002 ISBN 1 55860 508 8 Philip A Bernstein Eric Newcomer Principles of Transaction Processing 1997 Morgan Kaufmann ISBN 1 55860 415 4 Istochnik https ru wikipedia org w index php title Tranzakciya informatika amp oldid 127772615

Что такое транзакция

Транзакция — это набор операций по работе с базой данных (БД), объединенных в одну атомарную пачку.

Транзакционные базы данных (базы, работающие через транзакции) выполняют требования ACID, которые обеспечивают безопасность данных. В том числе финансовых данных =) Поэтому разработчики их и выбирают.

Я расскажу о том, что такое транзакция. Как ее открыть, и как закрыть. И почему это важно — закрывать транзакцию. И тогда при написании запросов к базе у вас будет осознанное понимание, что происходит там, под капотом, и зачем же нужен этот обязательный коммит после апдейта.

Что такое транзакция

Транзакция — это архив для запросов к базе. Он защищает ваши данные благодаря принципу «всё, или ничего».

Представьте, что вы решили послать другу 10 файликов в мессенджере. Какие есть варианты:

  1. Кинуть каждый файлик отдельно.
  2. Сложить их в архив и отправить архив.

Вроде бы разницы особой нет. Но что, если что-то пойдет не так? Соединение оборвется на середине, сервер уйдет в ребут или просто выдаст ошибку.

В первом случае ваш друг получит 9 файлов, но не получит один.

Во втором не получит ничего. Нет промежуточных состояний. Или получил всё, или не получил ничего. Но зато если произошла ошибка, вы снова перешлете сообщение. И друг получит все файлики разом, не придется проверять «не потерялся ли кто».

Казалось бы, ну недополучил файлик, что с того? А если это критично? Если это важные файлики? Например, для бухгалтерии. Потерял один файлик? Значит, допустил ошибку в отчете для налоговой. Значит, огребешь штраф и большие проблемы! Нет, спасибо, лучше файлы не терять!

И получается, что тебе надо уточнять у отправителя:

— Ты мне сколько файлов посылал?

— 10

— Да? У меня только 9. Давай искать, какой продолбался.

И сидите, сравниваете по названиям. А если файликов 100 и потеряно 2 штуки? А названия у них вовсе не «Отчет 1», «Отчет 2» и так далее, а «hfdslafebx63542437457822nfhgeopjgrev0000444666589.xml» и подобные. Уж лучше использовать архив! Тогда ты или точно всё получил, или не получил ничего и делаешь повторную попытку отправки.

Так вот! Транзакция — это тот же архив для запросов. Принцип «всё, или ничего». Или выполнены все запросы, которые разработчик упаковал в одну транзакцию, или ни один.

Допустим, вы переводите все деньги с одной карточки на другую. Выглядит это «внутри» системы как несколько операций:

delete from счет1 where счет = счет 1

insert into счет2 values (‘сумма’)

Принцип «всё или ничего» тут очень помогает. Было бы обидно, если бы деньги со счета1 списались, но на счет2 не поступили. Потому что соединение оборвалось или вы в номере счета опечатались и система выдала ошибку.

Но благодаря объединению запросов в транзакцию при возникновении ошибки зачисления мы откатываем и операцию списания. Деньги снова вернулись на счет 1!

Если говорить по-научному, то транзакция — упорядоченное множество операций, переводящих базу данных из одного согласованного состояния в другое. Согласованное состояние — это состояние, которое подходит под бизнес-логику системы. То есть у нас не остается отрицательный баланс после перевода денег, номер счета не «зависает в воздухе», не привязанный к человеку, и тому подобное.

Как отправить транзакцию

Чтобы обратиться к базе данных, сначала надо открыть соединение с ней. Это называется коннект (от англ. connection, соединение). Коннект — это просто труба, по которой мы посылаем запросы.

Чтобы сгруппировать запросы в одну атомарную пачку, используем транзакцию. Транзакцию надо:

  1. Открыть.
  2. Выполнить все операции внутри.
  3. Закрыть.

Как только мы закрыли транзакцию, труба освободилась. И ее можно переиспользовать, отправив следующую транзакцию.

Можно, конечно, каждый раз закрывать соединение с БД. И на каждое действие открывать новое. Но эффективнее переиспользовать текущие. Потому что создание нового коннекта — тяжелая операция, долгая.

При настройке приложения администратор указывает, сколько максимально открытых соединений с базой может быть в один момент времени. Это называется пул соединений — количество свободных труб.

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

Как открыть транзакцию

Зависит от базы данных. В Oracle транзакция открывается сама, по факту первой изменяющей операции. А в MySql надо явно писать «start transaction».

Как закрыть транзакцию

Тут есть 2 варианта:

  1. COMMIT — подтверждаем все внесенные изменения;
  2. ROLLBACK — откатываем их;

И вся фишка транзакционной базы в том, что база сначала применяет запрос «виртуально», реально ничего в базе не изменив. Ты можешь посмотреть, как запрос изменит базу, ничего при этом не сохраняя.

Например, я пишу запрос:

insert into clients (name, surname) values ('Иван', 'Иванов'); -- добавь в таблицу клиентов запись с именем «Иван» и фамилиев «Иванов»

Запрос выполнен успешно, хорошо! Теперь, если я сделаю select из этой таблицы, прям тут же, под своим запросом — он находит Иванова! Я могу увидеть результат своего запроса.

Но! Если открыть графический интерфейс программы, никакого Иванова мы там не найдем. И даже если мы откроем новую вкладку в sql developer (или в другой программе, через которую вы подключаетесь к базе) и повторим там свой select — Иванова не будет.

А все потому, что я не сделала коммит, не применила изменения:

insert into clients (name, surname) values ('Иван', 'Иванов'); commit;

Я могу добавить кучу данных. Удалить полтаблицы. Изменить миллион строк. Но если я закрою вкладку sql developer, не сделав коммит, все эти изменения потеряются.

Когда я впервые столкнулась с базой на работе, я часто допускала такую ошибку: подправлю данные «на лету» для проведения теста, а в системе ничего не меняется! Почему? Потому что коммит сделать забыла.

На самом деле это удобно. Ведь если ты выполняешь сложную операцию, можно посмотреть на результат. Например, удаляем тестовые данные. Написали кучу условий из серии:

Удалили. Делаем select count — посмотреть количество записей в таблице. А там вместо миллиона строк осталось 100 тысяч! Если база реальная, то это очень подозрительно. Врядли там было СТОЛЬКО тестовых записей.

Проверяем свой запрос, а мы там где-то ошиблись! Вместо «И» написали «ИЛИ», или как-то еще. Упс. Хорошо еще изменения применить не успели. Вместо коммита делаем rollback.

Тут может возникнуть вопрос — а зачем вообще нужен ROLLBACK? Ведь без коммита ничего не сохранится. Можно просто не делать его, и всё. Но тогда транзакция будет висеть в непонятном статусе. Потому что ее просто так никто кроме тебя не откатит.

Или другой вариант. Нафигачили изменений:

Но видим, что операцию надо отменять. Проверочный select заметил, что база стала неконсистентной. А мы решили «Ай, да ладно, коммит то не сделали? Значит, оно и не сохранится». И вернули соединение в пул.

Следующая операция бизнес-логики берет это самое соединение и продолжает в нем работать. А потом делает коммит. Этот коммит относился к тем 3 операциям, что были внутри текущей транзакции. Но мы закоммитили еще и 10 других — тех, что в прошлый раз откатить поленились. Тех, которые делают базу неконсистентной.

Так что лучше сразу сделайте откат. Здоровей система будет!

Итого

Транзакция — набор операций по работе с базой данных, объединенных в одну атомарную пачку.

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

Чтобы отправить транзакцию к базе, нам нужно создать соединение с ней. Или переиспользовать уже существующее. Соединение называют также коннект (англ connection) — это просто труба, по которой отправляются запросы. У базы есть пул соединений — место, откуда можно взять любое и использовать, они там все свободные.

В некоторых системах транзакцию нужно открыть, в других она открывается сама. А вот закрыть ее нужно самостоятельно. Варианты:

  1. COMMIT — подтверждаем все внесенные изменения;
  2. ROLLBACK — откатываем их;

Делая комит, мы заканчиваем одну бизнес-операцию, и возвращаем коннект в пул без открытой транзакции. То есть просто освобождаем трубу для других. Следующая бизнес-операция берет эту трубу и фигачит в нее свои операции. Поэтому важно сделать rollback, если изменения сохранять не надо. Не откатите и вернете соединение в пул? Его возьмет кто-то другой и сделает коммит. Своих изменений, и ваших, неоткаченных.

Не путайте соединение с базой (коннект) и саму транзакцию. Коннект — это просто труба, операции (update, delete…) мы посылаем по трубе, старт транзакции и commit /rollback — это группировка операций в одну атомарную пачку.

См также:

Блокировки транзакций — что может пойти не так при одновременном редактировании

Транзакция (информатика)

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

Различают последовательные (обычные), параллельные и распределённые транзакции. Распределённые транзакции подразумевают использование более чем одной транзакционной системы и требуют намного более сложной логики (например, two-phase commit — двухфазный протокол фиксации транзакции). Также в некоторых системах реализованы автономные транзакции, или под-транзакции, которые являются автономной частью родительской транзакции.

Связанные понятия

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

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

Удалённый вызов процедур, реже Вызов удалённых процедур (от англ. Remote Procedure Call, RPC) — класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру.

Журналирование (англ. logging) — форма автоматической записи в хронологическом порядке операций в информационных технологиях, процесс записи информации о происходящих в рамках какого-либо процесса с некоторым объектом событиях, например, в файл регистрации или в базу данных. В некоторых программный комплексах используется термин «аудит», что является не верным, поскольку аудит подразумевает сравнение чего-то с чем-то, чего-то на предмет соответствия, например, требованиям, иными словами это корреляционный.

Три́ггер (англ. trigger) — хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определённом столбце заданной таблицы реляционной базы данных.

Упоминания в литературе

♦ Логические атаки (Logical Attacks). Атаки данного класса направлены на эксплуатацию функций приложения или логики его функционирования. Логика приложения представляет собой ожидаемый процесс функционирования программы при выполнении определенных действий. В качестве примеров можно привести восстановление паролей, регистрацию учетных записей, аукционные торги, транзакции в системах электронной коммерции. Приложение может требовать от пользователя корректного выполнения нескольких последовательных действий для решения определенной задачи. Злоумышленник может обойти или использовать эти механизмы в своих целях.

Н. Карп напоминает: главное при определении блокчейна все же не забывать о том, что это в первую очередь технология, которая может стать ключевой в самых разных сферах общественной жизни. По сути, он является одноранговым публичным реестром, поддерживаемым распределенной сетью компьютеров, которая не требует никакого центрального администратора или третьих лиц-посредников. Он состоит из трех ключевых компонентов: сделки, записи о транзакции и системы, которая проверяет и хранит транзакцию. Блоки генерируются через общедоступное программное обеспечение и содержат информацию о том, когда и в какой последовательности совершались транзакции. Один блок в хронологическом порядке хранит информацию обо всех сделках, которые имели место в цепочке, отсюда и название blockchain[4]. Другими словами, блокчейн – это база данных неизменной информации с меткой времени о каждой транзакции, которая растиражирована на серверах по всему миру. Эта технология лежит в основе криптовалюты биткоин<88>.

• У меня не было плана, только список функциональных возможностей, которыми должен был обладать новый продукт. Я начал с такой наиболее часто применяемой операции, как ввод транзакций. Затем перешел к менее критичным функциям вроде составления баланса и внесения корректировок. В конце добавил такие необязательные приятные вещи, как подсказки и возможность экспорта данных. Я занимался этим до тех пор, пока мне все не надоело, и я просто не объявил продукт готовым.

Биткойн, как платежная система, и электронные кошельки оперируют хоть и электронными, но все же деньгами, поэтому приложения для конечных пользователей должны обеспечивать повышенную защиту транзакций. Поэтому, прежде чем удобные биткойн-кошельки завоюют массовое признание, потребуется заслужить доверие потребителей. В частности, придется решить множество вопросов обеспечения безопасности криптовалюты, в том числе: «Как сохранять свои деньги?» или «Что делать при утере закрытого ключа или при получении в транзакции сомнительной (то есть ранее украденной) монеты?».

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

Связанные понятия (продолжение)

Балансировка нагрузки отличается от физического соединения тем, что балансировка нагрузки делит трафик между сетевыми интерфейсами на сетевой сокет (модель OSI уровень 4) основе, в то время как соединение канала предполагает разделение трафика между физическими интерфейсами на более низком уровне, либо в пакет (модель OSI уровень 3) или по каналу связи (модель OSI уровень 2); Основы с, как протокол соединения кратчайшего пути.

Разделяемая память (англ. Shared memory) является самым быстрым средством обмена данными между процессами.

Взаимодействие компьютеров между собой, а также с другим активным сетевым оборудованием, в TCP/IP-сетях организовано на основе использования сетевых служб, которые обеспечиваются специальными процессами сетевой операционной системы (ОС) — демонами в UNIX-подобных ОС, службами в ОС семейства Windows и т. п. Примерами сетевых сервисов являются веб-серверы (в т.ч. сайты всемирной паутины), электронная почта, FTP-серверы для обмена файлами, приложения IP-телефонии и многое другое.

В информатике, блокировка — механизм синхронизации, позволяющий обеспечить исключительный доступ к разделяемому ресурсу между несколькими потоками. Блокировки — это один из способов обеспечить политику управления распараллеливанием.

Технология единого входа (англ. Single Sign-On) — технология, при использовании которой пользователь переходит из одного раздела портала в другой без повторной аутентификации.

Храни́мая процеду́ра — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Хранимые процедуры очень похожи на обыкновенные процедуры языков высокого уровня, у них могут быть входные и выходные параметры и локальные переменные, в них могут производиться числовые вычисления и операции над символьными данными, результаты которых могут присваиваться переменным и параметрам. В хранимых процедурах могут выполняться стандартные операции с.

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

Отказоустойчивый кластер (англ. High-Availability cluster, HA cluster — кластер высокой доступности) — кластер (группа серверов), спроектированный в соответствии с методиками обеспечения высокой доступности и гарантирующий минимальное время простоя за счёт аппаратной избыточности. Без кластеризации сбой сервера приводит к тому, что поддерживаемые им приложения или сетевые сервисы оказываются недоступны до восстановления его работоспособности. Отказоустойчивая кластеризация исправляет эту ситуацию.

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

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

Синхронизация (от др.-греч. σύγχρονος — одновременный) в информатике обозначает одно из: синхронизацию процессов, либо синхронизацию данных, либо процесс синхронизации передачи данных.

Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации (структуризации) — восстановление начального состояния структуры данных из битовой последовательности.

Сертификат открытого ключа (сертификат ЭП, сертификат ключа подписи, сертификат ключа проверки электронной подписи (согласно ст. 2 Федерального Закона от 06.04.2011 «Об электронной подписи» № 63-ФЗ)) — электронный или бумажный документ, содержащий открытый ключ, информацию о владельце ключа, области применения ключа, подписанный выдавшим его Удостоверяющим центром и подтверждающий принадлежность открытого ключа владельцу.

Сеансовый уровень (англ. Session layer) — 5-й уровень сетевой модели OSI, отвечает за поддержание.
Аутентифика́ция (англ. authentication Подробнее: Распределённый менеджер блокировок

Контро́льная су́мма — некоторое значение, рассчитанное по набору данных путём применения определённого алгоритма и используемое для проверки целостности данных при их передаче или хранении. Также контрольные суммы могут использоваться для быстрого сравнения двух наборов данных на неэквивалентность: с большой вероятностью различные наборы данных будут иметь неравные контрольные суммы. Это может быть использовано, например, для обнаружения компьютерных вирусов. Несмотря на своё название, контрольная.

Снимок файловой системы, или снапшот, или снепшот (от англ. snapshot — мгновенный снимок), — моментальный снимок, копия файлов и каталогов файловой системы на определённый момент времени.

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

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

Атомарная (атом от греч. atomos — неделимое) операция — операция, которая либо выполняется целиком, либо не выполняется вовсе; операция, которая не может быть частично выполнена и частично не выполнена.

Контроллер домена в компьютерных сетях построенных на Microsoft Server — сервер, контролирующий область компьютерной сети (домен).

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

Механизм копирования при записи (англ. Copy-On-Write, COW) используется для оптимизации многих процессов, происходящих в операционной системе, таких как, например, работа с оперативной памятью или файлами на диске (пример — ext3cow).

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

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

Многофакторная аутентификация (МФА, англ. multi-factor authentication, MFA) — расширенная аутентификация, метод контроля доступа к компьютеру, в котором пользователю для получения доступа к информации необходимо предъявить более одного «доказательства механизма аутентификации». К категориям таких доказательств относят.

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.

Монтирование файловой системы — системный процесс, подготавливающий раздел диска к использованию операционной системой.

Взаи́мная блокиро́вка (англ. deadlock) — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии ожидания ресурсов, занятых друг другом, и ни один из них не может продолжать свое выполнение.

Авториза́ция (англ. authorization «разрешение; уполномочивание») — предоставление определённому лицу или группе лиц прав на выполнение определённых действий; а также процесс проверки (подтверждения) данных прав при попытке выполнения этих действий. Часто можно услышать выражение, что какой-то человек «авторизован» для выполнения данной операции — это значит, что он имеет на неё право.

Маршрутизация (англ. Routing) — процесс определения маршрута следования данных в сетях связи.

Файловый дескриптор — это неотрицательное целое число. Когда создается новый поток ввода-вывода, ядро возвращает процессу, создавшему поток ввода-вывода, его файловый дескриптор.

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

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

Распределительная вычислительная среда (англ. Distributed Computing Environment, сокр. DCE) — система программного обеспечения, разработанная в начале 1990-х годов в Open Software Foundation, который представлял собой ассоциацию нескольких компаний: Apollo Computer, IBM, Digital Equipment Corporation и других. DCE предоставляет фреймворк и средства разработки клиент-серверных приложений.

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

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

В криптографии центр сертификации или удостоверяющий центр (англ. Certification authority, CA) — сторона (отдел, организация), чья честность неоспорима, а открытый ключ широко известен. Задача центра сертификации — подтверждать подлинность ключей шифрования с помощью сертификатов электронной подписи.

Систе́мный вы́зов (англ. system call) в программировании и вычислительной технике — обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции.

Защита памяти (англ. Memory protection) — это способ управления правами доступа к отдельным регионам памяти. Используется большинством многозадачных операционных систем. Основной целью защиты памяти является запрет доступа процессу к той памяти, которая не выделена для этого процесса. Такие запреты повышают надёжность работы как программ, так и операционных систем, так как ошибка в одной программе не может повлиять непосредственно на память других приложений. Следует различать общий принцип защиты.

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

Инфраструктура открытых ключей (ИОК, англ. PKI — Public Key Infrastructure) — набор средств (технических, материальных, людских и т. д.), распределённых служб и компонентов, в совокупности используемых для поддержки криптозадач на основе закрытого и открытого ключей. В основе PKI лежит использование криптографической системы с открытым ключом и несколько основных принципов.

Упоминания в литературе (продолжение)

Итак, для большей надежности каждое последующее звено цепочки содержит информацию о предыдущем звене или блоке[52]. Увеличение количества проверенных блоков повышает достоверность всех предыдущих транзакций, ведь каждый раз при создании нового блока пользователи проверяют действительность полной цепочки транзакций: от начала и до конца[53]. Чем длиннее цепочка взаимосвязанных блоков, тем меньше вероятность фальсификации. Механизм, при помощи которого подтверждаются сделки в блокчейне Bitcoin, получил название «подтверждение работы» (proof of work)[54]. Подтверждение цепочки взаимосвязанных блоков самими пользователями – характерное свойство блокчейна, обусловливающее доверие участников распределенной цепочки данных[55].

ATP (AppleTalk Transaction Protocol) – один из протоколов транспортного уровня, который отвечает за транзакции. Транзакция – это набор из запроса, ответа на этот запрос и идентификационного номера, который присваивается данному набору. Примером транзакции может быть сообщение о доставке данных от одного компьютера другому. Кроме того, АТР умеет делать разбивку больших пакетов на более мелкие с последующей их сборкой после подтверждения о приеме или доставке.

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

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

Что именно хранится на вашем банковском счете, на вашей кредитной или дебетовой карте? Настоящие деньги? Деньги, которые вы держали в руках, уже давно превратились в нематериальные биты и байты. Сейчас лишь небольшой объем денежных средств существует в виде физически осязаемых банкнот и монет. Подавляющее большинство мировых денежных средств и активов воплотилось в форме невидимых глазу битов и байтов в централизованных информационных системах финансовой индустрии. Банки и многие другие деятели финансовой сферы являются просто посредниками между производителями и потребителями битов и байтов, которые теперь олицетворяют наши деньги и наше благополучие. Операция займа, кредитования или перевода денег с одного счета на другой – это всего лишь передача нематериальной сущности, выполняемая посредником, также называемым комиссионером. Удивительно, как много посредников привлечено к выполнению с виду простых транзакций (например, при переводе денег с одного счета на счет, расположенный в другой стране, могут принять участие до пяти посредников, и все они требуют оплаты времени, затраченного на обработку данных, и своих комиссионных). В результате для простой операции перевода денег на счет в другой стране время обработки увеличивается, и возникают значительные накладные расходы на выполнение транзакций. В пиринговой системе тот же перевод можно выполнить намного проще и быстрее, а накладные расходы будут меньшими, поскольку операция выполняется «как есть», без лишних сущностей: передача битов и байтов между двумя равноправными партнерами или узлами.

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

Еще несколько лет назад руководители магазинов и не подозревали, что наступит время, когда им придется серьезно задумываться о телекоммуникационной инфраструктуре своих организаций. Функционирование современной розничной торговой организации практически немыслимо без таких понятий, как локальная вычислительная сеть, Интернет, виртуальная частная сеть, сервисные службы, система управления цепочками поставок и многое другое. Все способствует решению прикладных задач учета товаров, электронного документооборота, выполнению электронных транзакций, предоставлению покупателям справочной информации в режиме онлайн, интеграции с сетями электронной обработки обращений покупателей, поступающих по телефону, через электронную почту или через web-сайты магазинов.

– корпоративной сети Internet для структурирования и распространения информации, выполнения электронных транзакций в пределах компании;

С середины 1990-х годов активно решались вопросы нормативного регулирования применения электронной подписи. Так, в течение 10 лет, с 1995 по 2005 г., практически все страны мира приняли соответствующие законы – «Об электронном документе», «Об электронной подписи», «О цифровой подписи», «Об электронной цифровой подписи», «Об электронных сделках», «Об электронной коммерции» и т. д. [167, с. 131–132]. Особо следует выделить модельные акты, принятые международными организациями: Комиссией ООН по международному торговому праву (ЮНСИТРАЛ) (модельные законы «Об электронной торговле» 1996 г. и «Об электронных подписях» 2001 г.) и Европейским парламентом (Директива 1999/93/ЕС Европейского парламента и Совета от 13 декабря 1999 г. о порядке использования электронных подписей в Европейском сообществе), послужившие в дальнейшем в качестве типовых для разработки национальных законов [231, 233, 234]. Выделим также принятый уже на новом этапе Европейским парламентом и Советом нормативно-правовой акт (EU Regulation) № 910-2014 от 23 июля 2014 г. «Об электронной идентификации и услугах доверия для электронных транзакций на внутреннем рынке, и об отмене Директивы 199 9/93/ЕС» [232].

– обеспечение целостности данных: управление транзакциями, распределенными между удаленными компонентами системами;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *