Может ли кто-нибудь предоставить простое (но не более простое) объяснение транзакции применительно к вычислениям (даже если скопировано из Википедии)?Что такое транзакция с базой данных?
ответ
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = tomicity, C onsistency, I solation, D urability
Если вы хотите для нескольких транзакционных ресурсов, которые будут участвовать в одной транзакции, вам нужно будет использовать что-то вроде two-phase commit. XA довольно широко поддерживается.
«Последовательность операторов манипулирования данными, которые либо полностью завершена или полностью должны потерпеть неудачу, оставляя базу данных в согласованном состоянии»
Не только база данных. Мы можем распространить эту концепцию на другие компоненты - например, обслуживание очередей или состояние внешних систем. Итак, «Серия операторов обработки данных, которые должны либо полностью завершить, либо полностью выйти из строя, оставив систему в согласованном состоянии» –
Действительно. Хорошо сказано. – Rad
Вот простое объяснение. Вам нужно перевести 100 долларов со счета А на счет B. Вы можете сделать:
accountA -= 100;
accountB += 100;
или
accountB += 100;
accountA -= 100;
Если что-то пойдет не так, между первой и второй операции в паре у вас есть проблема - исчезли 100 баксов, или они появились из ниоткуда.
Сделка - это механизм, который позволяет вам отмечать группу операций и выполнять их таким образом, что либо все они выполняют (совершают), либо состояние системы будет, как если бы они еще не начали выполнять (откат).
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
будет либо передавать 100 баксов, либо оставить обе учетные записи в исходном состоянии.
Сделка - это способ представления изменения состояния. Операции в идеале иметь четыре свойства, широко известные как ACID:
- Atomic (если изменение совершается, это происходит одним махом, вы никогда не можете увидеть «половину изменения»)
- Последовательная (изменение может только если новое состояние системы будет действительным, любая попытка совершить недействительные изменения завершится неудачно, оставив систему в ее предыдущем действительном состоянии)
- Изолированный (никто не видит какую-либо часть транзакции до ее совершения)
- Прочный (как только произошло изменение - если система заявила, что транзакция была совершена, клиенту не нужно беспокоиться t «промывка» системы для внесения изменения «stick»)
См. статью Википедии ACID для получения более подробной информации.
Хотя это обычно применяется к базам данных, это необязательно. (В частности, см. Software Transactional Memory.)
Сделка - это единица работы, которую вы хотите рассматривать как «целое». Он должен либо произойти полностью, либо совсем не.
Классический пример - перевод денег с одного банковского счета на другой. Для этого вы должны сначала снять сумму с исходной учетной записи, а затем внести ее в целевую учетную запись. Операция должна преуспеть в полном объеме. Если вы остановитесь на полпути, деньги будут потеряны, и это очень плохо.
В современных базах данных транзакции также выполняют некоторые другие действия - например, гарантировать, что вы не можете получить доступ к данным, которые другой человек написал на полпути. Но основная идея одна и та же: транзакции заключаются в том, что независимо от того, что произойдет, данные, с которыми вы работаете, будут в разумном состоянии. Они гарантируют, что не будет ситуации, когда деньги изымаются с одного счета, но не депонируются на другом.
+1 для примера !! –
Этот ответ должен быть принят. – user1205577
Спасибо за очень простой пример – Nomadme
Я бы предположил, что определение «обработка транзакций» было бы более полезным, поскольку оно охватывает транзакции как концепцию в информатике.
Из википедии:
В информатике, обработка транзакций является обработка информации, которая разделена на отдельные неделимые операции, называемые сделки. Каждая транзакция должна быть успешной или неудачной как полная единица; он не может оставаться в промежуточном состоянии.
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
Я думаю, что сделка является атомарным действием с точки зрения СУБД.
Это означает, что он не может быть разделен. да, при трансмиссии может быть несколько инструкций для выполнения системы. но они привязаны друг к другу, чтобы завершить одну основную задачу.
например. вам нужно пройти через мост (давайте рассмотрим это как трансляцию), и для этого, скажем, вам понадобится 100 шагов. В целом эти шаги не могут быть разделены. когда вы сделали половину из них, для вас есть только два варианта: продолжайте их завершать и возвращайтесь к начальной точке. это точно так же, как результат транзакции: успех (совершенный) и отказ (откат)
В дополнение к приведенным выше ответам следует отметить, что, по крайней мере теоретически, нет никаких ограничений относительно того, ресурсов участвуют в транзакции.
В большинстве случаев это просто база данных или несколько различных баз данных, но также возможно, что принтер принимает участие в транзакции и может привести к сбою транзакции, например, в случае замятия бумаги ,
Сделка представляет собой последовательность из одной или нескольких операций SQL, которые рассматриваются как единое целое.
В частности, каждая транзакция представляется изолированной, и, кроме того, если система выходит из строя, каждая транзакция выполняется либо полностью, либо не все.
Концепция сделок мотивирована двумя совершенно независимыми проблемами. Один из них связан с одновременным доступом к базе данных несколькими клиентами, а другой должен сделать с системой, устойчивой к сбоям системы.
Transaction поддерживает то, что известно как свойства ACID:
- A: атомарность;
- C: Консистенция;
- I: Изоляция;
- D: Долговечность.
сделка является неделимой единицей обработки данных -Все операции должны обладать свойствами ACID:
именно: атомарность, согласованность, изолированность и прочный сделка все или ничего, но не intermidiate (это означает, что если вы переводите свои деньги с одной учетной записи на другую учетную запись, одна учетная запись должна потерять столько, и другая должна получить эту сумму, но если вы переведете деньги с одной учетной записи, а другая учетная запись останется пустой, это не будет транзакция)
Свойства Сделки:
Сделки имеет следующие четыре стандартных свойств, как правило, называют акроним ACID:
Atomicity: ensures that all operations within the work unit are completed
successfully; otherwise, the transaction is aborted at the point of
failure, and previous operations are rolled back to their former state.
Consistency: ensures that the database properly changes states upon a successfully
committed transaction.
Isolation: enables transactions to operate independently of and transparent to
each other.
Durability: ensures that the result or effect of a committed transaction persists
in case of a system failure.
управление транзакциями:
Существуют следующие команды, используемые для управления транзакциями:
COMMIT: to save the changes.
ROLLBACK: to rollback the changes.
SAVEPOINT: creates points within groups of transactions in which to ROLLBACK
SET TRANSACTION: Places a name on a transaction.
Сделки может быть определена как совокупность задач, которые считаются минимальной единицей обработки. Каждый минимальный процессор не может быть разделен дальше.
Основная операция транзакции - чтение и запись.
Все транзакции должны содержать четыре свойства, которые обычно известны как свойства ACID с целью обеспечения точности, полноты и целостности данных.
вся КИСЛОТА. – van