Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
札幌IT石狩鍋_1.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Nakagawa Shota
February 19, 2025
730
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
札幌IT石狩鍋_1.pdf
Nakagawa Shota
February 19, 2025
More Decks by Nakagawa Shota
See All by Nakagawa Shota
Innovation Sandbox on AWS で作るサンドボックス環境
snakagawax227
0
670
AWS DevOps Agent はオンコールエンジニアに代わるのか?
snakagawax227
0
990
reInforce_amazon_inspector_code_security.pdf
snakagawax227
0
380
AWSで始める負荷テスト入門
snakagawax227
5
7k
これから始める脆弱性診断
snakagawax227
0
1.7k
迅速にAWS移行をすすめるベストプラクティス
snakagawax227
0
1.8k
これから始めるAWS移行のベストプラクティス
snakagawax227
0
3.2k
AWSコスト最適化のポイントのご紹介
snakagawax227
0
8.3k
テレワーク化を進めるミツイワ様でAmazon WorkSpacesの支援をした事例紹介
snakagawax227
1
2.1k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Exploring anti-patterns in Rails
aemeredith
4
520
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Visualization
eitanlees
153
17k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
890
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The Language of Interfaces
destraynor
162
27k
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
Embracing the Ebb and Flow
colly
88
5.2k
Transcript
2025/02/18 札幌IT⽯狩鍋#1 中川翔太 Amazon Aurora DSQL の勘所
⾃⼰紹介 中川 翔太(Shota Nakagawa) クラスメソッド株式会社 クラウド事業本部コンサルティング部 ソリューションアーキテクト 仕事:AWS全般のお悩み相談 略歴:N/W製品ヘルプデスク→AWS運⽤→現職 趣味:道の駅巡り、ダーツ
アジェンダ • Amazon Aurora DSQL とは • Amazon Aurora DSQL
の考慮事項 • まとめ
Amazon Aurora DSQL とは
昨年末にAWSのイベントで発表されました 内容を⼊⼒してください
Amazon Aurora DSQL とは • PostgreSQL 互換の分散 SQL DB(いわゆる NewSQL)
• インフラストラクチャの管理なし • 事実上無制限にスケール ◦ クエリ処理, コミット, ストレージの各層で独⽴してスケールする • マルチリージョンで Active/Active 可能で99.999%の⾼可⽤性 ◦ 単⼀リージョンも可能 • 楽観的同時実⾏制御を採⽤ • ユースケース ◦ 規模の⼤⼩関係なく様々なワークロードから使⽤可能 ◦ VPCを必要としないのでLambdaなどサーバレス利⽤と相性いい • 2025年2⽉17⽇時点でプレビュー • プレビュー期間中は無料で利⽤可能
アーキテクチャ https://aws.amazon.com/jp/blogs/database/introducing-amazon-aurora-dsql/
楽観的同時実⾏制御 楽観的同時実⾏制御(OCC)を採⽤して⾼い書き込みスループットを実現 • OCCはトランザクションがデータをロックせずに処理を⾏い、コミット時に 競合をチェックする⽅法 • 競合があった場合はコミットせずにアボート(中断)する • 他のトランザクションと競合する可能性は低いという前提 •
多くのRDBで採⽤されている悲観的同時実⾏制御はロックすることで常に⼀ 貫性が保証されている。⼀⽅でスループットや並列性が低下します
他社DBと⽐較して4倍⾼速
Amazon Aurora DSQL の考慮事項
ケース1. 在庫管理システムで購⼊処理が競合 ECサイトでスニーカーの在庫が1点のとき、2⼈の購⼊者が同時に購⼊しようとした 競合エラー発⽣
ケース1. 在庫管理システムで購⼊処理が競合 • 何が起きた? ◦ 購⼊者A, Bのトランザクションが同時に在庫データを読み取り、Bが先に UPDATEをコミットすることで在庫を0に更新 ◦ 購⼊者Aのトランザクションが更新を試みた際、⾃⾝が読み取った時点
のデータが変更されていることを検知し、OCC例外が発⽣ • どうするべきか? ◦ 書き込みトランザクションは失敗する可能性がある前提に設計 ▪ リトライできるように ▪ 多い場合は間隔をランダムに(Exponential Backoff and Jitter) ▪ 最⼤クエリ時間を考慮したタイムアウトを実装 ◦ データモデリングを⾒直す ▪ 競合が起きやすい箇所(ホットスポット)を避ける設計 ▪ 例)購⼊記録を追加するDB、在庫管理は集計する
ケース2:病院の当直管理でシフトのキャンセルが重なった 最低必要⼈数を下回った 病院の当直シフト管理システムで、最低2名以上の当直医が必要なところ、3名の当 直予定者から2名が同時にキャンセルを申請した
ケース2:病院の当直管理でシフトのキャンセルが重なった FOR UPDATE FOR UPDATE • 医師A, Bが同時に当直医師数を確認し、異 なるシフトレコードを更新した結果、個々 の更新は成功するものの、意図せず最低必
要⼈数を下回ってしまう状態となった(ラ イトスキュー)。 • 参照時点で関連データ全体をロック (SELECT FOR UPDATE)することで、2つ ⽬のトランザクションを早期に失敗させ、 意図しない更新を防ぐ。
他に気をつけること • 主キーを分散した設計にする ◦ UUIDのようにランダム性のある値を使⽤する ◦ パーティショニングやスケーリングで使⽤されるためパフォーマンスに 影響する • 事前に制約を確認する
◦ PostgreSQL互換とはいえ制約は多い ◦ 例)外部キー制約が現状サポートされていない ▪ 関連データを⾮同期で更新するようにする
まとめ
まとめ • Amazon Aurora DSQLはサーバレスな分散SQLデータベース • 楽観的同時実⾏制御を採⽤して⾼い書き込みスループットを実現 • その代わり、トランザクションの競合を避けるリトライ処理やホットスポッ トを避ける設計が必要
• プレビュー期間中は無料で試せますので是⾮お試しください!
参考
参考URL • Amazon Aurora DSQL • Concurrency control in Amazon
Aurora DSQL • Introducing Amazon Aurora DSQL • DSQL Vignette: Transactions and Durability • AWS re:Invent ふりかえり勉強会「クラスメソッド re:Growth 2024 東京」 で Aurora DSQL を話してきました! • Aurora DSQLの楽観同時実⾏制御を⼿を動かして学ぶ • Amazon Aurora DSQLの主キーで気をつけるべきこと • NewSQLなんも分からん⼈がゼロからAmazon Aurora DSQLを理解する(前 編) • NewSQLなんも分からん⼈がゼロからAmazon Aurora DSQLを理解する(後 編)
None