トランザクションで複数の操作をグループ化する
データの一部分を変更するとデータの別の部分の変更が必要になる場合は、アプリケーションで一連のデータ更新をグループ化する必要があります。 これらの更新をグループ化するには、"トランザクション" を使用できます。 トランザクションでは、一連の更新の 1 つのイベントが失敗した場合、グループ全体をロールバックする、つまり元に戻すことができます。
たとえば、1 つのトランザクションを使って発注し、支払いを確認し、製品在庫を更新するオンライン小売業者があります。 関連するイベントをグループ化すると、支払いの承認済みフォームを受け取るまで、在庫レベルが減りません。
次に、トランザクションについて、また自分のデータに対してトランザクションが必要かどうかを学習します。
トランザクションとは
トランザクションは、一緒に実行されるデータベース操作の論理グループです。
自分のアプリケーションでトランザクションを使用する必要があるかどうかを確認するには、次のように自問してみてください。データセット内のデータのある部分を変更すると、データの別の部分に影響がありますか? 答えが "はい" の場合は、データベース サービスでトランザクションがサポートされる必要があります。
ACID の保証では、4 つの要件のセットが満たされていることを確認してトランザクションが定義されます。 ACID は、原子性 (atomicity)、一貫性 (consistency)、分離性 (isolation)、持続性 (durability) を表します。
- "原子性" は、トランザクションが必ず 1 回だけ実行され、アトミックである必要があることを意味します。 つまり、すべての作業が行われるか、さもなければ何も行われない、ということです。 トランザクション内の操作は、通常、共通の意図を共有し、相互に依存しています。
- 整合性は、トランザクションの実行前と実行後でデータの整合性が取れていることを保証します。
- "分離性" は、各トランザクションが他のトランザクションによる影響を受けないことを保証します。
- "持続性" とは、トランザクションの結果として行われた変更が、システムに永続的に保存されることを意味します。 障害が発生してシステムが再起動した場合でも、データを正しい状態で使用できるように、システムはコミットされたデータを保存します。
データベースで ACID が保証されていると、これらの原則が各トランザクションに一貫して適用されます。
OLTP と OLAP の比較
トランザクション データベースは、"オンライン トランザクション処理 (OLTP)" システムと呼ばれることがよくあります。 一般に、OLTP システムでは、多数のユーザーがサポートされ、応答時間が速く、大量のデータが処理されます。 また、可用性も高く、これはダウンタイムが最小限であることを意味します。 OLTP システムでは、通常、小規模なトランザクションまたは比較的シンプルなトランザクションが処理されます。
OLTP をサポートする Azure サービスの例としては、Azure SQL Database があります。
"オンライン分析処理 (OLAP)" システムでは、一般に、少数のユーザーがサポートされ、応答時間が長く、可用性が低いことがあり、通常は大規模なトランザクションまたは複雑なトランザクションが処理されます。
OLAP をサポートする Azure サービスの例としては、Azure Analysis Services があります。
OLTP と OLAP という用語は一時期ほど頻繁には使用されなくなりましたが、これらを理解していると、アプリケーションのニーズの分類が容易になります。
トランザクション: データの種類を評価する
データを正しい状態に維持することは、簡単なタスクではない場合があります。 トランザクションを使用すると、自分のデータに対してデータ整合性要件が適用されるので役立つ場合があります。 ACID の原則によってメリットがあるデータの場合は、トランザクションをサポートするストレージ ソリューションを選びます。
オンライン小売りシナリオの各データ セットを調べて、トランザクションが必要かどうかを判断しましょう。
製品カタログ データ
製品カタログ データは、トランザクション データベースに格納する必要があります。 ユーザーが注文を出して支払いが確認されたら、品目の在庫を更新する必要があります。 同様に、客のクレジット カードが拒否された場合は、注文をロールバックし、在庫を更新しないようにする必要があります。 これらの関係では、トランザクションが必要です。
写真とビデオ
製品カタログ内の写真やビデオについては、トランザクションのサポートは必要ありません。 これらのファイルは、更新が行われるとき、または新しいファイルが追加されるときにのみ、変更されます。 イメージと実際の製品データの間には関係がありますが、それは本質的にトランザクションではありません。
ビジネス データ
ビジネス データは過去のもので変化しないので、トランザクションのサポートは必要ありません。 データを処理するビジネス アナリストにも、固有のクエリ ニーズがあります。 多くの場合、クエリでは集計を使用するので、他のより小さいデータ ポイントの合計を処理できます。