NoSQL
イベント
該当するコンテンツが見つかりませんでした
マガジン
該当するコンテンツが見つかりませんでした
技術ブログ
本記事は 2026 年 03 月 31 日 に公開された “ Enabling nested transactions in Amazon DynamoDB using C# ” を翻訳したものです。翻訳は Solutions Architect の嶋田 朱里が担当しました。 Amazon DynamoDB は、あらゆる規模の高性能アプリケーション向けに設計された、フルマネージド型のサーバーレス NoSQL データベースサービスです。この記事では、C# を使用して DynamoDB で ACID (原子性、一貫性、分離性、永続性) 準拠のトランザクションを管理するフレームワークを紹介します。このフレームワークは、ネストされたトランザクションのサポートを特徴としています。この機能により、.NET アプリケーション内でデータの一貫性とエラー処理をより細かく制御しながら、洗練されたロジックを実装できます。このネストされたトランザクションフレームワークを使用すると、問題を分離し、部分的なロールバックを可能にし、DynamoDB の組み込みトランザクション機能の上に保守可能でモジュール化されたワークフローを構築できます。 トランザクションフレームワークのおさらい ネストされたトランザクションに入る前に、このトランザクションフレームワークが何をするのかを簡単に振り返りましょう。 Amazon DynamoDB トランザクションフレームワーク は、DynamoDB の組み込みトランザクション機能を使った作業を効率化する C# ライブラリです。このフレームワークは以下を提供します。 トランザクションのライフサイクル (開始、コミット、ロールバック) を管理する TransactScope クラス 複数の DynamoDB テーブルにわたる ACID 準拠の操作の効率化 DynamoDB の TransactWriteItems および TransactGetItems API の低レベルの詳細 (複数のネストされたレベルにわたるトランザクションの調整やリクエストの構築など) を管理する抽象化レイヤー フレームワークに組み込まれたエラー処理と再試行ロジック このフレームワークは、複数の関連するデータアイテムを扱う場合でも、データの一貫性を維持する信頼性の高いアプリケーションの構築を支援します。在庫管理、金融取引、ユーザープロファイルの更新、または複数の DynamoDB 操作が単一のユニットとして成功または失敗する必要があるあらゆる状況で使用できます。 ネストされたトランザクションが重要な理由 ネストされたトランザクションにより、トランザクション操作を親トランザクションのスコープ内に存在させることができます。この機能は、エンタープライズグレードのシステムにおける柔軟性と堅牢性を向上させます。たとえば、システム内のモジュール化されたコンポーネントは、親トランザクション構造に影響を与えることなく独自のロジックをカプセル化でき、プロセスの一部で問題が発生した場合に部分的なロールバックを実行できます。エラーの影響範囲を発生元のトランザクション内に閉じ込めることで、ネストされたトランザクションはトランザクション全体の失敗のリスクを軽減し、フォールトトレランスを向上させ、システムのデバッグと保守をより容易にします。 サンプルアプリケーションの概要 ネストされたトランザクションを実際にどのように使用できるかを示すために、フレームワークの機能を紹介する サンプル Windows Forms アプリケーション を作成しました。このアプリケーションでは、複数レベルのネストされたトランザクションを通じてトランザクションの整合性を維持しながら、さまざまな製品タイプに対して一般的なデータ操作 (作成、削除、取得) を実行できます。 このサンプルアプリケーションは、ネストされたトランザクションが特に有効な、いくつかの一般的なシナリオを想定して作られています。 複雑なビジネスワークフロー : 複数の関連アイテム (e コマースの注文プロセスやコンテンツ管理の更新など) に変更を加える必要がある場合 エラーの分離 : プロセス全体をロールバックすることなく、特定の操作グループ内で障害を封じ込めたい場合 モジュール化されたシステム統合 : システムのさまざまなコンポーネントが独自のトランザクションコンテキストを維持する必要がある場合 次の画像の UI アプリケーションは、ネストされたトランザクションフレームワークを使用する DynamoDB Transaction Example というタイトルのフォームを提供します。これは、ネストされたトランザクションの仕組みを使って書籍、アルバム、映画を管理します。 主要な手順の流れは次のとおりです。 書籍、アルバム、映画用の DynamoDB テーブルを初期化するには、 Create Product Tables (Book, Album, Movie) を選択します。これは通常、管理者として処理する 1 回限りのセットアップ手順です。 テーブルが配置されたら、 Product Type ドロップダウンメニューから Album 、 Book 、または Movie を選択します。この選択により、フォームフィールドが製品の属性に合わせてカスタマイズされます。たとえば、 Album を選択すると Album Artist と Title の入力が求められ、 Movie では Director と Genre が求められます。 対応する製品の詳細を入力します。これらの詳細は、選択した製品カテゴリによって異なります。たとえば、書籍には著者名、タイトル、およびオプションで出版日が必要であり、映画には監督名、タイトル、ジャンルが必要です。フォームでは、製品エントリの追加、削除、取得を含むトランザクション操作を実行するオプションが提供されます。 このアプリでは、ネストされたトランザクションを使用して、複数のトランザクションを開始し、それぞれのトランザクション内でアイテムの追加や削除を行い、個別にコミットまたはロールバックできます。また、ネストされたトランザクションフレームワークの動作を確認できるよう、親トランザクションと子トランザクションの間を行き来できるナビゲーション機能も備えています。これにより、どの操作をどのトランザクションにまとめるかを細かく制御できます。現在のトランザクションの階層は括弧内の数字で表示され (たとえば、 Transaction (1) )、 Commit Transaction や Rollback Transaction などの操作は、現在の階層とその配下の子トランザクションに対して適用されます。 Album Artist や Title などのキーを提供することで、オプションで製品データを取得できます ( Retrieve Item を選択)。すべての応答 (成功メッセージ、エラー通知、または取得されたデータ) は、 Response Message フィールドと対応する製品属性ボックスに表示されます。 次の図は、DynamoDB でのネストされたトランザクションのシーケンスフローを示しています。親と子のトランザクションスコープがどのように相互作用して分離されたアトミック操作を提供するかを示しています。 フレームワークアーキテクチャ このフレームワークは、 TransactScope クラスを強化し、Composition や Chain of Responsibility などのデザインパターンを採用することで、ネストされたトランザクションをサポートします。 コミット操作は後入れ先出し (LIFO) の順序に従い、親の前に子の TransactScope を処理します。また、ロールバック操作も下位へと順次伝播するため、障害発生時には完全にクリーンアップされます。このシステムはスコープ間の双方向移動を可能にし、複雑なトランザクションフローの管理をより簡単にします。 アーキテクチャの適用性に関する注意: ここで提示されるフレームワークアーキテクチャ設計は、上記のサンプルアプリケーションでは C# で実装されていますが、他のすべてのオブジェクト指向プログラミング言語とプラットフォームに適用され、設計原則の幅広い適用性を保証します。 次の図は、カスタム TransactScope クラス構造を使用したネストされたトランザクションモデルを示しています。 _transactRequest プロパティは TransactWriteItemsRequest を保持し、DynamoDB の複数の書き込み操作 (Put、Update、Delete) を単一のトランザクションにバッチ処理するために使用されます。 _childTransactScope は TransactScope (具体的には子スコープ) を指し、この TransactScope 内にネストされたトランザクションが存在することを示します。逆に、 _parentTransactScope は親の TransactScope を指し、トランザクション間の親子関係を確立します。 レイヤードアーキテクチャ アプリケーションでネストされたトランザクションフレームワークを効果的に使用するには、そのレイヤードアーキテクチャを理解することが役立ちます。この設計は責務の分離を提供し、コードの保守性とテストのしやすさを向上させます。アーキテクチャは 4 つの主要なレイヤーで構成されています。 UI レイヤー : Windows Forms インターフェイスは、トランザクションの開始と管理のエントリポイントとして機能します。サービスレイヤーのメソッドを呼び出して、BeginTransaction()、CommitTransactionAsync()、RollbackTransaction() を実行し、トランザクションのライフサイクルを制御します。 サービスレイヤー : ProductService や TransactScope を含むこのレイヤーは、トランザクションのオーケストレーションを管理します。ネストされたスコープ間を作成およびナビゲートし、トランザクションロジックを一元化します。これは、トランザクション管理コードの大部分が存在する場所です。 データアクセスレイヤー : ここで、 ProductProvider は、サービスレイヤーによって提供されるトランザクションコンテキスト内で、挿入や削除などのデータ操作を実行します。このレイヤーで、ドメインオブジェクトの特定のデータアクセスロジックを実装します。 DynamoDB : 最下層では、DynamoDB が組み込みトランザクション API ( TransactWriteItems ) を通じてアトミックな実行をサポートし、すべての操作が成功するか、いずれも成功しないことを保証します。 設計のハイライト ワークフローは、使いやすさと堅牢性を向上させるコア機能を備えて設計されており、主に Begin/Commit/Rollback 構造を通じて実現されています。これにより、操作をアトミック (すべて成功するか、いずれも成功しない) にすることで、DynamoDB でのトランザクションの整合性と一貫性が保証されます。さらに、ネストされたトランザクションを使用する機能により、親スコープと子スコープを簡単に切り替えることで、より複雑でモジュール化されたワークフローが可能になります。 インターフェイスは、アクションを追跡するのに役立つ動的なフィードバックも提供します。トランザクションの深さインジケーター (括弧内に表示) は、操作がステージングされるにつれて更新され、ワークフローの現在の状態に関する明確な洞察を提供します。最後に、システムは統一されたインターフェイス内で複数の製品タイプ (書籍、アルバム、映画) をサポートします。これにより、同じトランザクションスコープ内で複数の DynamoDB テーブルにわたってアイテムを追加、削除、取得できます。サービスレイヤーでの一元化されたトランザクション管理により、責任が明確に分離され、DynamoDB が原子性を提供します。このレイヤードアプローチは、実世界のアプリケーションに必要な柔軟性を提供しながら、保守性を向上させます。 ネストされたトランザクションのベストプラクティス アプリケーションでこの設計を最大限に活用するには、次の実用的なガイドラインに従ってください。 DynamoDB の制限に注意する – DynamoDB の制限 (100 アイテム、トランザクションあたり 4 MB) 内に収まるように、トランザクションを短く保ちます。それに応じてデータモデルを計画してください。 再試行ロジックを実装する : DynamoDB トランザクションは、条件チェック、競合、または容量の問題により失敗する可能性があります。指数バックオフを使用した効果的な再試行メカニズムをアプリケーションに組み込んでください。 パフォーマンスを監視する : Amazon CloudWatch アラームを設定して、トランザクション競合率、レイテンシー、例外などのトランザクションメトリクスを追跡し、ボトルネックを早期に特定します。 ネストの深さを制限する : ネストされたトランザクションは柔軟性を提供しますが、過度のネスト (3 〜 4 レベルを超える) は、デバッグと保守が困難な過度に複雑な実行パスを作成する可能性があります。 実世界のユースケース フレームワークを理解したところで、独自のアプリケーションでネストされたトランザクションを適用できるいくつかの実用的なシナリオについて説明しましょう。 e コマースの注文処理 : 顧客が注文を行う場合、在庫レベルの更新、支払い情報の処理、注文レコードの作成が必要になる場合があります。ネストされたトランザクションを使用すると、支払い処理をサブトランザクションに分離でき、支払いが失敗した場合に独立してロールバックできます。 複数ステップのユーザー登録 : 初期ユーザープロファイルの作成、セキュリティ検証、アカウントの最終化など、複数の検証ステップを含む複雑な登録プロセスがアプリケーションに必要な場合、ネストされたトランザクションを使用して各段階の進行状況を追跡しながら、必要に応じて特定のステップをロールバックする機能を維持できます。 コンテンツ管理システム : 複数の関連エンティティ (記事、著者、カテゴリなど) への更新を必要とするコンテンツを公開する場合、ネストされたトランザクションは、特定のドメイン内で部分的な操作を可能にしながら一貫性を維持するのに役立ちます。 金融アプリケーション : 複数のアカウントや金融商品を含む操作の場合、ネストされたトランザクションは、アカウント管理コンテキスト、トランザクション処理コンテキスト、データ整合性コンテキストなどの特定の操作コンテキストを分離しながら、一貫性を提供するために必要なきめ細かい制御を提供します。 まとめ この記事では、C# を使用した Amazon DynamoDB でのネストされたトランザクションフレームワークを紹介しました。これにより、トランザクションワークフローでの制御と堅牢性が向上します。 TransactScope クラスを拡張することで、このソリューションは、コミットとロールバックの動作をより細かく制御しながら、複雑でモジュール化されたビジネス操作をモデル化する柔軟性を提供します。構造化された UI ワークフローと、UI レイヤー、サービスレイヤー、データアクセスレイヤーにまたがるレイヤードアーキテクチャは、すべての製品関連操作にわたってトランザクションの整合性、分離性、一貫性を提供します。 この実装の完全なソースコードは、 GitHub リポジトリ で入手できます。 著者について Jeff Chen Jeff は、AWS Professional Services のプリンシパルコンサルタントであり、生成 AI を活用したアプリケーションのモダナイゼーションと移行プロジェクトを通じて顧客を支援することを専門としています。生成 AI 以外にも、DevOps、データ分析、インフラストラクチャプロビジョニング、セキュリティなど、さまざまなドメインにわたってビジネス価値を提供し、組織が戦略的なクラウド目標を達成できるよう支援しています。
AWS では、データと AI を活用したイノベーションの推進を支援するため、「 AWS Data & AI イノベーションフォーラム:顧客成功事例から学ぶデータ活用の最前線 」というイベントを4/9,10に開催いたします。本記事では、4/10 の DAY 2 (Database 編) の詳細についてご案内します。 はじめに DAY 2 の見どころは、昨年 5 月に一般提供を開始した Amazon Aurora DSQL について、本番環境で使用中のお客様や検証したお客様をお呼びして、リアルな声をお届けするセッションです。 お客様の経験や課題解決のプロセスを知ることで、皆様のデータベース戦略にも活かしていただけます。 ぜひ会場でご参加ください。 イベント概要 本イベントは 2 日間にわたって開催され、AWS Data & AI 戦略の全体像から、実際のお客様事例まで幅広くご紹介します。 DAY 1 : AIML 、Analytics、Storage (別途お申し込みが必要です) DAY 2 : Database ※本記事でご紹介 DAY 2 では、AWS Director の Mehul Y. Shah による商用データベースの AWS 戦略についてのキーノートセッションから始まり、 DSQL を活用した次世代 DR 戦略の検討している東京海上日動システムズ様のセッション 、 DSQL を本番環境で実際に採用している Japan Digital Design 様による本番導入事例 、 本番環境を想定して DSQL のパフォーマンス検証を実施した Happy Elements 様のセッション 、そして AWS による RDS / Aurora や NoSQL 採用事例などを予定しています。 ※ 1 セッションからでもご参加いただけます。 ご興味のあるセッションのみの参加も歓迎いたします。 開催情報(Day 2) 項目 詳細 開催日時 2026 年 4 月 10 日 9:30 – 17:00 (日本時間) 開催場所 〒 141-0021 東京都品川区上大崎 3 丁目 1-1 目黒セントラルスクエア 17F AWS Startup Loft Tokyo 開催形式 オフライン (会場参加) 参加費 無料 定員 限定人数 (定員になり次第、受付を終了いたします) 申込方法 イベント申込ページ よりお申し込みください ※本イベントは定員に限りがございます。お早めにお申し込みください。 ※ DAY 1 (AIML 、Analytics 、Storage 編) の詳細・お申し込みは こちら からご確認ください。 プログラム詳細 時間 セッションタイトル 概要 登壇者 カテゴリ 09:30 – 09:35 Opening – – – 09:35 – 10:35 Keynote 「商用データベースの re:Invent : AWS が顧客起点で実現するデータイノベーション」 AWS が顧客の課題から出発する「Working Backwards」のアプローチを通じて、Amazon RDS をはじめとする商用データベースのイノベーションをどのように推進しているのかをご紹介します。re:Invent で発表された最新アップデート、パフォーマンス・スケーラビリティ・運用効率の向上、レガシーデータベースの移行からクラウドネイティブかつ AI 活用を見据えたデータ基盤の構築まで、厳選した事例とともにご紹介します。企業がコスト削減やリスク低減にとどまらず、商用データベースを戦略的資産として活用し、ビジネスイノベーションを加速している事例をご理解いただけます。 Mehul Y. Shah (Director for Amazon RDS and Oracle Database@AWS) AWS 戦略 10:45 – 12:00 【お客様登壇】 「DR 戦略の進化~ Amazon Aurora DSQL がもたらす新たな可能性と実践への第一歩~」 前半では、AWS より Aurora DSQL のアーキテクチャと主要な特徴を解説します。後半では、東京海上日動システムズ株式会社様より、既存システムの DR 構成における課題と、DSQL の Active-Active 構成がもたらす DR 戦略の変革の可能性についてお話しいただきます。DSQL 活用の検討段階で見えてきた課題にも触れていただくほか、AWS を戦略的に採用する判断基準についてもご共有いただきます。 山下 裕記 様 (東京海上日動システムズ株式会社 戦略企画部長) 小野 卓人 (AWS 金融ソリューション本部 シニアソリューションアーキテクト) DSQL 検討事例 12:00 – 13:00 昼食休憩 13:00 – 14:00 【お客様登壇】 「Amazon Aurora DSQL の本番導入事例のご紹介」 – 佐藤 慎 様 (Japan Digital Design 株式会社) DSQL 本番採用事例 14:15 – 15:15 【お客様登壇】 「実プロダクトで検証する Aurora DSQL の可能性と制約」 Happy Elements では、運用中のゲームタイトルの実プロダクトを使い、Aurora DSQL のパフォーマンス検証を行いました。検証から見えた Aurora DSQL の性能特性、楽観的同時実行制御や ALTER TABLE 制限などの制約、そしてコスト比較の結果を具体的な数値とともに余すことなく共有します。 長谷川 一輝 様 (Happy Elements 株式会社 チーフエンジニア インフラグループ グループリーダー) DSQL 検証結果 15:30 – 16:45 「AWS Database サービス最新顧客事例集」 AWS は、目的に応じた多様なデータベースサービスを提供しており、お客様のビジネス要件に最適なソリューションを選択いただけます。本セッションでは、実際のお客様事例を通じてデータベース採用の実践的なアプローチをご紹介します。オンプレミスや商用データベースから Amazon RDS / Aurora への移行事例、および NoSQL の効果的な採用事例を通じて、運用負荷削減、性能向上、コスト最適化を実現した事例についてご紹介します。 内山 義夫 (AWS) RDS/Aurora /NoSQL 事例 16:45 – 17:00 Closing こんな方におすすめ 本イベントは、特に以下のような方におすすめです: DSQL に興味があり、実際の本番・検証事例から学びたい方 DSQL の導入を検討されている方 データベースの移行やモダナイゼーションを検討されている方 データベース運用の効率化やコスト最適化を目指している方 他社のリアルな導入経験から具体的なヒントを得たい方 まとめ AWS Data & AI イノベーションフォーラム DAY 2 (Database 編) では、最新データベース戦略の解説から、実際のお客様による DSQL やその他データベースの移行事例まで、データベースに関する幅広い知見を得ることができます。 特に、DSQL について、お客様のリアルな声を直接お聞きいただける場となっております 。定員に限りがございますので、ぜひお早めにお申し込みください。 皆様のご参加を心よりお待ちしております。 今すぐ申し込む
1. はじめに 気になるテクノロジーについて調査・検証した内容をフラットな視点を持ちつつ・自分観点で整理してアウトプットした記事になります。 最近データベーステクノロジーのアーキテクチャや新潮流のNewSQLやHTAPに関して個人的に気になっています。なかでもリアルタイム性のワークロードに強みを持つSingleStoreに個人的に興味を持ったため、その概要や特徴、業務上活用した経験のあるSnowflake/Databricksとの比較などをこの記事では記載します。 想定読者:データ分析・活用基盤を設計・運用するITアーキテクト/システムエンジニア、データエンジニア、データサイエンティ
動画
該当するコンテンツが見つかりませんでした










