SlideShare a Scribd company logo
3
Most read
4
Most read
8
Most read
Copyright©2017 NTT corp. All Rights Reserved.
PostgreSQLでスケールアウト
NTT OSSセンタ
澤田 雅彦
スケールアウトするSQLシステム (8/22)
2Copyright©2017 NTT corp. All Rights Reserved.
自己紹介
澤田 雅彦
Twitter : @sawada_masahiko
GitHub: MasahikoSawada
NTT OSSセンタ勤務
PostgreSQL Contributor
Freeze Map(PG9.6)
Multiple Synchronous Replication(PG9.6)
Quorum-based Synchronous Replication(PG10)
本日紹介する機能も開発中
PostgreSQL技術サポート
PostgreSQL周辺ツールの開発
3Copyright©2017 NTT corp. All Rights Reserved.
様々な方法がある
• PostgreSQLのフォーク版
• Amazon Redshift (Amazon Web Service)
• Greenplum Database (Pivotal社)
• Postgres Pro (Postgres Professional社)
• Postgres-XL (2nd Quadrant社)
• PostgreSQL+拡張モジュール
• Citus (Citus data社)
• PostgreSQLのみ
• FDW-based Sharding
スケールアウトするために
4Copyright©2017 NTT corp. All Rights Reserved.
Postgres-XL
https://www.postgres-xl.org/overview/
5Copyright©2017 NTT corp. All Rights Reserved.
Citus
https://docs.citusdata.com/en/v6.1/performance/query_processing.html
6Copyright©2017 NTT corp. All Rights Reserved.
• FDW(Foreign Data Wrapper)とは?
• PostgreSQLを”ハブ”のようにして、外部データ(他のDBMS、
NoSQL、ファイル、Webサービス等)と連携できる機能
FDW-based Sharding
Oracle
PostgreSQL
CSV
ファイル
SELECT * FROM
oracle_tbl WHERE
amount < 100;
oracle_tbl
pg_tbl
file_tbl
PostgreSQL
postgres_fdw
oracle_fdw
fdw_fdw
7Copyright©2017 NTT corp. All Rights Reserved.
商用
DBMS
異種DB間連携
FDWの使い方の例
○○部署 △△部署
△△部署のデータ
も見れるようした
いけど、向こうは
商用DBを使って
る。データを二重
でも持つのは避け
たいし・・
oracle_fdw
8Copyright©2017 NTT corp. All Rights Reserved.
• FDW-based Shardingとは?
• FDW機能とテーブルパーティショニングを組み合わせてデータ
ベースシャーディングを行うというアイディア
FDW-based Sharding
SELECT * FROM
oracle_tbl WHERE
amount < 100;
PostgreSQL
PostgreSQL
postgres_fdw
postgres_fdw
PostgreSQL
PostgreSQL
postgres_fdw
9Copyright©2017 NTT corp. All Rights Reserved.
• FDW機能の特性上、連携先はPostgreSQLでなくても良い
• どちらの機能もPostgreSQLが標準機能として提供
• シャードノードを増やすことでスケールアウト可能
FDW-based Shardingの特徴①
PostgreSQL
PostgreSQL PostgreSQL PostgreSQL
postgres_fdw
PostgreSQL・・・
10Copyright©2017 NTT corp. All Rights Reserved.
• クライアントは一つのサーバにのみアクセスするだけで良い
• アプリケーションの変更がいらない
• WHERE句、JOIN、SORT等はシャードサーバへプッシュダウンされる
FDW-based Shardingの特徴②
PostgreSQL
PostgreSQL PostgreSQL PostgreSQL
postgres_fdw
PostgreSQL・・・
11Copyright©2017 NTT corp. All Rights Reserved.
FDW-based Shardingの仕組み
PostgreSQL
親テーブル
子
外部テーブル
子
外部テーブル
PostgreSQLテーブル PostgreSQLテーブル
postgres_fdw
テーブル
パーティショニン
グ機能
子テーブル
FDW機能
12Copyright©2017 NTT corp. All Rights Reserved.
FDW-based Shardingの仕組み
PostgreSQL
親テーブル
子
外部テーブル
子
外部テーブル
PostgreSQLテーブル PostgreSQLテーブル
postgres_fdw
子テーブル
テーブルパーティショニング機能によっ
て、SELECTでは振り分けられる
13Copyright©2017 NTT corp. All Rights Reserved.
FDW-based Shardingの仕組み
PostgreSQL
親テーブル
子
外部テーブル
子
外部テーブル
PostgreSQLテーブル PostgreSQLテーブル
postgres_fdw
子テーブル
振り分けられた先が外部テーブルなら、
外部のサーバへ処理を依頼。
ローカルにあるテーブルなら、自分で処
理する。
14Copyright©2017 NTT corp. All Rights Reserved.
• 現在PostgreSQLコミュニティにて鋭意開発中なため、い
くつか制約がある(PostgreSQL 9.6現在)
• パーティションテーブルの運用が面倒※
• 集約処理はプッシュダウンされない※
• クラスタリング機能(高可用性)はコミュニティから提供
されていない
• 分散トランザクション機能がない
など
※PostgreSQL 10で一部改善
FDW-based Shardingは鋭意開発中
15Copyright©2017 NTT corp. All Rights Reserved.
FDW-based Shardingは鋭意開発中
PostgreSQL
PostgreSQL PostgreSQL PostgreSQL
postgres_fdw
• マルチマスター構成も組もうと思えば組める
• が、一貫性のある結果が返ってくる保証はない(更新が混ざった場合)
• また、耐障害性について別途作り込む必要がある
PostgreSQL
postgres_fdw
16Copyright©2017 NTT corp. All Rights Reserved.
• PostgreSQLもスケールアウトできる
• 商用製品、OSS製品など様々
• PostgreSQLのみを使ったスケールアウト構成も可能
• 開発中でもあるので制約をよく把握して使うこと
まとめ
17Copyright©2017 NTT corp. All Rights Reserved.
ご清聴ありがとうございました
18Copyright©2017 NTT corp. All Rights Reserved.
Sort Push Down
-- 9.5
Sort
Output: p.col
Sort Key: p.col
-> Append
-> Seq Scan on public.p
Output: p.col
-> Foreign Scan on public.s1
Output: s1.col
Remote SQL: SELECT col FROM public.s1
-> Foreign Scan on public.s2
Output: s2.col
Remote SQL: SELECT col FROM public.s2
-- 9.6
Merge Append
Sort Key: p.col
-> Sort
Output: p.col
Sort Key: p.col
-> Seq Scan on public.p
Output: p.col
-> Foreign Scan on public.s1
Output: s1.col
Remote SQL: SELECT col FROM public.s1 ORDER BY col ASC NULLS LAST
-> Foreign Scan on public.s2
Output: s2.col
Remote SQL: SELECT col FROM public.s2 ORDER BY col ASC NULLS LAST
=# EXPLAIN (verbose on, costs off) SELECT * FROM p ORDER BY col;

