SlideShare uma empresa Scribd logo
1 de 30
NTTデータ テクノロジーカンファレンス 2020
© 2020 NTT DATA Corporation
スケールアウトするPostgreSQLを目指して!その第一歩!
2020年10月16日
株式会社NTTデータ 藤井 雅雄
2
© 2020 NTT DATA Corporation
自己紹介
藤井 雅雄
Database Technical Lead
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮、バックアップ進捗
@fujii_masao
3
© 2020 NTT DATA Corporation
アジェンダ
 スケールアウトとは?
 PostgreSQLで利用できるスケールアウト機能とその課題について
 よりよいスケールアウト機能を目指して、
その第一歩としてのグローバルトランザクションの実現について
4
© 2020 NTT DATA Corporation
スケールアウトとは?
スケールアップ
サーバのスペックを増強して、システム全体の性能を向上させること
スケールアウト
サーバの台数を増やして、システム全体の性能を向上させること
スペック増強
(CPU/メモリ等)
サーバ追加
5
© 2020 NTT DATA Corporation
PostgreSQLで利用できるスケールアウト機能と課題
レプリケーション
FDW (Foreign Data Wrapper)
1
2
6
© 2020 NTT DATA Corporation
PostgreSQLで利用できるスケールアウト機能と課題
レプリケーション
 プライマリ1台からレプリカ複数台にDBを複製
 参照SQLを実行可能なレプリカの台数を増やすことで、参照処理をスケールアウトできる
 更新SQLを実行可能なプライマリは1台のみのため、更新処理はスケールアウトできない
1
複製
参照と更新
プライマリ レプリカ1 レプリカ2 レプリカ3
複製
複製
参照のみ 参照のみ 参照のみ
7
© 2020 NTT DATA Corporation
PostgreSQLで利用できるスケールアウト機能と課題
FDW (Foreign Data Wrapper)
 外部のデータをPostgreSQLのテーブル(外部テーブル)として扱う機能
 FDWを介してサーバ間でデータを参照・更新できる
2
ID 場所
1 千葉
2 埼玉
…
外部
テーブル
サーバ1
1,千葉
2,埼玉
…
CSV
ファイル
ID 部署
a1 総務
a2 営業
…
実
テーブル
外部
テーブル サーバ2
ID 部署
a1 総務
a2 営業
…
FDW
FDW
SELECT read()
8
© 2020 NTT DATA Corporation
PostgreSQLで利用できるスケールアウト機能と課題
FDW (Foreign Data Wrapper)
 外部のデータをPostgreSQLのテーブル(外部テーブル)として扱う機能
 FDWを介してサーバ間でデータを参照・更新できる
2
ID 場所
1 千葉
2 埼玉
…
外部
テーブル
サーバ1
1,千葉
2,埼玉
…
CSV
ファイル
ID 部署
a1 総務
a2 営業
…
実
テーブル
外部
テーブル サーバ2
ID 部署
a1 総務
a2 営業
…
FDW
FDW
UPDATE
UPDATE
9
© 2020 NTT DATA Corporation
PostgreSQLで利用できるスケールアウト機能と課題
FDW (Foreign Data Wrapper)
 データベースを複数台のPostgreSQLに分割配置して、
FDWを介して処理を分散することで、参照と更新ともにスケールアウトできる
 複数台のサーバをまたがったトランザクションであるグローバルトランザクションをサポートしていない
