Может ли кто-нибудь дать прямое (но не более простое, чем возможно) объяснение транзакции применительно к вычислениям (даже если оно скопировано из Википедии)?
Может ли кто-нибудь дать прямое (но не более простое, чем возможно) объяснение транзакции применительно к вычислениям (даже если оно скопировано из Википедии)?
Ответы:
Транзакция - это единица работы, которую вы хотите рассматривать как «единое целое». Это должно произойти либо полностью, либо не произойти вовсе.
Классический пример - перевод денег с одного банковского счета на другой. Для этого вы должны сначала снять сумму с исходного счета, а затем внести ее на целевой счет. Операция должна пройти полностью. Если вы остановитесь на полпути, деньги будут потеряны, а это очень плохо.
В современных базах данных транзакции также выполняют некоторые другие функции - например, гарантируют, что вы не сможете получить доступ к данным, написанным другим человеком на полпути. Но основная идея та же - транзакции нужны, чтобы гарантировать, что что бы ни случилось, данные, с которыми вы работаете, будут в разумном состоянии . Они гарантируют, что НЕ будет ситуации, когда деньги снимаются с одного счета, но не зачисляются на другой.
Транзакция - это способ представления изменения состояния. В идеале транзакции имеют четыре свойства, обычно известные как ACID:
См. Запись в Википедии ACID для получения более подробной информации.
Хотя это обычно применяется к базам данных, это не обязательно. (В частности, см. Программная транзакционная память .)
Вот простое объяснение. Вам нужно перевести 100 баксов со счета A на счет B. Вы можете:
accountA -= 100;
accountB += 100;
или
accountB += 100;
accountA -= 100;
Если что-то пошло не так между первой и второй операцией в паре, у вас проблема - либо 100 баксов пропали, либо они возникли из ниоткуда.
Транзакция - это механизм, который позволяет вам отмечать группу операций и выполнять их таким образом, чтобы либо все они выполнялись (фиксация), либо состояние системы было таким, как если бы они вообще не начинали выполняться (откат).
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
либо переведет 100 баксов, либо оставит оба счета в исходном состоянии.
«Серия операторов манипулирования данными, которые должны либо полностью завершиться, либо полностью выйти из строя, оставляя базу данных в согласованном состоянии»
Транзакция - это последовательность одной или нескольких операций SQL, которые рассматриваются как единое целое.
В частности, кажется, что каждая транзакция выполняется изолированно, и, кроме того, в случае сбоя системы каждая транзакция выполняется либо полностью, либо не полностью.
Концепция транзакций мотивирована двумя полностью независимыми проблемами. Один связан с одновременным доступом к базе данных нескольких клиентов, а другой - с наличием системы, устойчивой к сбоям системы.
Транзакция поддерживает так называемые свойства ACID:
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity, С onsistency, я solation, D urability
Если вы хотите, чтобы несколько транзакционных ресурсов были задействованы в одной транзакции, вам нужно будет использовать что-то вроде решения с двухфазной фиксацией .XA довольно широко поддерживается.
Я бы предположил, что определение «обработки транзакций» было бы более полезным, поскольку оно охватывает транзакции как концепцию в информатике.
Из википедии:
В информатике обработка транзакций - это обработка информации, которая делится на отдельные неделимые операции, называемые транзакциями. Каждая транзакция должна быть успешной или неудачной как единое целое; он не может оставаться в промежуточном состоянии.
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
В дополнение к приведенным выше ответам следует отметить, что, по крайней мере теоретически, нет никаких ограничений в отношении того, какие ресурсы задействованы в транзакции.
В большинстве случаев это просто база данных или несколько отдельных баз данных, но также возможно, что принтер принимает участие в транзакции и может вызвать сбой этой транзакции, например, в случае замятия бумаги.
Транзакцию можно определить как набор задач, которые рассматриваются как минимальная единица обработки. Каждую минимальную единицу обработки нельзя разделить дальше.
Основные операции транзакции - это чтение и запись.
Вся транзакция должна содержать четыре свойства, которые обычно называются свойствами ACID, с целью обеспечения точности, полноты и целостности данных.
Я считаю, что с точки зрения СУБД транзакция - это атомарное действие.
это означает, что его нельзя отделить. да, в транзакции может быть несколько инструкций для выполнения системой. но они связаны вместе, чтобы выполнить одну базовую задачу.
например. нужно пройти по мосту (будем рассматривать это как переход), а для этого, скажем, нужно 100 шагов. в целом эти шаги нельзя разделить. когда вы выполнили половину из них, у вас есть только два выбора: продолжить их все и вернуться к исходной точке. это похоже на результат транзакции: успех (зафиксирован) и сбой (откат)
Транзакция - это неделимая единица обработки данных. Все транзакции должны иметь свойства ACID:
то есть: атомарность, согласованность, изоляция и надежная транзакция - это все или ничего, но не промежуточные (это означает, что если вы переводите свои деньги с одной учетной записи на другую, одна учетная запись должна потерять столько же, а другая должна получить эту сумму, но если вы переводите деньги с одного счета, а другой счет все еще пуст, что не будет транзакцией)