第30章 取引
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
30.0 はじめに
トランザクションとは、 、暫定的または多段階の変更をサポートするシステムの能力を表す。トランザクションのコンテキスト内で変更を行う場合、システムは主に4つの保証を提供する:
- 孤立
-
トランザクションに参加していない 観測者にとって、トランザクション内のコマンドはシステムに影響を与えていない。
- 原子性
-
、トランザクションを確定(コミット)すると、すべての変更が有効になるか、まったく有効にならないかのどちらかになる。
- 一貫性
-
トランザクション中に発生したエラー( )は、システムの状態を一貫性のない状態に戻すために処理される。
- 耐久性
-
システムからトランザクションの成功が通知されれば、変更が永続的なものであることを確信できる。
実際の取引の例として、2つの銀行口座間の送金を考えてみよう。最初の口座から減算し、2番目の口座に追加する。この状況では、堅牢性と正しさの目標は全く同じである:
- 孤立
-
送金が行われている間(しかしまだ完了していない)、両方の銀行口座の残高は変わっていないように見える。
- 原子性
-
プロセスのある時点で、1つ目の口座から減算したが、まだ2つ目の口座に追加していない可能性がある。送金を処理するとき、システムがこの中間状態を決して表示しないことが重要だ。すべての変更が反映されるか、まったく反映されないかのどちらかである。
- 一貫性
-
送金中にエラーが発生した場合、システムは中途半端な状態にならないように修正措置を取る。おそらく、当座貸越手数料を追加するか、送金を完全に放棄することで、資金不足に対応する。例えば、2つ目の口座に入金せずに、1つの口座から資金を引き出すようなことがあってはならない。
- 耐久性
-
いったん送金が完了すれば、システムエラーでその全部または一部が取り消されてしまう心配はない。
通常、トランザクションは開発者のトピックであるが、PowerShellはトランザクションをエンドユーザの概念として公開し、一貫したシステム管理の可能性を大きく広げている。
トランザクションを開始するには、Start-Transaction コマンドレットを呼び出す。トランザクションをサポートするコマンドレットを使用するには、-UseTransaction パラメータを指定する。トランザクションをサポートする多くのコマンドレットは、パラメータがなくても同様に動作するため、このパラメータを明示的に指定することは非常に重要である。そのため、PowerShellは、このパラメータを指定した場合のみ、コマンドレットをトランザクションに参加させる。
PowerShellのレジストリ・プロバイダーは、ファーストクラスの概念としてトランザクションをサポートしている。これはレシピ21.6で実際に見ることができる。
PS > Set-Location HKCU: PS > Start-Transaction PS > mkdir TempKey -UseTransaction Hive: HKEY_CURRENT_USER SKC VC Name Property --- -- ---- -------- 0 0 TempKey {} PS > New-Item TempKey\TempKey2 -UseTransaction Hive: HKEY_CURRENT_USER\TempKey ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access