A B C
B C
2
サーバ1
サーバ2 サーバ3
参照と更新 参照と更新 参照と更新
FDW FDW
10
© 2020 NTT DATA Corporation
よりよいスケールアウト機能を目指して
参照と更新ともにスケールアウトさせる
グローバルトランザクションをサポートする
目指す方向性
PostgreSQLコミュニティで、
スケールアウト機能の開発・改善が始まっている
レプリケーション
更新をスケールアウトできない
FDW
グローバルトランザクションを未サポート
既存機能の課題
2
1
11
© 2020 NTT DATA Corporation
よりよいスケールアウト機能を目指して
参照と更新ともにスケールアウトさせる
レプリケーション
更新をスケールアウトできない
グローバルトランザクションをサポートする
FDW
グローバルトランザクションを未サポート
目指す方向性
既存機能の課題
PostgreSQLコミュニティで、
スケールアウト機能の開発・改善が始まっている
PostgreSQL本体に機能を組み込む!!
2
1
© 2020 NTT DATA Corporation 12
【アンケート】
実際、PostgreSQLのスケールアウトは必要でしょうか?
A. トランザクションを保証した上で、参照も更新もスケールアウトしたい!
B. 課題はあるが、既存機能のスケールアウトで十分!
C. スケールアップで十分で、スケールアウトまでは不要!
D. スケールアップとスケールアウトのどちらも不要!
13
© 2020 NTT DATA Corporation
よりよいスケールアウト機能を目指して、その第一歩
FDWベースのスケールアウト構成に、
グローバルトランザクションのサポートを追加する方向性
1
2
Atomic Commit
Atomic Visibility
グローバル
トランザクション
A B C
B C
サーバ1
サーバ2 サーバ3
参照と更新 参照と更新 参照と更新
FDW FDW
14
© 2020 NTT DATA Corporation
Atomic Commit
サーバ間でトランザクションの実行結果に整合性があること
複数のサーバ上で行われる複数の操作について、
すべての操作が成功(COMMIT)するか、
すべての操作が失敗(ROLLBACK)すること
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション
COMMIT
成功
Atomic Commitで解消したいトランザクションの不整合
15
© 2020 NTT DATA Corporation
Atomic Commit
サーバ間でトランザクションの実行結果に整合性があること
複数のサーバ上で行われる複数の操作について、
すべての操作が成功(COMMIT)するか、
すべての操作が失敗(ROLLBACK)すること
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション
COMMIT
成功
COMMIT
成功
Atomic Commitで解消したいトランザクションの不整合
16
© 2020 NTT DATA Corporation
Atomic Commit
サーバ間でトランザクションの実行結果に整合性があること
複数のサーバ上で行われる複数の操作について、
すべての操作が成功(COMMIT)するか、
すべての操作が失敗(ROLLBACK)すること
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション
COMMIT
失敗
COMMIT
成功
COMMIT
成功
Atomic Commitで解消したいトランザクションの不整合
トランザクションがサーバ3のみ
COMMITに失敗すると、
サーバ間のトランザクションの
整合性が失われる!!
17
© 2020 NTT DATA Corporation
二相コミットによるAtomic Commitの実現
複数台のサーバをまたがったトランザクションをCOMMITする際に、
二相コミットを使って、Atomic Commitを実現する方向性
COMMIT要求
COMMIT準備
トランザクション
COMMIT準備
A
サーバ1 サーバ2 サーバ3
B C
FDW
FDW
まずはFDWを介して
COMMIT準備を行い、
すべてのCOMMIT準備が
成功したらCOMMITを行う
18
© 2020 NTT DATA Corporation
二相コミットによるAtomic Commitの実現
複数台のサーバをまたがったトランザクションをCOMMITする際に、
二相コミットを使って、Atomic Commitを実現する方向性
COMMIT要求
COMMIT準備
トランザクション
COMMIT
COMMIT準備
COMMIT
A
サーバ1 サーバ2 サーバ3
B C
COMMIT成功
COMMIT
まずはFDWを介して
COMMIT準備を行い、
すべてのCOMMIT準備が
成功したらCOMMITを行う
FDW
FDW
FDW
FDW
19
© 2020 NTT DATA Corporation
二相コミットによるAtomic Commitの実現
複数台のサーバをまたがったトランザクションをCOMMITする際に、
二相コミットを使って、Atomic Commitを実現する方向性
COMMIT要求
COMMIT準備
トランザクション
COMMIT準備
A
サーバ1 サーバ2 サーバ3
B C
FDW
FDW
まずはFDWを介して
COMMIT準備を行い、
COMMIT準備が
失敗したサーバがあれば、
ROLLBACKを行う
20
© 2020 NTT DATA Corporation
二相コミットによるAtomic Commitの実現
複数台のサーバをまたがったトランザクションをCOMMITする際に、
二相コミットを使って、Atomic Commitを実現する方向性
COMMIT要求
COMMIT準備
トランザクション
COMMIT準備失敗
A
サーバ1 サーバ2 サーバ3
B C
FDW
FDW
まずはFDWを介して
COMMIT準備を行い、
COMMIT準備が
失敗したサーバがあれば、
ROLLBACKを行う
ROLLBACK
COMMIT失敗
ROLLBACK
FDW
© 2020 NTT DATA Corporation 21
【アンケート結果】
実際、PostgreSQLのスケールアウトは必要でしょうか?
A. トランザクションを保証した上で、参照も更新もスケールアウトしたい!
B. 課題はあるが、既存機能のスケールアウトで十分!
C. スケールアップで十分で、スケールアウトまでは不要!
D. スケールアップとスケールアウトのどちらも不要!
22
© 2020 NTT DATA Corporation
Atomic Visibility
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
COMMIT
途中
COMMIT
成功
COMMIT
成功
サーバ間でトランザクション実行の観測結果に整合性があること
複数のサーバ上で行われる複数の操作について
すべての操作が成功(COMMIT)、すべての操作が失敗(ROLLBACK)、
すべての操作が実行中のいずれかだと、他のトランザクションから観測できること
Atomic Visibilityで解消したいトランザクションの不整合 トランザクション①がCOMMITしたとき、
実行タイミングのずれにより、
サーバ3のみCOMMIT実行途中の状態
23
© 2020 NTT DATA Corporation
Atomic Visibility
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
COMMIT
途中
COMMIT
成功
COMMIT
成功
トランザクション②
サーバ間でトランザクション実行の観測結果に整合性があること
複数のサーバ上で行われる複数の操作について
すべての操作が成功(COMMIT)、すべての操作が失敗(ROLLBACK)、
すべての操作が実行中のいずれかだと、他のトランザクションから観測できること
Atomic Visibilityで解消したいトランザクションの不整合 トランザクション②が全サーバを参照すると、
サーバ3だけトランザクション①は
未COMMITに見えて不整合が発生!!
参照
参照
参照
24
© 2020 NTT DATA Corporation
集中管理によるAtomic Visibilityの実現
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理
 トランザクションの開始・終了を管理
 トランザクションの開始・終了を通知 → 通知結果をベースに参照
