NTT DATA

DATA INSIGHT

NTTデータの「知見」と「先見」を社会へ届けるメディア

絞り込み検索
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
キーワードで探す
カテゴリで探す
サービスで探す
業種で探す
トピックで探す
2020年10月16日技術ブログ

PostgreSQLをスケールアウトさせるには?

近年、商用データベースからのマイグレーション人気などを背景に、PostgreSQLの普及が進んでいる。この状況の中、更に性能要件の厳しいシステムなどにPostgreSQLを適用するため、スケールアウトについて検討されるケースが増えてきている。本稿では、スケールアウトに利用可能なPostgreSQLの機能について紹介する。

~「NTT DATA Technology Week 2020」連動企画~

※本記事は、「NTTデータ テクノロジーカンファレンス 2020」の講演内容に関連する記事です。
講演聴講については本記事の最下部をご覧ください。

スケールアウトとは、サーバ台数を増やして、複数台のサーバで処理を分散化・並列化することで、システム全体の処理性能を向上させる手法です。PostgreSQLでスケールアウトを実現するには、Citus(※1)やPostgres-XL(※2)のような専用プロダクトが必要だと思われがちです。しかし、実はPostgreSQLの機能だけでもスケールアウトを実現することができます。今回は、その機能としてレプリケーションとForeign Data Wrapperについて紹介します。

1. レプリケーション

レプリケーションは、複数台のサーバにデータベースを自動的に複製する機能です。このレプリケーションは、高可用性のために使われることが多く、サーバ1台が故障してもデータベース複製先の別サーバが処理を引き継げるため、システム全体としてデータベースサービスが停止するのを回避できます。一方で、データベース複製先の複数台のサーバに処理を分散することで、スケールアウトにも利用が可能です。
PostgreSQLのレプリケーション機能(※3)では、プライマリとレプリカにサーバの役割が分かれ、プライマリ上でのデータベースの更新が自動的にレプリカに複製されます。プライマリは1台のみで、データベース複製先のレプリカは複数台で構成できます。台数を増やせるレプリカでは参照SQLを実行できるため、PostgreSQLのレプリケーション機能では参照性能をスケールアウト可能です。一方で、更新SQLを実行可能なのはプライマリ1台のみのため、更新性能はスケールアウトできないという課題があります。

図1:PostgreSQLのレプリケーション機能によるスケールアウト

図1:PostgreSQLのレプリケーション機能によるスケールアウト

(※3)ストリーミングレプリケーション。詳細は下記資料を参照

https://www.slideshare.net/nttdata-tech/postgresql-replication-10years-nttdata-fujii-masao

2. Foreign Data Wrapper

Foreign Data Wrapper(FDW)は、外部にあるデータを、あたかもPostgreSQLのテーブルデータとしてアクセス可能にする機能です。下図のように、データベースを複数台のPostgreSQLに分割配置して、FDWを介して各PostgreSQLに処理を分散することで、スケールアウトを実現できます。データベースの分散配置先の各PostgreSQLには、FDWを介して参照SQLと更新SQLともに実行できるため、FDWでは参照性能と更新性能ともにスケールアウト可能です。

図2:PostgreSQLのForeign Data Wrapperによるスケールアウト

図2:PostgreSQLのForeign Data Wrapperによるスケールアウト

ただし、FDWでは、複数台のPostgreSQLをまたがったトランザクション(グローバルトランザクション)をサポートしていません。例えば、トランザクションが一部のPostgreSQLのみで成功して、それ以外では失敗するというような不整合が発生する可能性があります。このため、FDWによるスケールアウトは、トランザクションの保証がないことに注意して利用する必要があります。

3. おわりに

NTTデータでは、FDWの課題であるグローバルトランザクションについて、PostgreSQL開発コミュニティと連携して開発に取り組んでいます。この取り組みにより、トランザクションを保証した上で参照性能と更新性能ともにスケールアウト可能な機能を実現して、PostgreSQLの更なる普及・発展に貢献してまいります。

イベントのお知らせ
NTTデータ主催 オンラインイベント

コロナ禍の状況で世の中が大きく変化する中、いち早く新たな未来を創っていくために、先進的な知見と確かな技術力の重要性がより高まっています。
本イベントでは、AIをエンタープライズで活用するための取り組みや、組織改革とクラウド活用の事例、COVID-19に立ち向かうNTTデータの最先端技術、OSSを中心とした最新技術動向など、NTTデータならではの先鋭的な技術トピックを、一緒に取り組んだお客様と共にNTTデータの高度な技術者がご紹介いたします。

本記事に関する講演情報

2020年10月16日 16:49 ~ ※講演開始時間は変更になる可能性がございます。
「スケールアウトするPostgreSQLを目指して!その第一歩!」
NTTデータ 技術開発本部 データベーステクニカルリード 藤井 雅雄

イベント詳細、お申込みはこちら
https://oss.nttdata.com/techconf2020/

NTT DATA Technology Week 2020

NTTデータ テクノロジーカンファレンス 2020と並行して、2020/10/12(月)~23(金)に「NTT DATA Technology Week 2020」を開催します。
日経BP社主催「日経xTECH EXPO 2020」と当社主催「NTTデータ テクノロジ―カンファレンス 2020」の2つのオンラインイベントを中心に、よりよい社会の創造に向けてNTTデータが注目する技術情報を多数発信していきます。
また、このDATA INSIGHTでも、「#TechnologyWeek2020」とタグをつけ、関連する記事の紹介や新規記事の発信を行っていきます。
With/Afterコロナで新しい社会の姿が求められる中、今後の社会変化をリードするデジタルテクノロジーについて皆様と一緒に考える2週間にできればと思います。
ぜひご参加ください。

イベント詳細はこちら
https://www.nttdata.com/jp/ja/event/2020/technologyweek/

お問い合わせ