今回は短めです。ACIDのACの部分の補足です。
ACとは「Atomicity 原始性」「Consistency 一貫性」です。
今回は特殊パターン?の2層コミットに関して解説します。
原始性と一貫性
トランザクションにおける原始性とは
「すべて成功かすべて失敗」にするという事です。
中途半端な処理は許しません。
一貫性とは矛盾しないデータという事です。
詳しくはこちらで解説しています。
分散DBにおける2層コミットメント制御
2層コミットメントとは,
例えば大阪と東京などに,物理的に離れた場所に
データベースが分散されて配置されている場合で
その中のデータの整合性を合わせておく必要がある場合に
使用します。
例えば大阪にトランザクション処理をしてコミットし,
東京にトランザクション処理をしてコミットする場合,
最初の大阪は成功したけど東京では失敗したって場合は
東京だけロールバックしても意味がないですよね?
大阪もしっかり,データを戻す処理が必要です。
でも大阪のデータを戻す最中にエラーになったら?って
考えたら,非常に複雑なエラー処理になります。
そこで,大阪のトランザクション処理をして
OKだった場合,コミットかロールバックをするよっていう
状態にしておいて,
東京のトランザクション処理をします。
東京も成功した場合に
大阪と東京のデータを両方コミットします。
これを2層コミットメントといいます。
SQLやデータベースについてもっと学びたい方は次の記事でおすすめの書籍を紹介しています↓
<< 1 2 3 4 5 6 7 8 9 10 11 12 >>
#01_はじめに
#02_VisualStudio2022のインストール
#03_SQLServerのインストール
#04_データベースとテーブルの作成
#05_プロジェクトの作成
#06_接続先文字列の作成
#07_データテーブルでのデータの取得
#08_Sqlアクセスクラスの作成
#09_SqlDataReaderでのデータ取得
#10_SqlDataReaderの結果をカスタムクラスに入れる方法
#11_SqlCommandでInsert文を発行する方法
#12_SqlCommandでUpdate文を発行する方法
#13_Update対象がなかったらInsertする方法
#14_SqlCommandでDelete文を発行する方法
#15_Dapperでデータを取得する方法
#16_DapperでInsert文を発行する方法
#17_EntityFrameworkをインストールしてDbContextを作成する方法
#18_EntityFrameworkでデータを取得する方法
#19_EntityFrameworkでInsert文を発行する方法
#20_EntityFrameworkでUpdate文を発行する方法
#21_EntityFrameworkでDelete文を発行する方法
#22_Helperクラスを作ってSqlCommand操作を共通化する方法
#23_パフォーマンスチェックの方法
#24_4つのデータのとり方のパフォーマンスチェック
#25_4つの結果を踏まえて講評
#26_さいごに
下記URLは、ベネッセが提供する教育用プラットフォームにて
私が公開しているプログラミング学習コースです。
無料コースもあるので、よかったらご覧になってみてください。
【無料動画】「C#を勉強する順番」