(ウィキペディアからコピーされたとしても)誰かがコンピューティングに適用されるトランザクションの簡単な(しかし、可能な限り単純ではない)説明を提供できますか?
(ウィキペディアからコピーされたとしても)誰かがコンピューティングに適用されるトランザクションの簡単な(しかし、可能な限り単純ではない)説明を提供できますか?
回答:
トランザクションは、「全体」として扱いたい作業の単位です。完全に発生するか、まったく発生しないかのどちらかです。
古典的な例は、ある銀行口座から別の銀行口座への送金です。これを行うには、最初にソースアカウントから金額を引き出し、次に宛先アカウントに入金する必要があります。操作は完全に成功する必要があります。途中で止まるとお金がなくなってしまい、とても悪いです。
最近のデータベースでは、トランザクションは他のいくつかのことも実行します。たとえば、他の人が途中で書き込んだデータにアクセスできないようにします。しかし、基本的な考え方は同じです。トランザクションは、何が起こっても、操作するデータが適切な状態になるようにするためのものです。彼らは、ある口座からお金が引き出されても、別の口座に預金されないという状況が発生しないことを保証します。
トランザクションは、状態変化を表す方法です。トランザクションには、一般的にACIDとして知られる4つのプロパティが理想的です。
詳細については、Wikipedia ACIDエントリを参照してください。
これは通常データベースに適用されますが、そうである必要はありません。(特に、ソフトウェアトランザクションメモリを参照してください。)
ここに簡単な説明があります。アカウントAからアカウントBに100ドルを振り込む必要があります。次のいずれかを実行できます。
accountA -= 100;
accountB += 100;
または
accountB += 100;
accountA -= 100;
ペアの最初の操作と2番目の操作の間に何か問題が発生した場合、問題が発生します-100ドルがなくなったか、どこからともなく出てきました。
トランザクションは、操作のグループにマークを付けて、それらがすべて実行(コミット)するか、システム状態が実行をまったく開始していないかのように(ロールバック)実行するメカニズムです。
beginTransaction;
accountB += 100;
accountA -= 100;
commitTransaction;
100ドルを送金するか、両方の口座を初期状態のままにします。
「データベースを一貫した状態にして、完全に完了するか完全に失敗する必要がある一連のデータ操作ステートメント」
トランザクションは、1つの単位として扱われる1つ以上のSQL操作のシーケンスです。
具体的には、各トランザクションは分離して実行されているように見え、さらに、システムに障害が発生した場合、各トランザクションは完全に実行されるか、すべて実行されないかのどちらかです。
トランザクションの概念は、2つの完全に独立した懸念によって動機付けられています。1つは複数のクライアントによるデータベースへの同時アクセスに関係しており、もう1つはシステム障害に耐性のあるシステムを持つことに関係しています。
トランザクションは、ACIDプロパティと呼ばれるものをサポートします。
http://en.wikipedia.org/wiki/Database_transaction
http://en.wikipedia.org/wiki/ACID
ACID = A tomicity、C onsistency 、I solation 、D urability
複数のトランザクションリソースを1つのトランザクションに関与させたい場合は、2フェーズコミットソリューションのようなものを使用する必要があります。XAはかなり広くサポートされています。
「トランザクション処理」の定義は、トランザクションをコンピュータサイエンスの概念として扱っているため、より役立つと思います。
ウィキペディアから:
コンピュータサイエンスでは、トランザクション処理は、トランザクションと呼ばれる個別の分割できない操作に分割される情報処理です。各トランザクションは、完全な単位として成功または失敗する必要があります。中間状態のままにすることはできません。
http://en.wikipedia.org/wiki/Transaction_processing#Implementations
上記の応答に加えて、少なくとも理論的には、トランザクションにどのような種類のリソースが関与しているかについては制限がないことに注意してください。
ほとんどの場合、それは単なるデータベースまたは複数の個別のデータベースですが、プリンターがトランザクションに参加し、紙詰まりが発生した場合などにトランザクションが失敗する可能性も考えられます。
トランザクションは、最小処理単位と見なされるタスクのコレクションとして定義できます。各最小処理単位をさらに分割することはできません。
トランザクションの主な操作は読み取りと書き込みです。
すべてのトランザクションには、正確性、完全性、およびデータの整合性を確保するために、一般にACIDプロパティとして知られる4つのプロパティが含まれている必要があります。
トランザクションは、DBMSに関してはアトミックなアクションだと思います。
つまり、分離することはできません。はい、トランザクションでは、システムが実行するいくつかの命令がある場合があります。しかし、それらは結合されて単一の基本的なタスクを完了します。
例えば。橋を渡る必要があります(これをトランザクションとして扱いましょう)。これを行うには、たとえば、100ステップ必要です。全体として、これらのステップを分離することはできません。それらの半分を完了したら、選択肢は2つしかありません。それらすべてを終了し続けることと、開始点に戻ることです。トランザクションの結果と同じです。success(committed)とfail(rollback)