Amazon Aurora with PostgreSQL Compatibility を評価して SRA OSS, Inc. 日本支社 取締役支社長 石井達夫
SRA OSS, Inc. のご紹介 1999 年より PostgreSQL サポートを中心に OSS ビジネスを開始 2005 年に現在の形に至る 主なビジネス PostgreSQL, Zabbix などの OSS のサポート コンサルティング 導入構築 PowerGres ファミリーの開発 販売 PostgreSQL 用の各種トレーニング実施 商用 DB からのマイグレーションコンサル OSS 貢献 PostgreSQL Pgpool-II の開発 2 Copyright(c) 2017 SRA OSS, Inc. Japan
PostgreSQL の 20 年間の成長 規模は 7 倍以上に 20 万ステップから 150 万ステップに 本格的な RDBMS に トランザクション 行ロック MVCC SQL 標準対応 本格的なクエリオプティマイザ 高性能化 マルチプロセッサ対応 パラレルクエリ パーティショニング 高可用性化 レプリケーション 多機能化 全文検索 JSON 対応 ユーザの熱い支持 現在世界 29 ヵ国に 55 のコミュニティがある 3 Copyright(c) 2017 SRA OSS, Inc. Japan
商用 DB からの乗り換え先として Oracle からの移行先として注目されている もっとも Oracle から移行しやすい OSS データベース と言う評判 機能的に似ている 複雑なクエリやジョインも問題なく実行できる 信頼性が高い 4 Copyright(c) 2017 SRA OSS, Inc. Japan
lines of code 1,600,000 1,400,000 1,200,000 1,000,000 800,000 600,000 400,000 200,000 0 PostgreSQL History Sub-query Multi byte Trigger PL/pgSQL Row locks MVCC WAL log TOAST Concurrent Vacuum Multi Processor Windows Recursive SQL Window function HOT Full text search autovacuum Streaming replication true serializable isolation level Materialized view Foreign data wrapper JSONB Logical decoding Scale up to 80 cores Cascading replication UPSERT 6.1 6.2 6.3 6.4 6.5 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 9.0 9.1 9.2 9.3 9.4 9.5 9.6 10.0 1996 2017 Logical Replication Native Partioning Parallel Query 5 Copyright(c) 2017 SRA OSS, Inc. Japan
PostgreSQL と Aurora の機能ブロックの比較 PostgreSQL 全文検索 Geo データ JSON 信頼性 性能の高い DB エンジン パラレル Read Scale クエリ Up Read Replica 差し替え 全文検索 信頼性 性能の高い DB エンジン パラレルクエリ Aurora Geo データ JSON Read Scale Up AWS 独自 Read Replica エンジン部分のコードは変えていない 追加 フェイルオーバ処理 * 概念的な説明図であり 実際のアーキテクチャを表現しているわけではありません 追加 ここに注目! 高い Write 性能 6 Copyright(c) 2017 SRA OSS, Inc. Japan
なぜ Write 性能に着目するのか Read 性能を向上させる技術はすでにある スケールアウト パラレルクエリ Write 性能の向上は難しい アプリケーションレベルのシャーディングで write 性能は向上できるが アプリケーションの変更が必要 多くの試みがなされているが まだ決定的なものはない 7 Copyright(c) 2017 SRA OSS, Inc. Japan
Aurora に乗り換えるだけで Write 性能が向上する? そんなうまい話が本当にあるのか? これは是非検証しなければ... 8 Copyright(c) 2017 SRA OSS, Inc. Japan
Amazon RDS for PostgreSQL db.r3.8x large vcpu 32, mem:244gb Provisioned IO (IOPS: 10000) 検証環境 Amazon Aurora with PostgreSQL Compatibility db.r3.8x large vcpu 32, mem: 244GB Writer AZ1 pgbench AZ1 Writer AZ2 Multi AZ ( バックアップ ) Amazon EC2 m4.10x large vcpu 40 mem: 160GB AZ2 Shared Storage Volume Reader 9 Copyright(c) 2017 SRA OSS, Inc. Japan
検証用トランザクションの内容 同時接続数を 250,500,750,1000 と変化させ それぞれ 1 時間トランザクションを流し 実行できたトランザクション数を性能の指標とする 検証用テーブルは 一番大きいもので 2 億行 DB サイズは 30GB ひとつのトランザクションの中で SELECT を 1 回 UPDATE を 3 回 INSERT を 1 回実行する 10 Copyright(c) 2017 SRA OSS, Inc. Japan
初期データロード時間 Aurora Load Vacuum Index RDS Vacuum 時間が最も短縮されている 00:00:00 00:02:53 00:05:46 00:08:38 00:11:31 00:14:24 00:17:17 00:20:10 11 Copyright(c) 2017 SRA OSS, Inc. Japan
TPS 20,000 18,000 16,000 14,000 12,000 10,000 8,000 6,000 4,000 2,000 0 スループットの比較 250 500 750 1,000 同時接続数 Aurora RDS CPU 利用率はAurora が高い RDSではロック待ちが発生 AuroraのIOPSが少ない 書き込み単位が大きいため 12 Copyright(c) 2017 SRA OSS, Inc. Japan
応答時間の比較 50 45 Latency (ms) 40 35 30 25 20 15 250 同時接続 1 分間の推移 RDS Aurora 10 5 0 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 Aurora の応答時間は非常に安定している 13 Copyright(c) 2017 SRA OSS, Inc. Japan
性能検証結果まとめ Amazon Aurora for PostgreSQL Compatibility は Amazon RDS に比べ データロード時間は 1/3 スループットは 3 倍 応答時間が短く かつバラツキが少ない 同時接続数が増えても性能の劣化が少ない 14 Copyright(c) 2017 SRA OSS, Inc. Japan
Performance Insights クエリの種類によりボトルネックを容易に特定できる ( この例では UPDATE でロック待ち発生 ) 15 Copyright(c) 2017 SRA OSS, Inc. Japan
Read replica の利用 読み取りクエリの投げ先として利用 複数のレプリカを用意して負荷分散可能 レプリカに投げても良いクエリの識別は煩雑 SELECT( の一部 ) LOCK( の一部 ) COPY TO DECLARE, FETCH, CLOSE SHOW, SET, RESET SAVEPOINTなど PREPARE, EXECUTE, DEALLOCATE, DISCARD LOAD Read onlyトランザクションの開始 終了 16 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-II のご紹介 SRA OSSが中心となって開発しているOSSミドルウェア PostgreSQLの各種管理を行う フェイルオーバ管理 ノードの追加 削除 リードレプリカへの負荷分散管理 Pgpool-II 17 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-II の負荷分散機能 クエリの内容を解析し Writer read replica へ自動振り分けを行う きめ細かな負荷分散管理機能 振り分けの際 ノードにより重み付けが可能 アプリケーション データベース毎に振り分け先のノードを指定できる 18 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-II の負荷分散管理のイメージ 参照クエリ プライマリは更新処理に専念する プライマリ 参照クエリのうち 0% 参照クエリのうち 40 % スタンバイ 参照クエリのうち 30 % アプリケーション名やデータベース名で分散させることも可能 スタンバイ スタンバイ 参照クエリのうち 30 % 19 Copyright(c) 2017 SRA OSS, Inc. Japan
Pgpool-II の今後の計画 現在は PostgreSQL(streaming replication) Amazon RDS に対応 Amazon Aurora for PostgreSQL Compatibility への対応は技術的には難しくないので 要望が多ければ対応します! 20 Copyright(c) 2017 SRA OSS, Inc. Japan
Thank you! 21 Copyright(c) 2017 SRA OSS, Inc. Japan