「Alibaba Cloud」におけるPostgreSQL導入について
中国のアリババグループは1999年に設立し、企業間取引サイト、決済サービス、オンラインモールなどを提供しているIT企業グループだ。2009年からはパブリッククラウドコンピューティングサービス「Alibaba Cloud」を提供している。
今回は「Alibaba Cloud」におけるPostgreSQL導入についての背景をSiu氏が解説した。ここ数年で「Alibaba Cloud」が提供しているサービスは急増している。サービス提供先(AZ)は中国だけではなくインド、イギリス、アメリカがあり、2016年11月からはついに日本ほか、ドバイ、ドイツ、オーストラリアにも広げたところ。
まずは中国におけるPostgreSQLの普及度から。中国でリレーショナルデータベースといえば、知名度や実績においてOracleとMySQLの二強状態となっている。Siu氏はエンジニア転職サイトを示し、人気のデータベースを見るとOracle DatabaseとMySQLがトップに並んでいる。次にMicrosoft SQL Server、ここから大きく引き離されてPostgreSQLとMongoDBが並ぶという状況だ。
現在人気の二強がOracle DatabaseとMySQLということではあるが、Siu氏によると「10年ほど前からMySQLが(ライセンスコストを理由に)急速に伸びた」という。ただしOracle DatabaseからMySQLへ移行するとなると「外部キーがそのまま使えないなどの制約もある」とSiu氏は指摘する。
「Alibaba Cloud」は企業の顧客を抱えるため、サイトで提供するデータベースとしての要件を考えると、Siu氏は「(ライセンスコストを抑えつつ)パワフルなデータベースが必要です」と言う。既存システムからの移行を考えれば複雑なクエリーが利用できること、今後IoTの普及が見込まれることを考えるとJSONとGISが使えることも重要となる。
そうした要件を考えるとPostgreSQLがおのずと選択肢に上がってくる。PostgreSQLならJSON形式に早くから対応しており、地理空間情報の拡張となるPostGISが使えるためだ。さらにSiu氏は「PostgreSQLのFDW(Foreign Data Wrapper)があれば様々なデータソースにつなげることができます」と述べ、「Alibaba Cloud」でPostgreSQLが必要とされる理由とした。
「Alibaba Cloud」はいわばAWSやMicrosoft Azureのようなパブリッククラウドサービスだ。Siu氏は「PostgreSQLに関するサービスは単なるPostgreSQLエンジンだけではなく、バックアップや高可用性も含めたトータルソリューション(マネージドサービス)も提供しています」と言う。後者だとサイトにデータベースを作成すると自動的にインスタンス2つ作成し、AZをまたいでレプリケーションして高可用性を維持したり、バックアップを確保するなどしている。
続けてSiu氏は「インフラのメンテナンスはアリババが行い、データベース担当者はSQLに専念できるようにしています」と述べる。ブラウザからGUIでパフォーマンスの監視ができる保守画面では遅いSQLを特定したり、チューニングのためのアドバイスも提供しているという。PostgreSQLはまだ近年着手したばかりとはいうものの、サービスが充実していることがうかがえる。またツールの一部はGitHubで公開するなどオープンソースへの貢献活動もしている。
興味深いデータベースサービスとなるのが「Alibaba Cloud HybridDB」。Greenplum Databaseをベースにした並列型データウェアハウスで、GreenplumだけではなくOracle Database、Microsoft SQL Server、MySQL、MongoDBなどからのデータをETL経由で読み込むことができる。主に企業システムから「Alibaba Cloud」への移行を想定しており、特に力を入れているのがOracleユーザーの取り込みだ。中国ではOracle DatabaseとMySQLのシェアが高いため必然的と言えそうだ。
最後にSiu氏は中国のPostgreSQL最新事情について報告した。近年になり、急速に中国でPostgreSQLの注目度が高まっているところだという。2016年には「Postgres Conference China 2016」を開催できたこともあり、PostgreSQLについて言及しているブログは増え、PostgreSQL関連のイベントやトレーニングコースも増えてきているという。頼もしい仲間となりそうだ。
PostgreSQLのクエリーの中でGPUの強力な処理能力を活用するには
「PL/CUDA – HPC級の計算能力をIn-database統計解析へ」と題した講演を行ったのは、NECの海外浩平氏だ。「少しとがった部分の話になります」と言う。GPUを用いたPostgreSQLの高速化モジュールであるPG-Stormは、データベースにクエリーが来るとオプティマイザーが判断しGPUで処理したほうが速いものはGPUで処理するもの。JOIN、GROUP BY、Projectionに対応し、アプリケーションからはクエリーの変更が必要ないのが特長だ。
現状、GPUの処理は強力で、NVIDIAのハイエンドのTesla P100ではコア数が3,584で並列度がかなり高い。「ただし、それを意図したコードを書く必要があります」と海外氏。PG-StormならSQL文のWhere句で計算式をCUDAプログラムに変換し、それをランタイムコンパイルしてGPUで実行できる。9.5のパラレルクエリーが入っていないものとの比較では、CPUではだんだん遅くなる処理がGPUを使った場合は処理時間がまったく増えない結果が示された。
とはいえ、この方法は計算集約的で統計計算の専用の仕組みよりは遅い。そこでPL/CUDAで、GPUプログラムのためのCUDAコードをクエリーの中で書くようにした。その実証のために、創薬ベンチャーが化合物の類似度の計算をする実験も行った。化合物群が1,000個くらいある中から近いものを探す。この類似度計算の処理をCUDAで書きPL/CUDA関数で計算させ、結果はPostgreSQLのレコードに入る。あとは他のテーブルとのJOINなど可能だ。CPUで記述した場合は、3,000秒ぐらいかかったものが19秒になった。
50分かかると夜間バッチにするが、10数秒になればトライアンドエラーの作業に変えられる。この違いは大きい。PL/CUDAを使えば、マニュアルでGPUの性能を引き出すのに使え、SQLの中で計算させ結果を柔軟に使えるようにできるということだ。
Pgpool-IIはPostgreSQLに寄り添いながら進化し続ける
「Pgpool-IIの過去、現在、未来」というタイトルで講演を行ったのは、SRA OSS, Inc. 日本支社の石井達夫氏と長田悠吾氏だ。Pgpool-IIは多彩な機能もつPostgreSQL用のクラスタ管理ツール。石井氏よりその歴史が語られた。
その誕生は2003年、PHPでコネクションプールが使えないことを不満に思った石井氏がPostgreSQL用のコネクションプールサーバ「pgpool」を作ったのが始まりだった。その翌年にはレプリケーション機能が実装された。PostgreSQLにまだストリーミングレプリケーションがなかった時代の話だ。その後も様々な機能が加わり今のPgpool-IIがある。
開発体制も個人プロジェクトからコミュニティによるチーム作業へと変わっていった。現在ではパキスタンから開発に参加しているメンバーもいる。
多機能なPgpool-IIだが、現在ではストリーミングレプリケーションの管理ツールとして使われるケースが多い。負荷分散や自動フェイルオーバなどの基本機能に加え、Pgpool-II自体の可用性を高めるWatchdogやクエリキャッシュといった付加機能も備える。
「PostgreSQLのレプリケーション技術の進化に合わせてPgpool-IIも進化していきます」と石井氏。今後は同期レプリケーション、カスケードレプリケーション、そして来たるマルチマスタレプリケーションに対応していくという。