stringtranslate.com

Транзакция базы данных

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

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

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

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

Цель

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

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

  1. Дебетовать 100 долларов США на счет расходов на продукты
  2. Зачислите 100 долларов США на текущий счет

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

Транзакционные базы данных

Транзакционная база данных — это СУБД , которая предоставляет свойства ACID для ограниченного набора операций с базой данных (начало-фиксация). Транзакции гарантируют, что база данных всегда находится в согласованном состоянии, даже в случае одновременных обновлений и сбоев. [2] Все операции записи в транзакции имеют эффект «все или ничего», то есть либо транзакция завершается успешно, и все записи вступают в силу, либо в противном случае база данных переводится в состояние, в котором отсутствуют какие-либо операции записи. сделки. Транзакции также гарантируют, что результат параллельных транзакций удовлетворяет определенным гарантиям, известным как уровень изоляции . Высшим уровнем изоляции является сериализуемость , которая гарантирует, что эффект от параллельных транзакций эквивалентен их последовательному (т. е. последовательному) выполнению.

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

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

  1. Начните транзакцию.
  2. Выполнить набор манипуляций с данными и/или запросов.
  3. Если ошибок не возникло, зафиксируйте транзакцию.
  4. Если произойдет ошибка, откатите транзакцию.

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

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

Существует множество различных способов реализации транзакций, кроме простого способа, описанного выше. Например, вложенные транзакции — это транзакции, которые содержат внутри себя операторы, запускающие новые транзакции (т. е. субтранзакции). Многоуровневые транзакции — это вариант вложенных транзакций, в которых субтранзакции происходят на разных уровнях многоуровневой системной архитектуры (например, одна операция на уровне ядра базы данных, одна операция на уровне операционной системы). [3] Другим видом сделки является компенсационная сделка .

В SQL

Транзакции доступны в большинстве реализаций баз данных SQL, хотя и с разным уровнем надежности. Например, MySQL начал поддерживать транзакции с ранней версии 3.23, но механизм хранения InnoDB не использовался по умолчанию до версии 5.5. Ранее доступный механизм хранения MyISAM не поддерживает транзакции.

Транзакция обычно запускается с помощью этой команды BEGIN(хотя стандарт SQL предписывает это START TRANSACTION). Когда система обрабатывает COMMITзапрос, транзакция завершается успешным завершением. Оператор ROLLBACKтакже может завершить транзакцию, отменяя любую работу, выполненную с момента BEGIN. Если автофиксация была отключена в начале транзакции, автофиксация также будет повторно включена по окончании транзакции.

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

Базы данных объектов

Реляционные базы данных традиционно состоят из таблиц с полями и записями фиксированного размера. Базы данных объектов содержат BLOB-объекты переменного размера , возможно, сериализуемые или содержащие mime-тип . Фундаментальное сходство между реляционными и объектными базами данных — это запуск и фиксация или откат .

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

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

Системы баз данных реализуют распределенные транзакции [4] как транзакции, осуществляющие доступ к данным на нескольких узлах. Распределенная транзакция применяет свойства ACID на нескольких узлах и может включать в себя такие системы, как базы данных, менеджеры хранения, файловые системы, системы обмена сообщениями и другие менеджеры данных. В распределенной транзакции обычно существует организация, координирующая весь процесс, чтобы гарантировать, что все части транзакции применяются ко всем соответствующим системам. Более того, интеграция системы хранения как услуги (StaaS) в эти среды имеет решающее значение, поскольку она предлагает практически бесконечный пул ресурсов хранения, включающий ряд классов облачных хранилищ данных с различной доступностью, масштабируемостью и свойствами ACID. Эта интеграция необходима для достижения более высокой доступности, сокращения времени отклика и экономической эффективности в приложениях с интенсивным использованием данных, развернутых в облачных хранилищах данных. [5]

Транзакционные файловые системы

Файловая система Namesys Reiser4 для Linux [6] поддерживает транзакции, а начиная с Microsoft Windows Vista файловая система Microsoft NTFS [7] поддерживает распределенные транзакции по сетям. Проводятся исследования файловых систем с более согласованными данными, таких как транзакционная файловая система Warp (WTF). [8]

Смотрите также

Рекомендации

  1. ^ «Что такое транзакция? (Windows)» . msdn.microsoft.com . 7 января 2021 г.
  2. ^ ДИНКА, Ана-Мария; АКСИНТЕ, Сабина-Даниэла; БАЦИВАРОВ, Иоанн (29 декабря 2022 г.). «Повышение производительности транзакций базы данных». Международный журнал информационной безопасности и киберпреступности . 11 (2): 29–34. дои : 10.19107/ijisc.2022.02.02. ISSN  2285-9225. S2CID  259653728.
  3. ^ Бери, К.; Бернштейн, Пенсильвания; Гудман, Н. (1989). «Модель параллелизма в системах вложенных транзакций». Журнал АКМ . 36 (1): 230–269. дои : 10.1145/62044.62046 . S2CID  12956480.
  4. ^ Озсу, М. Тамер; Вальдурье, Патрик (2011). Принципы систем распределенных баз данных, третье издание . Спрингер. Бибкод : 2011podd.book.....О. дои : 10.1007/978-1-4419-8834-8. ISBN 978-1-4419-8833-1.
  5. ^ Мансури, Ясер; Туси, Адель Надджаран; Буя, Раджкумар (11 декабря 2017 г.). «Управление хранением данных в облачных средах: таксономия, исследование и будущие направления». Обзоры вычислительной техники ACM . 50 (6): 91:1–91:51. дои : 10.1145/3136623. ISSN  0360-0300.
  6. ^ "Linux.org". Linux.org .
  7. ^ «Библиотека MSDN». 4 февраля 2013 года . Проверено 16 октября 2014 г.
  8. ^ https://www.usenix.org/system/files/conference/nsdi16/nsdi16-paper-escriva.pdf [ пустой URL-адрес PDF ]

дальнейшее чтение

Внешние ссылки