Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
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
Submit search
EN
Uploaded by
takezoe
24,922 views
そんなトランザクションマネージャで大丈夫か?
Software
◦
Read more
31
Save
Share
Embed
Embed presentation
Download
Downloaded 56 times
1
/ 37
2
/ 37
3
/ 37
4
/ 37
5
/ 37
Most read
6
/ 37
7
/ 37
8
/ 37
Most read
9
/ 37
10
/ 37
11
/ 37
12
/ 37
13
/ 37
14
/ 37
15
/ 37
16
/ 37
17
/ 37
18
/ 37
19
/ 37
20
/ 37
21
/ 37
22
/ 37
23
/ 37
24
/ 37
25
/ 37
26
/ 37
27
/ 37
28
/ 37
29
/ 37
30
/ 37
31
/ 37
32
/ 37
33
/ 37
34
/ 37
35
/ 37
36
/ 37
37
/ 37
Recommended
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PPTX
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
PDF
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
by
NTT DATA Technology & Innovation
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
by
Keisuke Takahashi
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
PPTX
iostat await svctm の 見かた、考え方
by
歩 柴田
PPTX
Spring Boot ユーザの方のための Quarkus 入門
by
tsukasamannen
PDF
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
PDF
small 画面でも、 BIG 画面でも、 今すぐ使えるレスポンシブ活用術
by
ourmaninjapan
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
by
Manabu Koga
More Related Content
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PPTX
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
PDF
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
アーキテクチャから理解するPostgreSQLのレプリケーション
by
Masahiko Sawada
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
by
onozaty
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
イベント・ソーシングを知る
by
Shuhei Fujita
MongoDBが遅いときの切り分け方法
by
Tetsutaro Watanabe
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
[社内勉強会]ELBとALBと数万スパイク負荷テスト
by
Takahiro Moteki
ストリーム処理を支えるキューイングシステムの選び方
by
Yoshiyasu SAEKI
What's hot
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
by
NTT DATA Technology & Innovation
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
by
Keisuke Takahashi
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
PPTX
iostat await svctm の 見かた、考え方
by
歩 柴田
PPTX
Spring Boot ユーザの方のための Quarkus 入門
by
tsukasamannen
PDF
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
PDF
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
PPT
Glibc malloc internal
by
Motohiro KOSAKI
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
by
NTT DATA Technology & Innovation
マイクロにしすぎた結果がこれだよ!
by
mosa siru
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
by
Keisuke Takahashi
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
iostat await svctm の 見かた、考え方
by
歩 柴田
Spring Boot ユーザの方のための Quarkus 入門
by
tsukasamannen
Spring Boot × Vue.jsでSPAを作る
by
Go Miyasaka
Fluentdのお勧めシステム構成パターン
by
Kentaro Yoshida
Glibc malloc internal
by
Motohiro KOSAKI
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
ZOZOTOWNのマルチクラウドへの挑戦と挫折、そして未来
by
Hiromasa Oka
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
by
NTT DATA OSS Professional Services
Viewers also liked
PDF
small 画面でも、 BIG 画面でも、 今すぐ使えるレスポンシブ活用術
by
ourmaninjapan
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
by
Manabu Koga
PPTX
ゲームエンジニアのためのデータベース設計
by
sairoutine
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PDF
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
by
Takahiro YAMAGUCHI
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
第2回関西ソーシャルゲーム勉強会
by
ha1t
ODP
HTML5概要、コードサンプル
by
ourmaninjapan
PDF
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
by
学 松崎
PDF
業務系WebアプリケーションがStrutsから旅立つ日
by
Mitsuru Ogawa
PPTX
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
by
Tokoroten Nakayama
PPTX
ソーシャルゲームにレコメンドエンジンを導入した話
by
Tokoroten Nakayama
PPTX
Serverspec at hbstudy #45
by
Gosuke Miyashita
PDF
Scala界隈の近況
by
takezoe
PDF
PG-REXで学ぶPacemaker運用の実例
by
kazuhcurry
KEY
実録!Railsのはまりポイント10選
by
Drecom Co., Ltd.
PDF
MySQL Index勉強会外部公開用
by
CROOZ, inc.
PDF
Doma SQLテンプレートのしくみ
by
Toshihiro Nakamura
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
by
Hironobu Suzuki
PPTX
My sqlで2億件のシリアルデータと格闘した話
by
saiken3110
small 画面でも、 BIG 画面でも、 今すぐ使えるレスポンシブ活用術
by
ourmaninjapan
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
by
Manabu Koga
ゲームエンジニアのためのデータベース設計
by
sairoutine
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
CEDEC2013 ソーシャルゲームの開発現場でUXについて思いっきりあがいてみた1年間の話
by
Takahiro YAMAGUCHI
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
第2回関西ソーシャルゲーム勉強会
by
ha1t
HTML5概要、コードサンプル
by
ourmaninjapan
クラウド・SaaS型 統合基幹業務システム 「CAM MACS」を支える PostgreSQL ~雲に乗ったゾウ~
by
学 松崎
業務系WebアプリケーションがStrutsから旅立つ日
by
Mitsuru Ogawa
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
by
Tokoroten Nakayama
ソーシャルゲームにレコメンドエンジンを導入した話
by
Tokoroten Nakayama
Serverspec at hbstudy #45
by
Gosuke Miyashita
Scala界隈の近況
by
takezoe
PG-REXで学ぶPacemaker運用の実例
by
kazuhcurry
実録!Railsのはまりポイント10選
by
Drecom Co., Ltd.
MySQL Index勉強会外部公開用
by
CROOZ, inc.
Doma SQLテンプレートのしくみ
by
Toshihiro Nakamura
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
by
Hironobu Suzuki
My sqlで2億件のシリアルデータと格闘した話
by
saiken3110
More from takezoe
PDF
Journey of Migrating Millions of Queries on The Cloud
by
takezoe
PDF
GitBucket: Open source self-hosting Git server built by Scala
by
takezoe
PDF
Testing Distributed Query Engine as a Service
by
takezoe
PDF
Revisit Dependency Injection in scala
by
takezoe
PDF
How to keep maintainability of long life Scala applications
by
takezoe
PDF
頑張りすぎないScala
by
takezoe
PDF
GitBucket: Git Centric Software Development Platform by Scala
by
takezoe
PDF
Non-Functional Programming in Scala
by
takezoe
PDF
Scala警察のすすめ
by
takezoe
PDF
Scala製機械学習サーバ「Apache PredictionIO」
by
takezoe
PDF
The best of AltJava is Xtend
by
takezoe
PDF
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
PDF
Tracing Microservices with Zipkin
by
takezoe
PDF
Type-safe front-end development with Scala
by
takezoe
PDF
Scala Frameworks for Web Application 2016
by
takezoe
PDF
Macro in Scala
by
takezoe
PDF
Java9 and Project Jigsaw
by
takezoe
PDF
Reactive database access with Slick3
by
takezoe
PDF
markedj: The best of markdown processor on JVM
by
takezoe
PDF
ネタじゃないScala.js
by
takezoe
Journey of Migrating Millions of Queries on The Cloud
by
takezoe
GitBucket: Open source self-hosting Git server built by Scala
by
takezoe
Testing Distributed Query Engine as a Service
by
takezoe
Revisit Dependency Injection in scala
by
takezoe
How to keep maintainability of long life Scala applications
by
takezoe
頑張りすぎないScala
by
takezoe
GitBucket: Git Centric Software Development Platform by Scala
by
takezoe
Non-Functional Programming in Scala
by
takezoe
Scala警察のすすめ
by
takezoe
Scala製機械学習サーバ「Apache PredictionIO」
by
takezoe
The best of AltJava is Xtend
by
takezoe
Scala Warrior and type-safe front-end development with Scala.js
by
takezoe
Tracing Microservices with Zipkin
by
takezoe
Type-safe front-end development with Scala
by
takezoe
Scala Frameworks for Web Application 2016
by
takezoe
Macro in Scala
by
takezoe
Java9 and Project Jigsaw
by
takezoe
Reactive database access with Slick3
by
takezoe
markedj: The best of markdown processor on JVM
by
takezoe
ネタじゃないScala.js
by
takezoe
そんなトランザクションマネージャで大丈夫か?
1.
そんなトランザクションマネージャで大丈夫か?@takezoenBizReach,Inc.
2.
JTA、使っていますよね?● JavaEEサーバ● Seasar2●
Spring Framework
3.
トランザクションマネージャの役割● 複数のリソースを1つのトランザクションで処理する● トランザクションに参加するリソースの整合性を保証する
4.
たとえば...● 複数のDBに対する処理● DBに対する処理とJMSによるメッセージ送信DB
DBプログラムDB MQプログラム参照・更新メッセージ送信・受信参照・更新 参照・更新1トランザクションで処理する
5.
以下のどちらかであることを保証する● すべてのリソースがコミットされる● すべてのリソースがロールバックされる
6.
どうやって保証しているのか?
7.
2フェーズコミットリソース1 リソース2トランザクションマネージャプログラムcommitprepare?commitprepare?commit
8.
2フェーズコミット● 全てのリソースがprepareに対してOKを返した場合のみcommitする● どれか1つでもprepareに対してNGを返した場合は全てのリソースをrollbackする
9.
2フェーズコミット● XADataSourceが必要● XADataSourceの実装はJDBCドライバによって提供される●
非XAリソースをラップしてエミュレーションする機能を持っている場合もある
10.
XAトランザクションのSQL(MySQLの場合)mysql> XA START
'xatest';Query OK, 0 rows affected (0.00 sec)mysql> INSERT INTO account VALUES(1, 'takezoe');Query OK, 1 row affected (0.04 sec)mysql> XA END 'xatest';Query OK, 0 rows affected (0.00 sec)mysql> XA PREPARE 'xatest';Query OK, 0 rows affected (0.00 sec)mysql> XA COMMIT 'xatest';Query OK, 0 rows affected (0.00 sec)
11.
様々な最適化● リソースが1つの場合は1フェーズでcommitする● 最後のリソースはprepareせずにcommitする●
非XAリソースでも1つだけならJTAトランザクションに参加可能
12.
めでたしめでたし
13.
ちょっと待った!!
14.
ここからが本題です
15.
途中で落ちたらどうなるの?
16.
不整合が発生してしまう● リソース側にトランザクションが残ってしまう● 一部のリソースだけがコミットされた状態になってしまう
17.
リカバリマネージャ● トランザクションマネージャはトランザクションの状態をトランザクションログに出力している● リカバリマネージャはトランザクションログを見て不正なトランザクションを自動的にリカバリする
18.
リカバリマネージャトランザクションマネージャリカバリマネージャトランザクションログトランザクションの状態を書き込み残ってしまっているトランザクションがないか定期的にチェック残ってしまっているトランザクションを検出した場合はリカバリを実行誤検出しないよう、トランザクションマネージャの管理下になく、かつ一定時間ステータスが変わっていないもの、というようなチェックを行っている
19.
トランザクションのリカバリとは?● リソース側に残っているトランザクションをrollbackまたはcommitのどちらかに倒す● 基本的には安全サイド(rollback)に倒す●
すでに1つでもリソースをcommitしてしまっている場合は全部commitする
20.
どこで落ちたかでリカバリ方法が異なるリソース1 リソース2トランザクションマネージャプログラムcommitprepare?commitprepare?commitここで落ちた場合は両方rollbackするここで落ちた場合はリソース2をcommitする
21.
リカバリマネージャがあれば安心
22.
リカバリマネージャがあれば安心ではありません
23.
リカバリマネージャではリカバリできないケースがあります
24.
トランザクションログが壊れた場合ヽ(‘ ∇‘ )ノ●
リソースに対する操作を行ってからトランザクションログを書き込み前に死んだ場合● トランザクションログのファイル書き込み中に死んだ場合
25.
リソース側に残ってしまったトランザクションを手動でcommitまたはrollbackする必要があります
26.
手動リカバリ(MySQLの場合)mysql> XA RECOVER;+----------+--------------+--------------+--------+|
formatID | gtrid_length | bqual_length | data |+----------+--------------+--------------+--------+| 1 | 6 | 0 | xatest |+----------+--------------+--------------+--------+1 row in set (0.00 sec)mysql> XA ROLLBACK 'xatest';Query OK, 0 rows affected (0.00 sec)mysql> XA RECOVER;Empty set (0.00 sec)XAトランザクションが残ってしまっている他のリソースの状態をトランザクションIDで突き合せてcommitするべきかrollbackするべきか判断し、トランザクションをリカバリする残ってしまっていたXAトランザクションが消えた
27.
めでたしめでたし
28.
ちょっと待った!!
29.
Seasar2やSpringを使っている場合
30.
Seasar2● トランザクションログを書いていない● もちろん自動リカバリ機能もない
31.
Seasar2● なんちゃってXADataSource<component name="xaDataSource"class="org.seasar.extension.dbcp.impl.XADataSourceImpl"><property
name="driverClassName">"oracle.jdbc.driver.OracleDriver"</property><property name="URL">"jdbc:oracle:thin:@xxx:1521:yyy"</property><property name="user">"aaa"</property><property name="password">"bbb"</property></component>Seasar2のサンプルなどにはこういった設定例が紹介されているが、これはSeasar2側で用意しているXADataSourceのなんちゃって実装で、通常の java.sql.ConnectionをラップしてXAの動作をエミュレートするもの。
32.
Seasar2● 2フェーズコミットを行うのであればJDBCドライバが提供しているXADataSourceの実装を使うべき○ com.mysql.jdbc.jdbc2.optional.MysqlXADataSource○
org.postgresql.xa.PGXADataSource<component name="xaDataSource" class="org.postgresql.xa.PGXADataSource"><property name="serverName">"localhost"</property><property name="databaseName">"TEST"</property><property name="user">"xxxx"</property><property name="password">"xxxx"</property></component>
33.
Spring Framework● 自前ではJTA対応のトランザクションマネージャの実装は持っていない●
JTA対応のトランザクションマネージャをSpring上で使用するためのアダプタが用意されている● 2フェーズコミットを使用するにはJavaEEサーバもしくはスタンドアロンのJTA実装と組み合わせて使用する必要がある
34.
2フェーズコミットを行う場合はAPサーバのトランザクションマネージャを使ったほうが安全です
35.
まとめ
36.
まとめ● 2フェーズコミットを行う場合、手動でのリカバリが必要になるケースが存在するということを意識しておきましょう● 2フェーズコミットを行う場合はなるべくJavaEEサーバのトランザクションマネージャを使うことをおすすめします●
そもそも2フェーズコミットを行わなくても済むのであればそのほうがよいです● 分散トランザクションはさらに危険がいっぱいなので近づかないようにしましょうw
37.
おわり
Download
[8]
ページ先頭
©2009-2025
Movatter.jp