グローバル
トランザクション
マネージャ
25
© 2020 NTT DATA Corporation
集中管理によるAtomic Visibilityの実現
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理
 トランザクションの開始・終了を管理
 トランザクションの開始・終了を通知 → 通知結果をベースに参照
COMMIT
途中
COMMIT
成功
COMMIT
成功
グローバル
トランザクション
マネージャ
「トランザクション①のCOMMITは
まだ完了していない」と管理
26
© 2020 NTT DATA Corporation
集中管理によるAtomic Visibilityの実現
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理
 トランザクションの開始・終了を管理
 トランザクションの開始・終了を通知 → 通知結果をベースに参照
COMMIT
途中
COMMIT
成功
COMMIT
成功
グローバル
トランザクション
マネージャ
トランザクション②
「トランザクション①のCOMMITは
まだ完了していない」と通知
27
© 2020 NTT DATA Corporation
集中管理によるAtomic Visibilityの実現
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理
 トランザクションの開始・終了を管理
 トランザクションの開始・終了を通知 → 通知結果をベースに参照
COMMIT
途中
COMMIT
成功
COMMIT
成功
グローバル
トランザクション
マネージャ
トランザクション②
参照
参照
参照
通知結果から、トランザクション①の処理結果
はすべてのサーバで参照しないと判断
28
© 2020 NTT DATA Corporation
集中管理しないAtomic Visibilityの実現
A B C
FDW FDW
B C
サーバ1
サーバ2 サーバ3
トランザクション①
集中管理しない Clock-SI などの方式も検討されている
 集中管理の方式では、グローバルトランザクションマネージャが
