Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Takekazu Omi
PPTX, PDF
11,985 views
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
JAZUG 第2回 クラウドデザインパターン勉強会 Compensating TransactionIndex Table パターン
Software
◦
Read more
11
Save
Share
Embed
Embed presentation
Download
Downloaded 41 times
1
/ 49
2
/ 49
3
/ 49
4
/ 49
5
/ 49
6
/ 49
7
/ 49
8
/ 49
9
/ 49
10
/ 49
11
/ 49
12
/ 49
13
/ 49
14
/ 49
15
/ 49
16
/ 49
17
/ 49
18
/ 49
19
/ 49
20
/ 49
21
/ 49
22
/ 49
23
/ 49
24
/ 49
25
/ 49
26
/ 49
27
/ 49
28
/ 49
29
/ 49
30
/ 49
31
/ 49
32
/ 49
33
/ 49
34
/ 49
35
/ 49
36
/ 49
37
/ 49
38
/ 49
39
/ 49
40
/ 49
41
/ 49
42
/ 49
43
/ 49
44
/ 49
45
/ 49
46
/ 49
47
/ 49
48
/ 49
49
/ 49
More Related Content
PDF
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
by
Yoshifumi Kawai
PDF
Implements OpenTelemetry Collector in DotNet
by
Yoshifumi Kawai
PDF
Katib
by
Yuji Oshima
PPTX
CfnClusterを使って10分強でHPC環境を構築する
by
Daisuke Nagao
PDF
Amazon dynamo db、cloudant、blockchainの紹介 20160706
by
Tsuyoshi Hirayama
PDF
CAPとBASEとEventually Consistent
by
Yohei Yamamoto
PPTX
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
by
Takekazu Omi
PDF
Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917
by
エンジニア勉強会 エスキュービズム
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
by
Yoshifumi Kawai
Implements OpenTelemetry Collector in DotNet
by
Yoshifumi Kawai
Katib
by
Yuji Oshima
CfnClusterを使って10分強でHPC環境を構築する
by
Daisuke Nagao
Amazon dynamo db、cloudant、blockchainの紹介 20160706
by
Tsuyoshi Hirayama
CAPとBASEとEventually Consistent
by
Yohei Yamamoto
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
by
Takekazu Omi
Cloud Design Pattern #3 Compensating Transaction_エンジニア勉強会20140917
by
エンジニア勉強会 エスキュービズム
Similar to JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
PPTX
20180421 Azure Architecture Cloud Design Patterns
by
Takekazu Omi
PDF
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
by
貴志 上坂
PDF
Gsc ccpm2013
by
ゴールシステムコンサルティング株式会社
PDF
チケット駆動開発をパターン言語で読み解く~「成功するプロジェクトのための開発基盤と手法」
by
akipii Oga
PPTX
JAZUG クラウドデザインパターンのコードを覗く
by
Takekazu Omi
PDF
CCPM概論<2009PMI発表資料>
by
ゴールシステムコンサルティング株式会社
PDF
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
by
Arichika TANIGUCHI
PDF
アジャイル開発の始め方
by
ESM SEC
PDF
From IPA for Agile Japan
by
Kenji Hiranabe
PDF
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
by
Developers Summit
PDF
第5回SIA研究会(例会)プレゼン資料
by
Tae Yoshida
PDF
相関マイニング(バスケット分析)
by
Katsuhiro Takata
PDF
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
by
masashi takehara
PDF
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
by
akipii Oga
PDF
要求管理を確実に行うための知識と方法
by
Kazuyuki Miyake
PDF
Information20120312
by
b-slash
PDF
Introduction of Business Models in Requirement Development
by
Kent Ishizawa
PDF
Agile japan2011 amano
by
ESM SEC
PDF
Janog31 bof-pattern-sasaki-01
by
Ken SASAKI
PDF
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
by
Tomoharu ASAMI
20180421 Azure Architecture Cloud Design Patterns
by
Takekazu Omi
Enterprise cloud design pattern 大量データ処理アーキテクチャの構築
by
貴志 上坂
Gsc ccpm2013
by
ゴールシステムコンサルティング株式会社
チケット駆動開発をパターン言語で読み解く~「成功するプロジェクトのための開発基盤と手法」
by
akipii Oga
JAZUG クラウドデザインパターンのコードを覗く
by
Takekazu Omi
CCPM概論<2009PMI発表資料>
by
ゴールシステムコンサルティング株式会社
Enterprise Cloud Design Pattern 前編:クラウドアーキテクチャ-の3要素
by
Arichika TANIGUCHI
アジャイル開発の始め方
by
ESM SEC
From IPA for Agile Japan
by
Kenji Hiranabe
【17-C-4】「Axure RPによる画面プロトタイプを活用した要件定義の改善:野村総合研究所、NTTデータの事例紹介」松永充弘氏
by
Developers Summit
第5回SIA研究会(例会)プレゼン資料
by
Tae Yoshida
相関マイニング(バスケット分析)
by
Katsuhiro Takata
[ESM_CM セミナー]小さく作って大いに役立つスマートフォンアプリ(CYCLONE)公開用
by
masashi takehara
第4回品川Redmine勉強会資料「チケット駆動開発のフレームワーク~現場の経験知からパターン言語へ(ベータ版)」
by
akipii Oga
要求管理を確実に行うための知識と方法
by
Kazuyuki Miyake
Information20120312
by
b-slash
Introduction of Business Models in Requirement Development
by
Kent Ishizawa
Agile japan2011 amano
by
ESM SEC
Janog31 bof-pattern-sasaki-01
by
Ken SASAKI
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
by
Tomoharu ASAMI
More from Takekazu Omi
PDF
jazug34 Container Apps Key Vault
by
Takekazu Omi
PDF
bicep 0.5 pre
by
Takekazu Omi
PDF
Bicep + VS Code で楽々Azure Deploy
by
Takekazu Omi
PDF
Bicep 入門 MySQL編
by
Takekazu Omi
PDF
//Build 2021 FASTER 紹介
by
Takekazu Omi
PDF
//build 2021 bicep 0.4
by
Takekazu Omi
PDF
bicep 紹介
by
Takekazu Omi
PDF
bicep dev container
by
Takekazu Omi
PDF
Introduction of Azure Docker Integration
by
Takekazu Omi
PPTX
Cosmos DB Consistency Levels and Introduction of TLA+
by
Takekazu Omi
PPTX
Azure Application Insights とか
by
Takekazu Omi
PPTX
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
by
Takekazu Omi
PDF
life with posh
by
Takekazu Omi
PPTX
Cosmos DB 入門 multi model multi API編
by
Takekazu Omi
PPTX
Global Azure Bootcamp 2017 DocumentDB Deep Dive
by
Takekazu Omi
PPTX
Azure Storage Partition Internals
by
Takekazu Omi
PPTX
Azure Service Fabric Cluster の作成
by
Takekazu Omi
PPTX
Azure Service Fabric Actor
by
Takekazu Omi
PPTX
祝GA、 Service Fabric 概要
by
Takekazu Omi
PPTX
Azure Fabric Service Reliable Collection
by
Takekazu Omi
jazug34 Container Apps Key Vault
by
Takekazu Omi
bicep 0.5 pre
by
Takekazu Omi
Bicep + VS Code で楽々Azure Deploy
by
Takekazu Omi
Bicep 入門 MySQL編
by
Takekazu Omi
//Build 2021 FASTER 紹介
by
Takekazu Omi
//build 2021 bicep 0.4
by
Takekazu Omi
bicep 紹介
by
Takekazu Omi
bicep dev container
by
Takekazu Omi
Introduction of Azure Docker Integration
by
Takekazu Omi
Cosmos DB Consistency Levels and Introduction of TLA+
by
Takekazu Omi
Azure Application Insights とか
by
Takekazu Omi
第8回 Tokyo Jazug Night Ignite 2017 落穂拾い Storage編
by
Takekazu Omi
life with posh
by
Takekazu Omi
Cosmos DB 入門 multi model multi API編
by
Takekazu Omi
Global Azure Bootcamp 2017 DocumentDB Deep Dive
by
Takekazu Omi
Azure Storage Partition Internals
by
Takekazu Omi
Azure Service Fabric Cluster の作成
by
Takekazu Omi
Azure Service Fabric Actor
by
Takekazu Omi
祝GA、 Service Fabric 概要
by
Takekazu Omi
Azure Fabric Service Reliable Collection
by
Takekazu Omi
JAZUG 第2回 CDP 勉強会 Compensating Transaction, Index Table パターン
1.
JAZUG 第2回 クラウドデザインパターン勉強会 Compensating
Transaction Index Table パターン kyrt / Takekazu Omi http://kyrt.in takekazu.omi@kyrt.in @takekazuomi 2014/8/20 1.0.1
2.
クラウドデザインパターン Cloud Design Patterns:
Prescriptive Architecture Guidance for Cloud Applications kyrt @takekazuomi 22014/8/20
3.
自己紹介 近江 武一 JAZUG Azure
Storage 担当(自称) Microsoft MVP for Azure kyrt @takekazuomi 3 kyrt.in github.com/takekazuomi white paper
4.
本の紹介 • Microsoft patterns
& practices • Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications • http://msdn.microsoft.com/en- us/library/dn568099.aspx • 翻訳が、2014年6月に出ました • クラウドデザインパターン Azureを例とし たクラウドアプリケーション設計の手引き • http://ec.nikkeibp.co.jp/item/books/P98330.html • 日経BP 以下、CDP本と記述 kyrt @takekazuomi 4
5.
内容 クラウドアプリケーション設計の頻出課題集 Software design pattern
の Cloud Application 版 •24のパターン •10のガイダンス ポスター • http://azure.microsoft.com/en-us/documentation/infographics/cloud- design-patterns/ kyrt @takekazuomi 5
6.
JAZUGで監訳 •翻訳と監訳のはざまに悩みつつも de:code で出せるように奮闘 kyrt @takekazuomi
6
7.
回答集じゃない 課題が整理され、考慮点について記述されて いる •8の問題領域 •10のcode sample kyrt @takekazuomi
7
8.
kyrt @takekazuomi 82014/8/20
9.
前振り Data Management の一般的な課題 2014/8/20
kyrt @takekazuomi 9
10.
Data Management -
CDP本 •8の問題領域の1つ http://msdn.microsoft.com/en-us/library/dn589772.aspx •4のガイダンスが関連 • Caching ガイダンス • Data Consistency 入門 • Data Partitioning ガイダンス • Data Replication and Synchronization ガイダンス http://msdn.microsoft.com/en-us/library/dn600216.aspx kyrt @takekazuomi 10
11.
Data Management 3課題 Scalability Performance PartitioningConsistency •Scalability/Performance •
スケールが上がった時に もパフォーマンスを維持 •Partitioning/Sharding • 分割する •Consistency • 一貫性/整合性 kyrt @takekazuomi 112014/8/20 必要 発生 悪影響
12.
Performance と Partitioning •パフォーマンスを維持してスケール •物理ハードウェアの限界 •
CPU, メモリ, ネットワーク •分割 • Partitioning, Shardingで対応 背景:Infrastructures as Code kyrt @takekazuomi 12
13.
Partitioningと Consistency • Partition
間の トランザクションコストは高い • 分散トランザクションの未サポート • 結果整合性(Eventual Consistency)の導入 • 分散トランザクションはコストが高いので、一時的な不整合は受け 入れて、結果的に整合性がとれた状態になればいいことにしよう= 結果整合性 • エラーなどで、不整合な状態になってしまった処理を回復するのが、 補正トランザクション • しかし、やっぱりパフォーマンスへの悪影響 • それにコードが複雑になるなど問題がある kyrt @takekazuomi 13
14.
今回説明する2つのパターン •Compensating Transaction パターン •
補正トランザクション/補償トランザクション • トランザクションが失敗した場合に、トランザク ションを取り消す • 結果整合性のコンテキストで説明 •Index Table パターン • RDBMSでいうIndexの話 • PartitioningされたデータのIndex • Azure Tableのコンテキストで説明 kyrt @takekazuomi 14
15.
kyrt @takekazuomi 15 右に青帯が付いているのはCDP本に対する 補足コメントのページ 2014/8/20
16.
2014/8/20 kyrt @takekazuomi
16
17.
Compensating Transaction パターン 補正トランザクション(補償トランザクション) kyrt @takekazuomi
172014/8/20
18.
課題と背景 •結果整合性 • 分散環境で競合を回避してパフォーマンスを改善す るには「強い整合性」ではなく「結果整合性」を実 装すべき • このモデルでは、トランザクションの実行中は整合 性が無いビューになる場合がある kyrt
@takekazuomi 18 時間 整合 不整合 整合 m1 m2
19.
結果整合性の課題 1. トランザクションの実行中に整合性に欠 けるビューとなる期間がある 2. トランザクションの失敗時に回復(ロー ルバック)する処理が必要 2が「Compensating
Transaction パターン」の話 kyrt @takekazuomi 19
20.
役割と課題 -1- •結果整合性モデルで、失敗した場合の回復 モデルの提供 •複数の手順を戻す必要がある •単純に書き戻すようなロールバックは例外 的 kyrt @takekazuomi
202014/8/20
21.
役割と課題 -2- •操作が他のサービスを呼び出している場合 もある •回復の処理はアプリケーションに依存する • 複雑なコード •
高い実行コスト kyrt @takekazuomi 212014/8/20
22.
解決策 -1- • ワークフローの利用が、一般的なアプローチ •
元の手順をキャプチャーして、取り消しに関する情 報を記録 • ワークフローを使って一連の手順を巻き戻す • 厳密に逆順で作業を戻す必要はない • 補正トランザクションが失敗する場合もあることを 考慮し、補正トランザクション自身も idempotent (べき等)であることが望ましい kyrt @takekazuomi 22
23.
解決策 -2- •ワークフローと元手順のキャプチャー • トランザクションの識別子を時系列で生成する •
処理毎にトランザクションログデータを生成 • アプリケーション依存のRDBのトランザクションロ グと類似処理 • 補正トランザクションの対象となるような処理(= 失敗したトランザクション)を識別する方法が必要 kyrt @takekazuomi 23
24.
解決策 -3- • 高いレベルにおいては、失敗した場合に走る別の処 理(トランザクション)と考えた方が良い •
走った結果はもとに戻る(Rollbackする)わけではなく、整合 性が取れた別の状態に遷移する • 低レベル(ビジネスロジックが関与しない)では、 本来なるべき状態に持っていく • 処理が idempotent ならば再度実行して完了させる • 規定回数再試行しても失敗するならば、不整合を通知してデー タをロックするなどの処理をする kyrt @takekazuomi 24
25.
問題点と検討事項 • 失敗の判定は簡単ではない • 補正ロジックはアプリケーション固有 •
補正トランザクションは idempotent (べき等)が良い • 補正トランザクションには回復性が必要 • 再実行、進行状況 • 元に戻すではなく整合性のとれた状態にすると考える • 補正トランザクションの手順は元の逆順で無くても良い • リソースのタイムアウト付きロックを検討する • 補正トランザクションを最小にするためにリトライを入 れる kyrt @takekazuomi 25
26.
kyrt @takekazuomi 26 補正トランザクションは実 行コストが高く複雑 最小になるように設計
27.
2014/8/20 kyrt @takekazuomi
27
28.
例 2014/8/20 kyrt @takekazuomi
28
29.
旅行プラン作成 kyrt @takekazuomi 292014/8/20 Compensating
Transaction Pattern http://msdn.microsoft.com/en-us/library/dn589804.aspx 1. シアトル発ロンドン着のフライトF1予約 2.ロンドン発パリ着のフライトF2予約 3. パリ発シアトル着のフライトF3予約 4. ロンドンのホテルH1予約 5. パリのホテルH2予約
30.
Starbucks Does Not
Use Two-Phase Commit グレゴー・ホーペ Gregor Hohpe Enterprise Integration Pattern の人、 2004/11/9 • http://www.eaipatterns.com/ramblings/18_starbucks.html • https://code.google.com/p/gregors-ramblings-ja/wiki/18_starbucks kyrt @takekazuomi 30 スループット最大化
31.
スループット最大化 •非同期処理 •Queue base messageing •結果整合性 •補正トランザクション kyrt
@takekazuomi 31
32.
Correlation (誰の注文か?) •非同期的なアプローチによって問題が発生 •注文の順番と飲み物を手渡す順番が違う • Correlation
Identifier (相関識別子)として カップに書いた名前を呼ぶ(US) • 日本では、お客が飲み物の種類から相関を判断 kyrt @takekazuomi 32
33.
例外処理 (Exception Handling) •
Write-off(損金処理) 注文は受けたけど支払い出来ない場合等 なにか不具合があって最後まで処理出来ない場合、なにもしない、あるいは処 理を破棄して損金として計上する • Retry(やり直し) 間違った飲み物を出してしまった場合等 一連の処理の一部が失敗した場合、再度実行する。処理が、idempotent ならば 全体を再試行する • Compensating Action (補償行為) 機械が壊れていて注文が処理できない場合等 これまで完了した全ての処理を取り消して元に戻す kyrt @takekazuomi 33
34.
Two-Phase Commit でやったら •レジで注文する •お金を財布から出し、レジに置く •飲み物が出来るまで待つ •飲み物が出来きたら、レジに置く •お金と飲み物を交換 店舗で処理できる注文数が減り売上が… kyrt
@takekazuomi 34
35.
リアル・ワールドは非同期だ • 現実世界はけっこう非同期で動いている • 日常生活の多くの部分は、協調こそ必要だが非同期に行 われる相互作用(電子メールを読んで返事を書いたり、 コーヒーを買ったりなど)で成り立っている •
現実世界の相互作用をモデリングするには、非同期メッ セージングのアーキテクチャが自然な手段になる • 日常生活を見ていく中から、メッセージングによる上手 な解決法を設計するヒントが見出せる kyrt @takekazuomi 35
36.
分散アーキテクチャにおいて一貫性と交 換でスケーラビリティを手に入れる eBayでは、複数の物理的リソースに及ぶトランザク ションや、分散トランザクションは使わない Trading Consistency for
Scalability in Distributed Architectures by Floyd Marinescu & Charles Humble on Mar 04, 2008 • http://www.infoq.com/news/2008/03/ebaybase • http://www.infoq.com/jp/news/2008/03/ebaybase kyrt @takekazuomi 36
37.
kyrt @takekazuomi 37
38.
Index Table パターン kyrt
@takekazuomi 382014/8/20
39.
課題と背景 •多くのNoSQLシステムでは、RDBMSのセカ ンダリーインデックスが未サポート • プライマリーキー以外の検索が必要な場合 •RDBMSにおいても sharding
をした場合、 shard 間 index はサポートされていない Index Table パターンを検討 kyrt @takekazuomi 392014/8/20
40.
解決策 ー 完全非正規化 •
元のデータを完全にコピー して持つ • 更新が少ない場合は有効 kyrt @takekazuomi 40
41.
解決策 ー Index
キーのみ • Index Tableには Keyだけを持つ • 更新のコストが 低い • 参照時には2重 のルックアップ が必要 kyrt @takekazuomi 41
42.
解決策 ー 准非正規化 •
頻繁に参照されるものをIndex Tableに収容 • 前2つの中間的な方法 kyrt @takekazuomi 42
43.
解決策 ー 複合キー •
参照が特定の値の組み合 わせで頻繁に行われる場 合 • 複数のプロパティを結合 してKeyを作成するのが 有効 • セパレータには注意 BBB,AAA BBBA,AAA BBBA|AAA BBB|AAA kyrt @takekazuomi 43
44.
解決策 ー シャード間Index •
シャードを跨いだ検索 が効率化 • 更新はシャード間更新 になるのでコストが高 い • global index • 複数のshard のデータを含む • 結果整合性モデル • 補正トランザクションが必要 • local index • 特定のshard 内だけのデータを 保持する kyrt @takekazuomi 44
45.
問題と検討事項 -1- • セカンダリーインデックスをメンテするオーバーヘッド は大きい •
insert/update/deleteでindexも更新する • インデックステーブルに複製データを持つとストレージ コストとコピーの管理コストが増える • Index テーブル → Fact テーブルではルックアップコスト が2倍になる • 大規模なデータセットで複数のIndex テーブルだと整合性 を保つのが難しくなる kyrt @takekazuomi 45
46.
問題と検討事項 -2- •shard /
partition 内Indexと、間Indexは分けて 考える • 同一shard / partitionに作成するIndexは扱い易い • 複数のshard / partition のデータを扱うIndexは結果整 合、補正トランザクションのモデルが必要 •Azure Tableでは、同一partition の場合は、エ ンティティグループトランザクションを利 用して整合性を補償できる kyrt @takekazuomi 46
47.
問題と検討事項 -3- •この機能の更新、参照のパフォーマンス問 題は、一般的なSQL データベースのイン デックスやカバリング
インデックスの問題 と類似 •トレードオフも同等だが、実装をアプリ ケーションでする必要がある部分は大きく 違う kyrt @takekazuomi 47
48.
いつパターンを使うか •プライマリーキー以外のキーでデータを参照す る頻度が高い場合 •データの高い頻度で更新され揮発性が高い場合 は、Index テーブルが古くなるのが早い。メン テナンスのコストと効果のバランスを検討する •Indexテーブルのキーのカーディナリティが低い 場合は有効ではない kyrt @takekazuomi
48
49.
kyrt @takekazuomi 49
Editor's Notes
#14
2PCは
#19
強い整合性では、不整合の期間をシリアライズ、リソースのロックという方法を使って消している。 それが強い整合性がスケールしない理由になっている
#30
個々の予約はアトミックな処理 全体で結果整合を構成している 処理毎に補正ロジックがある どこまで進んでいるかでキャンセルしなければいけない処理が変わる 補正ロジックはシリアルに実行する必要はない
#35
2フェーズコミットは物事を大いに単純化してくれるのだが、同時にメッセージの自由な流れ(と結果としてスケーラビリティ)を制限することにもなる。 非同期に活動する複数の流れを遮って、状態をもったトランザクション資源を保持しなければならないからだ。
#36
リアルな世界をモデリングする話は、オブジェクト指向でもあった
#40
global index
#42
本体をFact Tableと呼ぶ
#44
カンマは、0x2bでAより前 BBB,AAA BBBA,AAA |は、7cでzより大きい BBBA|AAA BBB|AAA
Download