More Related Content

What's hot (20)

PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PDF
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PPTX
iostat await svctm の 見かた、考え方
歩 柴田
 
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLの関数属性を知ろう
kasaharatt
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
 
PPTX
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
 
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
 
PDF
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
PDF
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
iostat await svctm の 見かた、考え方
歩 柴田
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの関数属性を知ろう
kasaharatt
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて(第15回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
 
Sql server のバックアップとリストアの基礎
Masayuki Ozawa
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
 
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

Similar to PostgreSQLでスケールアウト (20)

PDF
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
PDF
PostgreSQL10徹底解説
Masahiko Sawada
 
PDF
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
PDF
PostgreSQLとpython
Soudai Sone
 
PDF
Postgre sqlから見るnosql
Soudai Sone
 
PDF
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
PDF
Db2 Warehouse セッション資料 db tech showcase
IBM Analytics Japan
 
PDF
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
Insight Technology, Inc.
 
PDF
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
 
PDF
Hackers Champloo 2016 postgresql-9.6
Toshi Harada
 
PDF
PostgreSQL 12の話
Masahiko Sawada
 
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
PDF
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
日本マイクロソフト株式会社
 
PDF
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
Insight Technology, Inc.
 
PDF
JTF2021w F3 postgresql frontline
Haruka Takatsuka
 
PDF
20190314 PGStrom Arrow_Fdw
Kohei KaiGai
 
PDF
20190119 aws-study-pg-extension
Toshi Harada
 
PDF
"Global Distcloud File System" ~インタークラウド広域分散ファイルシステム 大陸間横断ライブマイグレーションを実現する技術
Tech Circle
 
PDF
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
PostgreSQL10徹底解説
Masahiko Sawada
 
Let's scale-out PostgreSQL using Citus (Japanese)
Noriyoshi Shinoda
 
PostgreSQLとpython
Soudai Sone
 
Postgre sqlから見るnosql
Soudai Sone
 
外部データラッパによる PostgreSQL の拡張
Shigeru Hanada
 
Db2 Warehouse セッション資料 db tech showcase
IBM Analytics Japan
 
[db tech showcase Tokyo 2017] E34: データベース・サービスを好きなところで動かそう Db2 Warehouse by 日...
Insight Technology, Inc.
 
20150520 lt-neo4j勉強会-neofj fdw
Toshi Harada
 
Hackers Champloo 2016 postgresql-9.6
Toshi Harada
 
PostgreSQL 12の話
Masahiko Sawada
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 10 新機能 @OSC 2017 Fukuoka
Shigeru Hanada
 
【de:code 2020】 PostgreSQL もスケールさせよう! - Hyperscale (Citus) -
日本マイクロソフト株式会社
 
[D31] PostgreSQLでスケールアウト構成を構築しよう by Yugo Nagata
Insight Technology, Inc.
 
JTF2021w F3 postgresql frontline
Haruka Takatsuka
 
20190314 PGStrom Arrow_Fdw
Kohei KaiGai
 
20190119 aws-study-pg-extension
Toshi Harada
 
"Global Distcloud File System" ~インタークラウド広域分散ファイルシステム 大陸間横断ライブマイグレーションを実現する技術
Tech Circle
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
Uptime Technologies LLC (JP)
 
Ad

More from Masahiko Sawada (20)

PDF
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
PDF
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
 
PDF
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
 
PDF
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
 
PDF
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
 
PDF
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
 
PDF
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
PDF
Vacuum more efficient than ever
Masahiko Sawada
 
PDF
Vacuumとzheap
Masahiko Sawada
 
PDF
Parallel Vacuum
Masahiko Sawada
 
PDF
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
 
PDF
FDW-based Sharding Update and Future
Masahiko Sawada
 
PDF
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
PDF
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
PDF
pg_bigmと類似度検索
Masahiko Sawada
 
PDF
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
PDF
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
PDF
XID周回問題に潜む別の問題
Masahiko Sawada
 
PPTX
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
PDF
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL
Masahiko Sawada
 
OSS活動のやりがいとそれから得たもの - PostgreSQLコミュニティにて -
Masahiko Sawada
 
Transparent Data Encryption in PostgreSQL and Integration with Key Management...
Masahiko Sawada
 
Bloat and Fragmentation in PostgreSQL
Masahiko Sawada
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Masahiko Sawada
 
今秋リリース予定のPostgreSQL11を徹底解説
Masahiko Sawada
 
Vacuum more efficient than ever
Masahiko Sawada
 
Vacuumとzheap
Masahiko Sawada
 
Parallel Vacuum
Masahiko Sawada
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
Masahiko Sawada
 
FDW-based Sharding Update and Future
Masahiko Sawada
 
What’s new in 9.6, by PostgreSQL contributor
Masahiko Sawada
 
PostgreSQL 9.6 新機能紹介
Masahiko Sawada
 
pg_bigmと類似度検索
Masahiko Sawada
 
pg_bigmを触り始めた人に伝えたいこと
Masahiko Sawada
 
Introduction VAUUM, Freezing, XID wraparound
Masahiko Sawada
 
XID周回問題に潜む別の問題
Masahiko Sawada
 
PostgreSQL共有バッファと関連ツール
Masahiko Sawada
 
Inside vacuum - 第一回PostgreSQLプレ勉強会
Masahiko Sawada
 
Ad

Recently uploaded (9)

PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
2023年版Web3技術の理想と現実
Syuhei Hiya
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
2023年版Web3技術の理想と現実
Syuhei Hiya
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 

PostgreSQLでスケールアウト

  • 1. Copyright©2017 NTT corp. All Rights Reserved. PostgreSQLでスケールアウト NTT OSSセンタ 澤田 雅彦 スケールアウトするSQLシステム (8/22)
  • 2. 2Copyright©2017 NTT corp. All Rights Reserved. 自己紹介 澤田 雅彦 Twitter : @sawada_masahiko GitHub: MasahikoSawada NTT OSSセンタ勤務 PostgreSQL Contributor Freeze Map(PG9.6) Multiple Synchronous Replication(PG9.6) Quorum-based Synchronous Replication(PG10) 本日紹介する機能も開発中 PostgreSQL技術サポート PostgreSQL周辺ツールの開発
  • 3. 3Copyright©2017 NTT corp. All Rights Reserved. 様々な方法がある • PostgreSQLのフォーク版 • Amazon Redshift (Amazon Web Service) • Greenplum Database (Pivotal社) • Postgres Pro (Postgres Professional社) • Postgres-XL (2nd Quadrant社) • PostgreSQL+拡張モジュール • Citus (Citus data社) • PostgreSQLのみ • FDW-based Sharding スケールアウトするために
  • 4. 4Copyright©2017 NTT corp. All Rights Reserved. Postgres-XL https://www.postgres-xl.org/overview/
  • 5. 5Copyright©2017 NTT corp. All Rights Reserved. Citus https://docs.citusdata.com/en/v6.1/performance/query_processing.html
  • 6. 6Copyright©2017 NTT corp. All Rights Reserved. • FDW(Foreign Data Wrapper)とは? • PostgreSQLを”ハブ”のようにして、外部データ(他のDBMS、 NoSQL、ファイル、Webサービス等)と連携できる機能 FDW-based Sharding Oracle PostgreSQL CSV ファイル SELECT * FROM oracle_tbl WHERE amount < 100; oracle_tbl pg_tbl file_tbl PostgreSQL postgres_fdw oracle_fdw fdw_fdw
  • 7. 7Copyright©2017 NTT corp. All Rights Reserved. 商用 DBMS 異種DB間連携 FDWの使い方の例 ○○部署 △△部署 △△部署のデータ も見れるようした いけど、向こうは 商用DBを使って る。データを二重 でも持つのは避け たいし・・ oracle_fdw
  • 8. 8Copyright©2017 NTT corp. All Rights Reserved. • FDW-based Shardingとは? • FDW機能とテーブルパーティショニングを組み合わせてデータ ベースシャーディングを行うというアイディア FDW-based Sharding SELECT * FROM oracle_tbl WHERE amount < 100; PostgreSQL PostgreSQL postgres_fdw postgres_fdw PostgreSQL PostgreSQL postgres_fdw
  • 9. 9Copyright©2017 NTT corp. All Rights Reserved. • FDW機能の特性上、連携先はPostgreSQLでなくても良い • どちらの機能もPostgreSQLが標準機能として提供 • シャードノードを増やすことでスケールアウト可能 FDW-based Shardingの特徴① PostgreSQL PostgreSQL PostgreSQL PostgreSQL postgres_fdw PostgreSQL・・・
  • 10. 10Copyright©2017 NTT corp. All Rights Reserved. • クライアントは一つのサーバにのみアクセスするだけで良い • アプリケーションの変更がいらない • WHERE句、JOIN、SORT等はシャードサーバへプッシュダウンされる FDW-based Shardingの特徴② PostgreSQL PostgreSQL PostgreSQL PostgreSQL postgres_fdw PostgreSQL・・・
  • 11. 11Copyright©2017 NTT corp. All Rights Reserved. FDW-based Shardingの仕組み PostgreSQL 親テーブル 子 外部テーブル 子 外部テーブル PostgreSQLテーブル PostgreSQLテーブル postgres_fdw テーブル パーティショニン グ機能 子テーブル FDW機能
  • 12. 12Copyright©2017 NTT corp. All Rights Reserved. FDW-based Shardingの仕組み PostgreSQL 親テーブル 子 外部テーブル 子 外部テーブル PostgreSQLテーブル PostgreSQLテーブル postgres_fdw 子テーブル テーブルパーティショニング機能によっ て、SELECTでは振り分けられる
  • 13. 13Copyright©2017 NTT corp. All Rights Reserved. FDW-based Shardingの仕組み PostgreSQL 親テーブル 子 外部テーブル 子 外部テーブル PostgreSQLテーブル PostgreSQLテーブル postgres_fdw 子テーブル 振り分けられた先が外部テーブルなら、 外部のサーバへ処理を依頼。 ローカルにあるテーブルなら、自分で処 理する。
  • 14. 14Copyright©2017 NTT corp. All Rights Reserved. • 現在PostgreSQLコミュニティにて鋭意開発中なため、い くつか制約がある(PostgreSQL 9.6現在) • パーティションテーブルの運用が面倒※ • 集約処理はプッシュダウンされない※ • クラスタリング機能(高可用性)はコミュニティから提供 されていない • 分散トランザクション機能がない など ※PostgreSQL 10で一部改善 FDW-based Shardingは鋭意開発中
  • 15. 15Copyright©2017 NTT corp. All Rights Reserved. FDW-based Shardingは鋭意開発中 PostgreSQL PostgreSQL PostgreSQL PostgreSQL postgres_fdw • マルチマスター構成も組もうと思えば組める • が、一貫性のある結果が返ってくる保証はない(更新が混ざった場合) • また、耐障害性について別途作り込む必要がある PostgreSQL postgres_fdw
  • 16. 16Copyright©2017 NTT corp. All Rights Reserved. • PostgreSQLもスケールアウトできる • 商用製品、OSS製品など様々 • PostgreSQLのみを使ったスケールアウト構成も可能 • 開発中でもあるので制約をよく把握して使うこと まとめ
  • 17. 17Copyright©2017 NTT corp. All Rights Reserved. ご清聴ありがとうございました
  • 18. 18Copyright©2017 NTT corp. All Rights Reserved. Sort Push Down -- 9.5 Sort Output: p.col Sort Key: p.col -> Append -> Seq Scan on public.p Output: p.col -> Foreign Scan on public.s1 Output: s1.col Remote SQL: SELECT col FROM public.s1 -> Foreign Scan on public.s2 Output: s2.col Remote SQL: SELECT col FROM public.s2 -- 9.6 Merge Append Sort Key: p.col -> Sort Output: p.col Sort Key: p.col -> Seq Scan on public.p Output: p.col -> Foreign Scan on public.s1 Output: s1.col Remote SQL: SELECT col FROM public.s1 ORDER BY col ASC NULLS LAST -> Foreign Scan on public.s2 Output: s2.col Remote SQL: SELECT col FROM public.s2 ORDER BY col ASC NULLS LAST =# EXPLAIN (verbose on, costs off) SELECT * FROM p ORDER BY col;