性能ボトルネックやSPoFになるリスクがある
COMMIT
途中
COMMIT
成功
COMMIT
成功
トランザクション②
参照
参照
参照
• どのトランザクションの処理結果を参照してよいか、
サーバの時刻情報から判断
• 参照先がCOMMIT途中の場合は、
COMMIT/ROLLBACKが確定するまで待つ
29
© 2020 NTT DATA Corporation
おわりに
よりよいスケールアウト機能を目指して開発が始まっています。
その第一弾として、複数台のPostgreSQLをまたがる
グローバルトランザクションをサポートするために
の実現に取り組んでいます!
PostgreSQLのスケールアウト機能に、
ぜひご期待ください!
1
2
Atomic Commit
Atomic Visibility
© 2020 NTT DATA Corporation

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
 

Semelhante a スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)

RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)
Techno Project Co., Ltd.
 
災害対策セミナー 「検証プロジェクト報告と事例紹介」
災害対策セミナー 「検証プロジェクト報告と事例紹介」災害対策セミナー 「検証プロジェクト報告と事例紹介」
災害対策セミナー 「検証プロジェクト報告と事例紹介」
Masaru Hiroki
 

Semelhante a スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料) (20)

サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょサーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
サーバを仮想化したのにネットワークはこれまで通りでいい?←いや、いや、そんなわけないでしょ
 
Ajn24
Ajn24Ajn24
Ajn24
 
AWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザAWS で Presto を徹底的に使いこなすワザ
AWS で Presto を徹底的に使いこなすワザ
 
XDev2010 WindowsAzure
XDev2010 WindowsAzureXDev2010 WindowsAzure
XDev2010 WindowsAzure
 
【HinemosWorld2014】A1-3_01_NTT Comのグローバルクラウド戦略とHinemosとの連携について
【HinemosWorld2014】A1-3_01_NTT Comのグローバルクラウド戦略とHinemosとの連携について【HinemosWorld2014】A1-3_01_NTT Comのグローバルクラウド戦略とHinemosとの連携について
【HinemosWorld2014】A1-3_01_NTT Comのグローバルクラウド戦略とHinemosとの連携について
 
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
【HinemosWorld2015】A1-3_コンテナ技術Dockerの導入事例と完全運用自動化
 
AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)AZAREA-Clusterセミナー(クラウドEXPO2013春)
AZAREA-Clusterセミナー(クラウドEXPO2013春)
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
 
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
OSC 2020 Fukuoka IT運用自動化を支援する「運用レコメンドプラットフォーム」実現の舞台裏
 
Ajn24
Ajn24Ajn24
Ajn24
 
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
[Cloud OnAir] Talks by DevRel Vol. 1 インフラストラクチャ 2020年7月30日 放送
 
RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
災害対策セミナー 「検証プロジェクト報告と事例紹介」
災害対策セミナー 「検証プロジェクト報告と事例紹介」災害対策セミナー 「検証プロジェクト報告と事例紹介」
災害対策セミナー 「検証プロジェクト報告と事例紹介」
 

Mais de NTT DATA Technology & Innovation

Mais de NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Último

