PGCon Ottawa 2020 参加レポート~大規模データのロード性能改善の提案~
PostgreSQLインサイド

大墨 昂道

富士通株式会社
ソフトウェアプロダクト事業本部 データマネジメント事業部

 

専門分野

  • データベース

2018年からPostgreSQLをベースにしたデータベース「FUJITSU Software Enterprise Postgres」の開発業務に従事し、OSSコミュニティでの活動にも参加している。

はじめに

PGConは、PostgreSQLのユーザーと開発者が年に一度、世界各地からカナダのオタワに集い、皆がテーマを持ち寄り、信頼関係を構築したり、ディスカッションするためのカンファレンスです。今回はCOVID-19の影響により、IRCやZoomを利用したオンライン開催になり、カナダのオタワ時間で2020年5月26日(火曜日)から2020年5月29日(金曜日)まで開催されました。カンファレンススケジュールは、26日がTutorial Day、27日と28日がTalksで、最終日がUnconferenceでした。
今回、私は「Unconference」で、データロード機能の改善案をテーマに開発者たちと1時間のディスカッションを実施しました。ここでは、その内容を中心にお伝えします。

「Unconference」へのテーマ投稿
図1:「Unconference」へのテーマ投稿

データロード機能の改善に向けた2つの提案

今回、データロード機能の改善について大きく2つの提案をしました。
1つは、富士通のお客様からもご要望いただいているデータロード機能における性能改善の提案です。データロード機能は、データベースにCSVファイルなどの外部データを読み込むための機能です。データロード機能には、ロード速度自体を上げることや、入力データに不正な形式のデータが混入していた際に、適切な処理を施すように改良することなどのさまざまな課題が挙げられます。その中でも今回私が焦点を当てたのは、ロード速度の改善です。用途が広がるとともに大容量化が進むデータベースのロード速度を上げるために、データロード時のトランザクションログ(Write-Ahead Log、以降WAL)の出力を抑止する機能「COPY UNLOGGED」を提案することにしました。この提案について、コミュニティーと問題を共有、ディスカッションし、可能であれば内部設計まで完了させたいと考えていました。
もう1つは、コミュニティー内におけるデータロード機能の改善自体を活性化するための提案です。事前にOSSコミュニティーのデータロード機能に関する過去スレッドから、性能改善に向けてどのような技術的な課題があるのかを洗い出し、そのサマリーを共有することにしました。この提案により、開発者がデータロード機能への設計や開発に名乗りをあげてくれることを目指しました。

データロード機能の課題を共有
図2:発表の様子―データロード機能の課題を共有(左)し、Zoomのchat roomで議論(右)

性能と信頼性の間でディスカッションが白熱

ディスカッションの中心は、1つ目のWAL抑止機能「COPY UNLOGGED」になりました。ディスカッションの中で、この機能を実装したい背景や問題意識はしっかりと共有できました。
PostgreSQLでは、現在、Parallel COPYなどデータロードの多重度を上げる高度な機能についてディスカッションされています。このことは、ロードしたいデータ量自体が膨大になりつつあることが背景にあります。実際に、富士通のお客様の中からもロードしたいデータ量が増加しているという声があります。多重ロードが実装された暁には、何十ものプロセスがデータベースに書き込むことが考えられます。業務のシビアな時間制限の中では、WALを抑止してでもスピードを重視することが求められてくるでしょう。このストーリーには共感性があり、アイデア自体の理解は得られました。
ただし、WALを抑止すると、WALに依存している機能、つまりレプリケーションやリカバリーが、COPY UNLOGGEDの機能を適用したテーブルに対して使用できなくなるというデメリットがあります。ディスカッションでは、この点の懸念を払拭できず、WALの出力レベルを現状の最小レベルの「minimal」より下げることは抵抗があるとの見解にとどまりました。今回の限られた時間でのディスカッションでは、ここまでで終わりましたが、今後はコミュニティーのメールスレッドにこの議題を持ち込み、引き続きアイデアをブラッシュアップしていきたいと思います。

「COPY UNLOGGED」の概念を共有しディスカッション
図3:発表資料 ― 「COPY UNLOGGED」の概念を共有しディスカッション

データロードの性能改善の機運は高まる

1つ目の性能改善は議論半ばとなりましたが、2つ目のデータロード機能の活性化提案は大きく前進しました。PostgreSQLの過去スレッドのひとつに、データベースのインデックスの一括ロードについてのディスカッションがありました。これはメーリングリスト上では停滞していて、コミュニティーのwikiでTODO項目に残ったままになっていました。今回、再提案したところ、著名な開発者の方に「面白い。改善が必要だ。」と前向きな姿勢を示してもらえました。他にも多くのトピックについて触れ、予定されていた1時間のセッションをオーバーするほど、コミュニティー内でのデータロード改善の機運を高めることができました。

既存の課題を再共有し、データロード機能を活性化
図4:発表資料 ― 既存の課題を再共有し、データロード機能を活性化

私にとって、今回が初めての提案になりましたが、今後も積極的にカンファレンスへの提案やディスカッションに参加して、自身の技術と経験を豊かにしていきたいです。最終的には内部設計や実装方法についてなど高度なセッションをリードできるようになって、PostgreSQLの発展により大きな貢献をしていきたいです。

関連リンク

2020年7月17日公開

本コンテンツに関するお問い合わせ

お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。

ページの先頭へ