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

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

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

прочесть баланс на счету номер 5 уменьшить баланс на 10 денежных единиц сохранить новый баланс счёта номер 5 прочесть баланс на счету номер 7 увеличить баланс на 10 денежных единиц сохранить новый баланс счёта номер 7

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

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

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

Одним из наиболее распространённых наборов требований к транзакциям и транзакционным системам является набор AC >[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. Но большое количество блокировок приводит к существенному уменьшению производительности. Есть два популярных семейства решений этой проблемы, которые снижают количество блокировок:

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

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

Читайте также:  Зачем нужна выписка из егрюл

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

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

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

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

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

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

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

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

Для начала выясним, как появилось в русском языке это слово. Оно произошло от английского transaction (а можно взять в качестве истока и вариант на латыни transactio), что в переводе означает «договор» или «соглашение».

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

Итак, трансакцией в психологии считается единица общения между людьми, которая включает в себя стимул одного собеседника и реакцию другого. Простейший пример: "Здравствуйте! Можно с Вами обсудить одну проблему?" (стимул), "Здравствуйте! Конечно, я готов." (реакция).

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

Транзакции в экономике — это единицы взаимодействия экономического характера между сторонами (представленными как отдельными индивидуумами, так и группами людей), которые известный американский экономист, социолог и юрист Джон Роджерс Коммонс (John Rogers Commons) классифицировал на три вида:

  • трансакция управления — отношение между управляющим органом и подчиненной организацией (или между начальником и простым работником). Отличительной чертой является неравноправие участников с точки зрения наделенных полномочий, однако эти условия добровольно принимаются участниками, причем подчиненная сторона получает вознаграждение за выполнение задания, поставленного управленцем;
  • трансакция сделки — в этом случае стороны обладают равными правами и целью подобного взаимодействия является обмен элементами собственности (например, передача денег от покупателя продавцу и, соответственно, товара в обратном направлении). Естественно, заключение сделки возможно лишь в том случае, если обе стороны удовлетворены ее условиями (продавца устраивает сумма, а покупателя качество товара);
  • трансакция рационирования — здесь также одна из сторон (причем, непременно в форме коллективного органа) наделена всеми полномочиями, решения которой обязательны для исполнения другой стороной. Однако, в отличие от транзакции управления, она построена не на добровольных отношениях, а на принудительных (примером может служить решение совета директоров по утверждению бюджета компании, которое без всяких условий обязательно к исполнению).
Читайте также:  Купюра 1000 евро существуют

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

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

В этом смысле такой системой можно считать и любой банк. Ведь клиентские счета с находящимися на них денежными средствами не что иное как БД.

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

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

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

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

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

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

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

Читайте также:  Совкомбанк орск режим работы

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

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

До конца XX века в русском языке обычно фигурировало написание «трансакция» [1] , в последнее время превалирует написание «транзакция

В экономике, политике, юриспруденции

  • Банковская транзакция — операция, состоящая в переводе денежных средств с одного счета на другой; сделка купли-продажи;
  • Банкоматная транзакция (англ. ATM transaction) — операция по выдаче наличных денег или предоставление другого сервиса через банкомат [6] .
  • Транзакция (сделка) — соглашение (политическое, юридическое), сопровождаемое взаимными уступками.

В информатике

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

В психологии

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

В физике

  • Транзакция (физика) — ключевое понятие транзакционной интерпретации квантовой механики.

40.Перечислите, какими свойствами должна обладать транзакция.

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

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

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

прочесть баланс на счету номер 5

уменьшить баланс на 10 денежных единиц

сохранить новый баланс счёта номер 5

прочесть баланс на счету номер 7

увеличить баланс на 10 денежных единиц

сохранить новый баланс счёта номер 7

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

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

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

Atomicity — Атомарность

Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной. Поскольку на практике невозможно одновременно и атомарно выполнить всю последовательность операций внутри транзакции, вводится понятие «отката» (rollback): если транзакцию не удаётся полностью завершить, результаты всех её до сих пор произведённых действий будут отменены и система вернётся в исходное состояние.

Дата добавления: 2015-11-23 ; просмотров: 817 | Нарушение авторских прав

Оставить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.