Último (10)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)

  • 1. NTTデータ テクノロジーカンファレンス 2020 © 2020 NTT DATA Corporation スケールアウトするPostgreSQLを目指して!その第一歩! 2020年10月16日 株式会社NTTデータ 藤井 雅雄
  • 2. 2 © 2020 NTT DATA Corporation 自己紹介 藤井 雅雄 Database Technical Lead データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮、バックアップ進捗 @fujii_masao
  • 3. 3 © 2020 NTT DATA Corporation アジェンダ  スケールアウトとは?  PostgreSQLで利用できるスケールアウト機能とその課題について  よりよいスケールアウト機能を目指して、 その第一歩としてのグローバルトランザクションの実現について
  • 4. 4 © 2020 NTT DATA Corporation スケールアウトとは? スケールアップ サーバのスペックを増強して、システム全体の性能を向上させること スケールアウト サーバの台数を増やして、システム全体の性能を向上させること スペック増強 (CPU/メモリ等) サーバ追加
  • 5. 5 © 2020 NTT DATA Corporation PostgreSQLで利用できるスケールアウト機能と課題 レプリケーション FDW (Foreign Data Wrapper) 1 2
  • 6. 6 © 2020 NTT DATA Corporation PostgreSQLで利用できるスケールアウト機能と課題 レプリケーション  プライマリ1台からレプリカ複数台にDBを複製  参照SQLを実行可能なレプリカの台数を増やすことで、参照処理をスケールアウトできる  更新SQLを実行可能なプライマリは1台のみのため、更新処理はスケールアウトできない 1 複製 参照と更新 プライマリ レプリカ1 レプリカ2 レプリカ3 複製 複製 参照のみ 参照のみ 参照のみ
  • 7. 7 © 2020 NTT DATA Corporation PostgreSQLで利用できるスケールアウト機能と課題 FDW (Foreign Data Wrapper)  外部のデータをPostgreSQLのテーブル(外部テーブル)として扱う機能  FDWを介してサーバ間でデータを参照・更新できる 2 ID 場所 1 千葉 2 埼玉 … 外部 テーブル サーバ1 1,千葉 2,埼玉 … CSV ファイル ID 部署 a1 総務 a2 営業 … 実 テーブル 外部 テーブル サーバ2 ID 部署 a1 総務 a2 営業 … FDW FDW SELECT read()
  • 8. 8 © 2020 NTT DATA Corporation PostgreSQLで利用できるスケールアウト機能と課題 FDW (Foreign Data Wrapper)  外部のデータをPostgreSQLのテーブル(外部テーブル)として扱う機能  FDWを介してサーバ間でデータを参照・更新できる 2 ID 場所 1 千葉 2 埼玉 … 外部 テーブル サーバ1 1,千葉 2,埼玉 … CSV ファイル ID 部署 a1 総務 a2 営業 … 実 テーブル 外部 テーブル サーバ2 ID 部署 a1 総務 a2 営業 … FDW FDW UPDATE UPDATE
  • 9. 9 © 2020 NTT DATA Corporation PostgreSQLで利用できるスケールアウト機能と課題 FDW (Foreign Data Wrapper)  データベースを複数台のPostgreSQLに分割配置して、 FDWを介して処理を分散することで、参照と更新ともにスケールアウトできる  複数台のサーバをまたがったトランザクションであるグローバルトランザクションをサポートしていない A B C B C 2 サーバ1 サーバ2 サーバ3 参照と更新 参照と更新 参照と更新 FDW FDW
  • 10. 10 © 2020 NTT DATA Corporation よりよいスケールアウト機能を目指して 参照と更新ともにスケールアウトさせる グローバルトランザクションをサポートする 目指す方向性 PostgreSQLコミュニティで、 スケールアウト機能の開発・改善が始まっている レプリケーション 更新をスケールアウトできない FDW グローバルトランザクションを未サポート 既存機能の課題 2 1
  • 11. 11 © 2020 NTT DATA Corporation よりよいスケールアウト機能を目指して 参照と更新ともにスケールアウトさせる レプリケーション 更新をスケールアウトできない グローバルトランザクションをサポートする FDW グローバルトランザクションを未サポート 目指す方向性 既存機能の課題 PostgreSQLコミュニティで、 スケールアウト機能の開発・改善が始まっている PostgreSQL本体に機能を組み込む!! 2 1
  • 12. © 2020 NTT DATA Corporation 12 【アンケート】 実際、PostgreSQLのスケールアウトは必要でしょうか? A. トランザクションを保証した上で、参照も更新もスケールアウトしたい! B. 課題はあるが、既存機能のスケールアウトで十分! C. スケールアップで十分で、スケールアウトまでは不要! D. スケールアップとスケールアウトのどちらも不要!
  • 13. 13 © 2020 NTT DATA Corporation よりよいスケールアウト機能を目指して、その第一歩 FDWベースのスケールアウト構成に、 グローバルトランザクションのサポートを追加する方向性 1 2 Atomic Commit Atomic Visibility グローバル トランザクション A B C B C サーバ1 サーバ2 サーバ3 参照と更新 参照と更新 参照と更新 FDW FDW
  • 14. 14 © 2020 NTT DATA Corporation Atomic Commit サーバ間でトランザクションの実行結果に整合性があること 複数のサーバ上で行われる複数の操作について、 すべての操作が成功(COMMIT)するか、 すべての操作が失敗(ROLLBACK)すること A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション COMMIT 成功 Atomic Commitで解消したいトランザクションの不整合
  • 15. 15 © 2020 NTT DATA Corporation Atomic Commit サーバ間でトランザクションの実行結果に整合性があること 複数のサーバ上で行われる複数の操作について、 すべての操作が成功(COMMIT)するか、 すべての操作が失敗(ROLLBACK)すること A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション COMMIT 成功 COMMIT 成功 Atomic Commitで解消したいトランザクションの不整合
  • 16. 16 © 2020 NTT DATA Corporation Atomic Commit サーバ間でトランザクションの実行結果に整合性があること 複数のサーバ上で行われる複数の操作について、 すべての操作が成功(COMMIT)するか、 すべての操作が失敗(ROLLBACK)すること A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション COMMIT 失敗 COMMIT 成功 COMMIT 成功 Atomic Commitで解消したいトランザクションの不整合 トランザクションがサーバ3のみ COMMITに失敗すると、 サーバ間のトランザクションの 整合性が失われる!!
  • 17. 17 © 2020 NTT DATA Corporation 二相コミットによるAtomic Commitの実現 複数台のサーバをまたがったトランザクションをCOMMITする際に、 二相コミットを使って、Atomic Commitを実現する方向性 COMMIT要求 COMMIT準備 トランザクション COMMIT準備 A サーバ1 サーバ2 サーバ3 B C FDW FDW まずはFDWを介して COMMIT準備を行い、 すべてのCOMMIT準備が 成功したらCOMMITを行う
  • 18. 18 © 2020 NTT DATA Corporation 二相コミットによるAtomic Commitの実現 複数台のサーバをまたがったトランザクションをCOMMITする際に、 二相コミットを使って、Atomic Commitを実現する方向性 COMMIT要求 COMMIT準備 トランザクション COMMIT COMMIT準備 COMMIT A サーバ1 サーバ2 サーバ3 B C COMMIT成功 COMMIT まずはFDWを介して COMMIT準備を行い、 すべてのCOMMIT準備が 成功したらCOMMITを行う FDW FDW FDW FDW
  • 19. 19 © 2020 NTT DATA Corporation 二相コミットによるAtomic Commitの実現 複数台のサーバをまたがったトランザクションをCOMMITする際に、 二相コミットを使って、Atomic Commitを実現する方向性 COMMIT要求 COMMIT準備 トランザクション COMMIT準備 A サーバ1 サーバ2 サーバ3 B C FDW FDW まずはFDWを介して COMMIT準備を行い、 COMMIT準備が 失敗したサーバがあれば、 ROLLBACKを行う
  • 20. 20 © 2020 NTT DATA Corporation 二相コミットによるAtomic Commitの実現 複数台のサーバをまたがったトランザクションをCOMMITする際に、 二相コミットを使って、Atomic Commitを実現する方向性 COMMIT要求 COMMIT準備 トランザクション COMMIT準備失敗 A サーバ1 サーバ2 サーバ3 B C FDW FDW まずはFDWを介して COMMIT準備を行い、 COMMIT準備が 失敗したサーバがあれば、 ROLLBACKを行う ROLLBACK COMMIT失敗 ROLLBACK FDW
  • 21. © 2020 NTT DATA Corporation 21 【アンケート結果】 実際、PostgreSQLのスケールアウトは必要でしょうか? A. トランザクションを保証した上で、参照も更新もスケールアウトしたい! B. 課題はあるが、既存機能のスケールアウトで十分! C. スケールアップで十分で、スケールアウトまでは不要! D. スケールアップとスケールアウトのどちらも不要!
  • 22. 22 © 2020 NTT DATA Corporation Atomic Visibility A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① COMMIT 途中 COMMIT 成功 COMMIT 成功 サーバ間でトランザクション実行の観測結果に整合性があること 複数のサーバ上で行われる複数の操作について すべての操作が成功(COMMIT)、すべての操作が失敗(ROLLBACK)、 すべての操作が実行中のいずれかだと、他のトランザクションから観測できること Atomic Visibilityで解消したいトランザクションの不整合 トランザクション①がCOMMITしたとき、 実行タイミングのずれにより、 サーバ3のみCOMMIT実行途中の状態
  • 23. 23 © 2020 NTT DATA Corporation Atomic Visibility A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① COMMIT 途中 COMMIT 成功 COMMIT 成功 トランザクション② サーバ間でトランザクション実行の観測結果に整合性があること 複数のサーバ上で行われる複数の操作について すべての操作が成功(COMMIT)、すべての操作が失敗(ROLLBACK)、 すべての操作が実行中のいずれかだと、他のトランザクションから観測できること Atomic Visibilityで解消したいトランザクションの不整合 トランザクション②が全サーバを参照すると、 サーバ3だけトランザクション①は 未COMMITに見えて不整合が発生!! 参照 参照 参照
  • 24. 24 © 2020 NTT DATA Corporation 集中管理によるAtomic Visibilityの実現 A B C FDW FDW B C サーバ1 サーバ2 サーバ3 グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理  トランザクションの開始・終了を管理  トランザクションの開始・終了を通知 → 通知結果をベースに参照 グローバル トランザクション マネージャ
  • 25. 25 © 2020 NTT DATA Corporation 集中管理によるAtomic Visibilityの実現 A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理  トランザクションの開始・終了を管理  トランザクションの開始・終了を通知 → 通知結果をベースに参照 COMMIT 途中 COMMIT 成功 COMMIT 成功 グローバル トランザクション マネージャ 「トランザクション①のCOMMITは まだ完了していない」と管理
  • 26. 26 © 2020 NTT DATA Corporation 集中管理によるAtomic Visibilityの実現 A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理  トランザクションの開始・終了を管理  トランザクションの開始・終了を通知 → 通知結果をベースに参照 COMMIT 途中 COMMIT 成功 COMMIT 成功 グローバル トランザクション マネージャ トランザクション② 「トランザクション①のCOMMITは まだ完了していない」と通知
  • 27. 27 © 2020 NTT DATA Corporation 集中管理によるAtomic Visibilityの実現 A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① グローバルトランザクションマネージャでサーバ間のトランザクションを集中管理  トランザクションの開始・終了を管理  トランザクションの開始・終了を通知 → 通知結果をベースに参照 COMMIT 途中 COMMIT 成功 COMMIT 成功 グローバル トランザクション マネージャ トランザクション② 参照 参照 参照 通知結果から、トランザクション①の処理結果 はすべてのサーバで参照しないと判断
  • 28. 28 © 2020 NTT DATA Corporation 集中管理しないAtomic Visibilityの実現 A B C FDW FDW B C サーバ1 サーバ2 サーバ3 トランザクション① 集中管理しない Clock-SI などの方式も検討されている  集中管理の方式では、グローバルトランザクションマネージャが 性能ボトルネックやSPoFになるリスクがある COMMIT 途中 COMMIT 成功 COMMIT 成功 トランザクション② 参照 参照 参照 • どのトランザクションの処理結果を参照してよいか、 サーバの時刻情報から判断 • 参照先がCOMMIT途中の場合は、 COMMIT/ROLLBACKが確定するまで待つ
  • 29. 29 © 2020 NTT DATA Corporation おわりに よりよいスケールアウト機能を目指して開発が始まっています。 その第一弾として、複数台のPostgreSQLをまたがる グローバルトランザクションをサポートするために の実現に取り組んでいます! PostgreSQLのスケールアウト機能に、 ぜひご期待ください! 1 2 Atomic Commit Atomic Visibility
  • 30. © 2020 NTT DATA Corporation