Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Database for PostgreSQL 入門 (PostgreSQL Co...

kt
November 12, 2021

Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)

https://www.postgresql.jp/jpug-pgcon2021

Microsoft Azure では Azure Database for PostgreSQL という形で PostgreSQL を提供している。

本セッションは、本サービスに興味がある方を対象に Azure 特有のポイントを主軸に解説し、検討の材料としていただくことを目的としている。トピックとしては、概要、既存DBからのマイグレーション、Azure におけるパフォーマンス最適化について解説する。

kt

November 12, 2021
Tweet

More Decks by kt

Other Decks in Technology

Transcript

  1. Part 1 - Contents 1. PaaS / Azure / Azure

    Database for PostgreSQL のベネフィット 2. デプロイの選択肢 1. Single Server 2. Flexible Server (Preview) 3. Hyperscale (Citus)
  2. PaaS としてのデータベース アプリにフォーカスする。 データベースではなく。 PostgreSQL のためのエンタープライズグ レードのマネージドサービス。価値とパ フォーマンスを継続的に提供。 On-premises PostgreSQL

    IaaS Azure VMs with PostgreSQL PaaS Azure Database for PostgreSQL Datacenter management Hardware O/S provision /patching Database provision/ Patch/Scaling Virtualization Data Applications High availability /DR/Backups Datacenter management Hardware Virtualization O/S Database provision/ Patch/Scaling Data Applications High availability /DR/Backups Data Applications Datacenter management Hardware Virtualization O/S Database provision/ Patch/Scaling High availability/ DR/Backups Intelligent performance/security 機械学習のケイパビリティ お客様がマネージ Microsoft がマネージ
  3. PaaS がもたらすベネフィット PaaS におまかせ! あなたのお仕事 PaaS による支援 ハードウェアの調達と管理 オンデマンドでのスケール バックアップによるデータの保護

    (そしてヘルスチェックと 維持) ポイントインタイム リストア 高可用性の実現 99.99% SLA と自動フェイルオーバー ディザスタリカバリの実現 ジオ冗長とジオレプリケーション 標準への準拠とコンプライアンス 簡単に使える機能 悪意のあるユーザーと過失からのデータ保護 簡単に使える機能 アップデートとアップグレード アップデートとアップグレード 監視, トラブルシューティング, それらのスケール 簡単に使える機能 将来を見越したチューニングとメンテナンス 簡単に使える機能
  4. Azure との統合 ü Dev Ops ü 管理性とパフォーマンスチューニン グ ü データの可視化

    ü 高度な分析とAI ü データベースのマイグレーション AAD Virtual Network Machine Learning App Service Data Factory Functions Stream Analytics Tables Virtual Machine Container Services
  5. セキュリティとコンプライアンス SOC 2 Type 2 CSA STAR Certification Level 1

    ü Azure Active Directory との統合によるセキ ュリティ ü SSL, ファイアウォール規則, VNET によるア クセスのコントロール ü 常に有効な組み込みのデータ暗号化とバッ クアップ ü 常に最新のセキュリティによるデータ保護 と、Azure IP Advantage によるコンプライ アンス ü 優れたコンプライアンスのオファー (SOC, ISO, CSA STAR, PCI DSS, HIPAA, etc.)
  6. サーバーを監視 不審なアクセス元 ブルートフォース攻撃 怪しいユーザー SQL インジェクション Microsoft Defender for open-source

    relational databases My … Clients App Administration Analytics DB backend Attacker Attacker 1 2 3 1 2 3 2 データ漏洩につながるアタックを検知 ※ Flexible Server (Preview) では利用不可
  7. Advanced Threat Protection (Contd.) データ漏洩につながる異常で害悪な試行を検知 Apps Advanced Threat Protection (1)

    Turn on Advanced Threat Protection (3) Real-time actionable alerts (2) Possible threat to access / breach data Attacker Developer User ü 有効化するだけ ü 異常なアクセスを検知 (e.g. brute force, location, app, user..,) ü 調査と修正のアクショ ンにつながるアラート ü Azure Security Center を 利用して全ての Azure テナントのアラートを 閲覧
  8. その他 Azure Database のベネフィット • オンプレのデータベースと同じ方法でアクセス・管理できるため、学習コストを抑制。 • これまで培ったリレーショナルデータベースの設計スキルやプログラミングのスキルが活躍。 • オンプレのデータベースに付随する各種管理オーバーヘッド(ハードウェアのメンテナンスや、容量拡

    張など)が不要。IT 部門の負担はほぼゼロ。 • プロビジョニングは数分で完了。サービスインまでの期間の大幅短縮と初期コストを削減。 • データベースのバックアップは自動実行。任意の時点へのポイントインタイムリストアが可能。 • 使用率や負荷の大きな変動に耐えられる柔軟性。 • データの冗長コピーを複数の物理サーバーに複製。ハードウェア障害が発生しても自動フェールオー バーにより可用性とビジネスの継続性を担保。 • データの増大やユーザーの増加に合わせてサービスやストレージサイズを拡張可能。 • 従量料金モデル。使用したリソースの分だけお支払い。 • クライアントとサーバー間の通信にはオンプレのデータベースと同じプロトコルを使用。これまでと同 じアプローチでアプリケーション開発が可能。
  9. Azure Database for PostgreSQL のベネフィット 自信を持ってワークロードを構築・移行する。そして価値に対して最適化する。 オープンソースのツー ルと拡張機能 Stay productive

    with full compatibility with community PostgreSQL and support for your favorite PostgreSQL extensions. フルマネージドによる パフォーマンスの最大 化 Focus on your application innovation, not database management. Enjoy AI- powered performance optimization and advanced security. 最高のコントロール と柔軟性 Enjoy maximum control and flexibility with custom maintenance windows, zone redundant high availability and additional configuration parameters for fine grained database tuning. どこまでもスケーラ ブルなアプリケーシ ョンの開発 Scale with ease to hundreds of nodes, with no app rewrites. Save time by running transactions and analytics in one database and avoid the costs of manual sharding. Single Server Flexible Server Preview Hyperscale
  10. デプロイの選択肢 Single Server Flexible Server (Preview) Hyperscale (Citus) フルマネージドな設定済みデータ ベース

    ユースケース例 ・OLTP, OLAP ・JSON, 地理情報, 全文検索を要 件とするアプリケーション ・モダンなフレームワークを使っ たクラウドネイティブアプリケー ション より多くのコントロールとゾーン 冗長 ユースケース例 ・様々なワークロード ・低遅延なゾーン冗長を利用した ハイパフォーマンスアプリケーシ ョン マッシブなスケールが必要なアプ リケーション向け ユースケース例 ・マルチテナントのSaaSアプリケ ーション ・リアルタイム分析 ・高スループットでトランザクシ ョンを伴うアプリケーション ・Azure Arc を利用した、場所を 問わないデプロイ (Preview)
  11. Single Server のスペック Single Server Basic General Purpose Memory Optimized

    仮想コア 1, 2 2, 4, 8, 16, 32, 64 2, 4, 8, 16, 32 仮想コアあたりのメモリ 2 GB 5 GB 10 GB ストレージサイズ 5 GB 〜 1 TB 5 GB 〜 16 TB 5 GB 〜 16 TB ストレージの種類 Basic Storage General Purpose Storage General Purpose Storage IOPS (ストレージサイズに依存) 可変 (保証無し) 3 IOPS/GB 最小 100 IOPS 最大 20,000 IOPS 3 IOPS/GB 最小 100 IOPS 最大 20,000 IOPS 最大コネクション数 (仮想コア 数に依存) 55 〜 105 150 〜 1,900 300 〜 1,987 最大ユーザーコネクション数 ( 仮想コア数に依存) 50 〜 100 145 〜 1,895 295 〜 1,982 ・PostgreSQL のバージョン: 11, 10, 9.6 ・コネクションプーリング: ユーザーが導入 ・レプリケーション: 読み取りレプリカ, 論理デコード ・計画メンテナンス: 最短30日間隔, 72時間前に通知
  12. Flexible Server (Preview) のスペック Flexible Server Burstable General Purpose Memory

    Optimized 仮想コア 1, 2 2, 4, 8, 16, 32, 48, 64 2, 4, 8, 16, 20, 32, 48, 64 仮想コアあたりのメモリ 可変 4 GB 6.75 〜 8 GB ストレージサイズ 32 GB 〜 16 TB 32 GB 〜 16 TB 32 GB 〜 16 TB ストレージの種類 N/A N/A N/A IOPS (ストレージサイズに依存) 最小 120 IOPS (32GiB時) 最大 1,280 IOPS (16TiB時) 最小 120 IOPS (32GiB時) 最大 18,000 IOPS (16TiB時) 最小 120 IOPS (32GiB時) 最大 18,000 IOPS (16TiB時) 最大コネクション数 (仮想コア 数に依存) 50 〜 100 859 〜 5,000 1,719 〜 5,000 最大ユーザーコネクション数 ( 仮想コア数に依存) 47 〜 97 856 〜 4,997 1,716 〜 4,997 ・PostgreSQL のバージョン: 13, 12, 11 ・コネクションプーリング: Azure マネージド PgBouncer, 最大 5,000 ・レプリケーション: 論理レプリケーション, 論理デコード ・予定メンテナンス: 最短30日間隔, 5日前に通知, 曜日・時間帯を指定可能
  13. Hyperscale (Citus) のスペック Hyperscale (Citus) Basic tier (1 node only)

    Standard tier – Worker Standard tier – Coordinator 仮想コア 2, 4, 8 4, 8, 16, 32, 64 4, 8, 16, 32, 64 仮想コアあたりのメモリ 4 GiB 8 GiB 4 GiB ストレージサイズ 128, 256, 512 GiB 0.5, 1, 2 TiB 0.5, 1, 2 TiB ストレージの種類 General purpose (SSD) General purpose (SSD) General purpose (SSD) IOPS (ストレージサイズに依存) 3 IOPS/GiB 最小 384 IOPS (128 GiB時) 最大 1,536 IOPS (512 GiB時) 3 IOPS/GiB 最小 1,536 IOPS (1×0.5 TiB時) 最大 122,960 IOPS (20×2 TiB時) 3 IOPS/GiB 最小 1,536 IOPS (0.5 TiB時) 最大 6,148 IOPS (2 TiB時) 最大コネクション数 (仮想コア 数に依存) N/A 600 300 〜 1,000 最大ユーザーコネクション数 ( 仮想コア数に依存) N/A N/A 297 〜 997 ・PostgreSQL のバージョン: 14, 13, 12, 11 ・コネクションプーリング: Azure マネージド PgBouncer, 最大 2,000 ・レプリケーション: 読み取りレプリカ, 論理デコード ・予定メンテナンス: 最短30日間隔, 5日前に通知, 希望曜日・時間帯を指定可能
  14. デプロイの選択肢 (再掲) Single Server Flexible Server (Preview) Hyperscale (Citus) フルマネージドな設定済みデータ

    ベース ユースケース例 ・OLTP, OLAP ・JSON, 地理情報, 全文検索を要 件とするアプリケーション ・モダンなフレームワークを使っ たクラウドネイティブアプリケー ション より多くのコントロールとゾーン 冗長 ユースケース例 ・様々なワークロード ・低遅延なゾーン冗長を利用した ハイパフォーマンスアプリケーシ ョン マッシブなスケールが必要なアプ リケーション向け ユースケース例 ・マルチテナントのSaaSアプリケ ーション ・リアルタイム分析 ・高スループットでトランザクシ ョンを伴うアプリケーション ・Azure Arc を利用した、場所を 問わないデプロイ (Preview)
  15. Single Server Single Server Flexible Server (Preview) Hyperscale (Citus) フルマネージドな設定済みデータ

    ベース ユースケース例 ・OLTP, OLAP ・JSON, 地理情報, 全文検索を要 件とするアプリケーション ・モダンなフレームワークを使っ たクラウドネイティブアプリケー ション より多くのコントロールとゾーン 冗長 ユースケース例 ・様々なワークロード ・低遅延なゾーン冗長を利用した ハイパフォーマンスアプリケーシ ョン マッシブなスケールが必要なアプ リケーション向け ユースケース例 ・マルチテナントのSaaSアプリケ ーション ・リアルタイム分析 ・高スループットでトランザクシ ョンを伴うアプリケーション ・Azure Arc を利用した、場所を 問わないデプロイ (Preview)
  16. ビジネス継続性 自動バックアップが構成済み。バックアップはAES256ビット暗号化を使用して暗号化。 バックアップの既定リテンション期間は7日。最大35日まで延長可能。 機能 Basic General Purpose Memory Optimized バックアップからの

    ポイントインタイム リストア リテンション期間内の 任意の復元ポイント リテンション期間内の 任意の復元ポイント リテンション期間内の 任意の復元ポイント Geo レプリケーション バックアップからの geo リストア N/A ERT < 12 時間 RPO < 1 時間 ERT < 12 時間 RPO < 1 時間 バックアップ種類 頻度 完全バックアップ 毎週一回、DBレイヤーでのバックアップ(≦4TB) 初回のみストレージレイヤーでの完全スナップショット(>4TB) 差分バックアップ 1 日に 2 回、DBレイヤーでのバックアップ(≦4TB) 1 日に 3回、ストレージレイヤーでの差分スナップショット(>4TB) トランザクション ログ バックアップ 5 分ごと バックアップの機能 バックアップの種類 ※1 ERT: Estimated Recovery Time ※2 RPO: Recovery Point Objective
  17. Flexible Server (Preview) Single Server Flexible Server (Preview) Hyperscale (Citus)

    フルマネージドな設定済みデータ ベース ユースケース例 ・OLTP, OLAP ・JSON, 地理情報, 全文検索を要 件とするアプリケーション ・モダンなフレームワークを使っ たクラウドネイティブアプリケー ション より多くのコントロールとゾーン 冗長 ユースケース例 ・様々なワークロード ・低遅延なゾーン冗長を利用した ハイパフォーマンスアプリケーシ ョン マッシブなスケールが必要なアプ リケーション向け ユースケース例 ・マルチテナントのSaaSアプリケ ーション ・リアルタイム分析 ・高スループットでトランザクシ ョンを伴うアプリケーション ・Azure Arc を利用した、場所を 問わないデプロイ (Preview)
  18. ビジネス継続性 自動バックアップが構成済み。バックアップはAES256ビット暗号化を使用して暗号化。 バックアップの既定リテンション期間は7日。最大35日まで延長可能。 機能 Basic General Purpose Memory Optimized バックアップからの

    ポイントインタイム リストア リテンション期間内の 任意の復元ポイント リテンション期間内の 任意の復元ポイント リテンション期間内の 任意の復元ポイント Geo レプリケーション バックアップからの geo リストア N/A ERT < 12 時間 RPO < 1 時間 ERT < 12 時間 RPO < 1 時間 バックアップ種類 頻度 完全バックアップ 初回のみストレージレイヤーでの完全スナップショット 差分バックアップ 1 日に 3回、ストレージレイヤーでの差分スナップショット トランザクション ログ バックアップ 5 分ごと バックアップの機能 バックアップの種類 ※1 ERT: Estimated Recovery Time ※2 RPO: Recovery Point Objective
  19. 予定メンテナンス設定の管理 フレキシブル サーバーでは、特定の曜日とその日の時間帯の間でのメンテナンスをスケジュール可能 • システム管理のスケジュールの場合、 サーバーのリージョン時間の 午後 11 時から午前 7

    時までの任意 の 1 時間の期間が選択される。 • カスタム スケジュールの場合、曜日 と 1 時間の時間枠を選択して、 サーバーのメンテナンス期間を指定 できる。 ※変更のロールアウトの一環として、最初にシステム管理のスケジュールが構成されたサーバーに更新プログラムが適用され、 次に 1 つのリージョン内で 7 日間以上の空白期間を置いてカスタム スケジュールが構成されたサーバーに適用される。
  20. Hyperscale (Citus) Single Server Flexible Server (Preview) Hyperscale (Citus) フルマネージドな設定済みデータ

    ベース ユースケース例 ・OLTP, OLAP ・JSON, 地理情報, 全文検索を要 件とするアプリケーション ・モダンなフレームワークを使っ たクラウドネイティブアプリケー ション より多くのコントロールとゾーン 冗長 ユースケース例 ・様々なワークロード ・低遅延なゾーン冗長を利用した ハイパフォーマンスアプリケーシ ョン マッシブなスケールが必要なアプ リケーション向け ユースケース例 ・マルチテナントのSaaSアプリケ ーション ・リアルタイム分析 ・高スループットでトランザクシ ョンを伴うアプリケーション ・Azure Arc を利用した、場所を 問わないデプロイ (Preview)
  21. テーブルの種類 Account_id BuyProduct Amount 2 Eraser 10 3 Postit 12

    Account_id BuyProduct Amount 1 Pencil 5 4 Notebook 3 Coordinator Worker Worker Account_id Name Pref 1 Tanaka Tokyo 2 Suzuki Osaka 3 Sato Nagoya 4 Obayashi Fukuoka Coordinator Worker Worker Coordinator 分散キーによる分散 全ノードにコピー 分散テーブル ワーカー ノードにわたり水平方向にパーティション分割 される。 (デフォルトは32分割) 参照テーブル すべてのワーカーに複製されるので、いずれかのワー カーに対するクエリは、参照情報にローカルでアクセス でき、別のノードから行を要求するネットワーク オー バーヘッドは生じない。 ローカル テーブル シャードせずにコーディネーター上に作成される通常の テーブル Account_id LoginDate 1 2016-07-13 3 2016-07-14 4 2016-07-16 2 2016-07-30 Account_id Name Pref 1 Tanaka Tokyo 2 Suzuki Osaka 3 Sato Nagoya 4 Obayashi Fukuoka
  22. 分散テーブルにおけるクエリ動作 select distinct l_orderkey from lineitem lineitem_102104 lineitem_102105 lineitem_102106 Coordinator

    Worker lineitem_102107 lineitem_102108 lineitem_102109 Worker select distinct l_orderkey from lineitem_10210x select distinct l_orderkey from lineitem_10210x SELECT create_distributed_table('lineitem', 'l_orderkey');
  23. 分散テーブルにおけるクエリ動作 (Contd.) select distinct l_orderkey from lineitem where l_orderkey =

    '10935495' lineitem_102104 lineitem_102105 lineitem_102106 Coordinator Worker lineitem_102107 lineitem_102108 lineitem_102109 Worker select distinct l_orderkey from lineitem_102104 SELECT create_distributed_table('lineitem', 'l_orderkey');
  24. Join のコロケーション APPLICATION SELECT FROM WHERE AND count(*) ads JOIN

    campaigns ON ads.company_id = campaigns.company_id ads.designer_name = ‘Isaac’ campaigns.company_id = ‘Elly Co’ ; METADATA COORDINATOR NODE WORKER NODES W1 W2 W3 … Wn SELECT … FROM ads_1001, campaigns_2001 … 関連するテーブルの関連する行同士を同一のノードに配置する。これにより、関連する行を対象とする Join クエリに よって発生する通信データ量を削減することができる。
  25. 集約関数のスケールアウト APPLICATION SELECT FROM GROUP BY company_id, avg(spend) AS avg_campaign_spend

    compaigns company_id; METADATA COORDINATOR NODE WORKER NODES W1 W2 W3 … Wn SELECT company_id sum(spend), count(spend) … FROM campaigns_2009 … SELECT company_id sum(spend), count(spend) … FROM campaigns_2001 … SELECT company_id sum(spend), count(spend) … FROM campaigns_2017 … トランザクションが発生する前にデータを集約することで、オーバーヘッドを削減することができる。バルクでの集 約によって並行性の問題を回避することができる。
  26. トランザクションのスケールアウト APPLICATION BEGIN; UPDATE SET WHERE UPDATE SET WHERE COMMIT;

    campaigns feedback = ‘relevance’ company_type = ‘platinum’ ; ads feedback = ‘relevance’ company_type = ‘platinum’ ; METADATA COORDINATOR NODE W1 W2 W3 … Wn BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2009 … COMMIT PREPARED … BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2001 … COMMIT PREPARED … BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2017 … COMMIT PREPARED … WORKER NODES Hyperscale (Citus) は、Coordinator node を通してトランザクションを準備するよう、ビルトインの 2PC プロトコルを 拡張している。Worker node がトランザクションをコミットしたら、ロックをリリースし、応答する。そして Coordinator node はトランザクションを完了させる。
  27. スキーマ変更 APPLICATION ALTER TABLE ADD COLUMN campaigns company_type text METADATA

    COORDINATOR NODE W1 W2 W3 … Wn BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2009 … COMMIT PREPARED … BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2001 … COMMIT PREPARED … BEGIN … assign_Scaled-out_ transaction_id … UPDATE campaigns_2017 … COMMIT PREPARED … -- Schema Change WORKER NODES テーブルの種類やスケールアウトのストラテジーが変更になったら、スキーマが更新される。スキーマ・マイグレー ションのためのソーステーブルが用意され、スケールアウト・キーが追加される。
  28. Azure クラウドへのマイグレーション Traditional Application multi-tier Architecture Load Balancer Presentation Layer

    Application Tier Data Tier Web Client Custom UI On-Premise Data Center Load Balancer Presentation Layer Application Tier Data Tier Web Client Custom UI Azure IaaS Load Balancer Load Balancer Azure Site Recovery Presentation Layer Application Tier Data Tier Web Client Custom UI Azure IaaS Load Balancer Load Balancer Azure PostgreSQL/My SQL/MariaDB (PaaS) Database Migration Data Center/hardware Upgrades Backup/HADR Security Monitoring/Troubleshooting Managing at scale Application Scaling Challenges Data Center/hardware Upgrades Backup/HADR Security Monitoring/Troubleshooting Managing at scale Application Scaling Challenges Data Center/hardware Upgrades Backup/HADR Security Monitoring/Troubleshooting Managing at scale Application Scaling Challenges Presentation Layer Application Tier Data Tier Web Client Custom UI Azure App Service Kubernetes Load Balancer Load Balancer Azure PostgreSQL/My SQL (PaaS) Data Center/hardware Upgrades Backup/HADR Security Monitoring/Troubleshooting Managing at scale Application Scaling Challenges Cloud Native Architecture
  29. PostgreSQL to PostgreSQL マイグレーション 発見と アセスメント Azure への接 続 (ツールを

    使用) データとスキーマ のマイグレーショ ン Azure Database Migration Service 論理 レプリケーション (※) ダンプと リストア DMS Continuous Sync X アプリケーション の更改 最適化 テスト ※ Flexible Server (Preview) に対する マイグレーションのみ Azure Data Factory も利用可能
  30. Oracle からのマイグレーション Whether you’re migrating a customer app or an

    ISV app, migrating from Oracle to PostgreSQL is well-supported. Assess Migrate Optimize Secure and Manage Azure On-premises Migrate tables and data Adjust stored procedures Adapt data structures Clone Oracle system catalogs Enter Oracle and PostgreSQL Credentials
  31. マイグレーションプロセス Pre-migration + migration + post-migration を簡単に。 1. Pre-migration Discover

    Assess Convert • 発見 • 評価 • 見積り • 計画 • コンバート • テスト 2. Data migration Data migration Ora2pg App • インフラのセットアップ • マイグレーションのセットアップ • 進行している変更の複製 • カットオーバーとテスト 3. Post-migration アプリの修正 Iteratively make any necessary changes to your applications 機能と性能のテス トを実行 Iteratively run functional and performance tests 最適化 Based on tests, address any performance issues, and then retest to confirm improvements データベースマイグレーションガイド: https://datamigration.microsoft.com/
  32. より具体的なガイド Oracle から Azure Database for PostgreSQL へ: 移行ガイド -

    Azure Database for PostgreSQL | Microsoft Docs OrcasNinjaTeam/Oracle to Azure Database for PostgreSQL Migration Guide.pdf at master · microsoft/OrcasNinjaTeam (github.com)
  33. • Oracle からの移行のベストプラクティスを一箇 所にまとめました • Oracle の各機能がどのように PostgreSQL に マッピングされるかをトピックごとに概説して

    います • 300を超えるページの中で、以下の詳解もして います • Oracle の機能との互換性レベル • Ora2pg による自動化 • 機能とコードスニペット、そしてその相違 • 機能が PostgreSQL 11, 12, 13 でどのように 動作するかの比較 Oracle to PostgreSQL Migration Guide
  34. Part 3 - Contents 1. パフォーマンス・チューニングのためのツールや機能 2. ベストプラクティスと制約 3. アプリケーションとデータベース間の通信

    免責 Azure に関係する部分のみをご紹介します。 PostgreSQL の一般的なパフォーマンス・チューニングも基本的に有効であり、 併せて検討するべきですが、本セッションでは取り扱いません。
  35. PostgreSQL が提供する情報とツール Azure が関連するトピック 1. Autovacuum 2. データベースの統計 3. pg_stat

    ステートメントと統計収集サブシステム 4. サーバーログ (PostgreSQL ログ) 5. スロークエリログ (参考) その他検討すべきトピック 1. インデックス 2. テーブルのパーティショニング 3. Writes (checkpoints, bgwriter) 4. EXPLAIN と EXPLAIN ANALYZE 5. 実行プラン 6. ロック, ブロック, デッドロックのトラブルシューティング 7. テーブル・ストレージレベルのパラメータ 8. Wait statistics と User Activity analysis
  36. Autovacuum • MVCC メカニズムに基づく内部データ一貫性のためのしくみ • 異なるプロセスの間でのブロッキングを最小化し、並行性を高める • 例えば、行を DELETE した際に物理的には除去されず、その行は

    “dead” とマークされる。行の UPDATE の際も同様で、この場合はさらに、新し いバージョンの行が INSERT される。これらの “dead” なレコードは “dead tuples” と呼ばれ、ディスク領域の浪費やクエリ性能の低下を招く。 • このような “dead tuples” に対し、VACUUM と ANALYZE コマンドを使っ て適切にメンテナンスを行う必要がある • テーブルに対して VACUUM と ANALYZE コマンドを自動的に実行するの が Autovacuum プロセス • VACUUM FULL は実行しない • デフォルトで有効化されている • テーブル単位でコンフィギュレーション可能 • 1日のうち利用の少ない時間帯に1回、VACUUM と ANALYZE を実行 することで統計情報の精度を高め、Planner が最良のクエリ計画を 選択できるようにするのが定石。 • 別のプロセスである Stats Collector が収集した情報を autovacuum launcher が使用し、autovacuum 対象テーブルのリストを特定する • Autovacuum による I/O への影響 を下げるのに役立つパラメータ • autovacuum_vacuum_threshold • autovacuum_vacuum_scale_factor • autovacuum_vacuum_cost_limit • autovacuum_vacuum_cost_delay • autovacuum_naptime • autovacuum_max_workers • vacuum_cost_page_hit • vacuum_cost_page_miss • vacuum_cost_page_dirty
  37. データベースの統計 • クエリ実行計画を作成するために PostgreSQL が利用する統計 • pg_statistic (シングルカラム用), pg_statistic_ext_data (マルチカラム用)

    • Autovacuum daemon がテーブル統計の収集と更新を含む各種バックグラウンド操作を自動化している • そのため、データベース統計関連のコンフィギュレーションは Autovacuum に対して行う
  38. pg_stat ステートメントと統計収集サブシステム • pg_stat_statements は実行される全てのクエリに関する統計を収集するモジュール • プリインストールされているが、パフォーマンスの観点からは無効化することが強く推奨される • Query Store

    で代替が可能 • Azure Portal と Azure CLI、いずれのインターフェースからも無効化が可能 • Azure Portal では、 pg_stat_statements.track = NONE の設定を行う • Azure CLI では、以下のコマンドを実行する az PostgreSQL server configuration set to \ --name pg_stat_statements.track \ --resource-group myresourcegroup \ --server mydemoserver --value NONE
  39. サーバーログ (PostgreSQL ログ) • サーバーログを介して 標準 PostgreSQL ログのみを取得可能 • Azure

    Portal では Monitoring > Server logs からアクセス可能 • ログ名のフォーマットは postgresql-%Y-%m-%d_%H%M%S.log であり、変更不可 • ログのローテートは、1時間ごとまたは100MBに到達した場合の どちらか先に条件を満たした方 • Log Analytics ワークスペースにログを送信することも可能 • 全てのログをダウンロードするには、Azure CLI が便利 az postgres server-logs list \ -g [resource_group] \ -s [server-name] \ --query '[].{Name:name}’ \ -o tsv | xargs -I {} az postgres server-logs download \ -g [resource_group] \ -s [server-name] \ -n {}
  40. スロークエリログ • Query Store でレビュー可能 • デフォルトではスロークエリログは disabled • 有効化は

    Azure Portal, Azure CLI, PowerShell で可能 • Azure Portal の場合、 Settings > Server parameters 内で log_min_duration_statement の値 (ミリ秒 単位) を定義可能
  41. Azure が提供する情報とツール Azure Database for PostgreSQL が提供する情報とツール 1. Resource utilization

    (Overview 内) 2. Query Store 3. Alerts (Monitor セクション配下) 4. Metrics (Monitor セクション配下) 5. Query Performance Insight (Intelligent Performance セクション配下) 6. Performance Recommendations (Intelligent Performance セクション配下) その他 Azure が提供する情報とツール 1. Azure Activity log (Azure Monitor 内) 2. Resource Health (Azure Service Health 内) 3. Azure Advisor 4. Log Analytics
  42. Query Store • クエリ性能をトレースすることが可能 • デフォルトでは無効 • Single Server にのみ適用可能

    • データベース単位ではなくインスタンス単位 • 全てのデータは Azure Database for PostgreSQL インスタンスの azure_sys データベースに格納される • azure_sys にはユーザー, データベース, クエリの情報が格納されている • azure_sys のデータは変更しないこと • azure_sys にあるメインのビューは以下の2つ • query_store.qs_view: 実行中クエリに関する統計 • 実行時間とキャッシュヒットの情報を含む、Query Store にある全てのデータを返す • query_store.pgms_wait_sampling_view: 待ち状態に関する統計 • クエリのテキストデータを返す • Query Store に関する関数は以下の2つ (いずれも Server Admin 権限でのみ実行可能) • qs_reset(): すべての統計を破棄 • staging_data_reset(): メモリ上に存在するDBに書き出されていない統計を破棄
  43. Alerts (Monitor セクション配下) • 重要なものからクリティカルなものまで、イベン トに関する情報を提供 • Activity Log からもアラートを取得可能

    • Action Groups をアラートごとに作成し、通知を させることが可能 • 特に重要なメトリクス • Active connections • Failed connections • CPU percent • Memory percent • IO percent • Storage percent
  44. Metrics (Monitor セクション配下) • 選択期間のメトリクスをリアルタイムにグラフ表 示することが可能 • 重要なメトリクスと推奨される閾値は以下の通り • cpu_percent

    … 85% • memory_percent … 85% • io_consumption_percent … 70% • storage_percent … 90% • connections_failed … 10 • pg_replica_log_delay_in_bytes … 1073741824 (1MB)
  45. Query Performance Insight (Intelligent Performance セクション配下) • 利用するには Query Store

    が有効化されている必要がある • query_capture_mode が “TOP” か “ALL” に設定されている必要がある • Long running queries と Wait Statistics の2つのレポートを閲覧することができる • 読み取りレプリカについてのレポートは得られないことに注意
  46. Azure Activity log (Azure Monitor 内) • サブスクリプション レベルのイベントに対するインサイトを提供 •

    サーバーの再起動やパッチ適用等のイベントをロギング • アラートを発報することも可能
  47. Resource Health (Azure Service Health 内) • Azure リソースに影響するサービスレベル の問題に対する診断とサポートを提供

    • 現在と過去のリソース正常性に関するレポ ートを提供 • リソースのステータスを表示 • Resource Available (問題無し/解決済み) • Resource Unavailable (Azure インフラにエ ラー等の問題/ユーザー操作による利用不可) • Unknown • Degraded (リソースは利用可能だがパフォー マンスや可能性に影響する問題あり) • 利用可能なアクションに関するリンクも提 示 • “Diagnose and solve problems” タブでは Microsoft による計画メンテナンスや一般 的な問題に関する追加情報を提供
  48. Azure Advisor • 構成とテレメトリを解析し、パーソナラ イズ化されていてアクショナブルなレコ メンデーションを行う • インサイトの提供は1日ごと • Azure

    Database for PostgreSQL は PaaS なので、実際は Azure Advisor の推奨を 見てコンピューティング・パワーのアッ プグレード/ダウングレードのみを判断 することになる • Azure Advisor 自体にコストはかからな いが、バジェットの設定は使用されない ため、最適化を実行する際はコストの経 過も併せて観察するのがオススメ
  49. Log Analytics • Azure Monitor Logs が収集したデータに対してクエリを実行することができる • クエリ言語は KSQL

    • データのフィルター、アラートの作成、データのエクスポート(CSV等)などが可能
  50. ベストプラクティスと制約 1. リソースの数と Tier は正しく選ぶ 2. エクステンション 3. サーバーのパラメータ 4.

    データベースのロギングのパラメータ 5. GUC (Grand Unified Configuration) のパラメータ
  51. リソースの数と Tier は正しく選ぶ • あなたのアプリケーションの SLA を満たす IOPS を把握していますか? •

    テーブルはいくつありますか? • テーブルあたりの平均的な行サイズはどれくらいですか? • バイナリオブジェクトを保存する予定はありますか? • インデックスはどれくらいありますか?どのカラムにインデックスが貼られていますか? • どのようにデータが更新/挿入されますか? • データをアーカイブ化する戦略はありますか? • 圧縮を検討すべきですか? • 同時アクセスユーザー数はどれくらいですか?
  52. エクステンション • Azure Database for PostgreSQL はよく使われている多くのエクステンションをサポート • pg_available_extensions システムビューをクエリすることで、利用可能なエクステンションを確認すること

    が可能 • バージョンとサーバータイプごとに、公式ドキュメントにリストアップされている • カスタムエクステンションは非サポート • プリインストールのエクステンションで最重要なのは pg_stat_statements • その他のオススメのエクステンションは以下の通り • pgaudit (PostgreSQL Audit Extension) • pgrowlocks • pgstattuple • hypopg (Hypothetical indexes for PostgreSQL) • pg_prewarm
  53. データベースのロギングのパラメータ • 各種ロギングにあたっては logging_collector が有効であることを要確認 • 但し Azure Monitor による診断を利用する際には、パフォーマンスへの影響を避けるために

    logging_collector は無効にする • その他重要なパラメータは以下の通り • log_min_error_statement • log_error_verbosity • log_line_prefix • log_min_duration_statement • log_statement • log_connections • log_disconnections • log_checkpoints • log_lock_waits • log_autovacuum_min_duration • log_replication_commands • log_temp_files
  54. GUC (Grand Unified Configuration) のパラメータ • GUC は、PostgreSQL のチューニングに用いられ、構成のためのルールを設定する •

    重要パラメータは以下の通り • shared_buffers (変更不可) • work_mem • max_connections (変更不可) • autovacuum • effective_cache_size • max_parallel_workers • maintenance_work_mem • seq_page_cost • random_page_cost • min_val_size / max_val_size
  55. コロケーション、リージョン、そして遅延 • 異なるリージョン間の通信(送信データ)は課金対象となる • リージョン内通信とリージョン間通信を比較すると、どちらかといえば前者の方が遅延が低い • Azure で異なるリージョンにリソースが作られることはよくあることだし、容易に避けられることでもあ る •

    アプリケーションとデータベースは同じリージョンに配置(コロケーション)するのがベスト • 既にアプリケーションとデータベースを異なるリージョンにデプロイしてしまっていたら、アプリケー ションをデータベースと同じリージョンに移動させる
  56. コネクション・プーリングと PgBouncer • コネクション・プーリングの使用は強く推奨 • アプリケーションがコネクション・プーリングに対応しているか要確認 • アプリケーションがコネクション・プーリングに対応していない場合、PgBouncer を利用する •

    コネクションに弾力性を持たせるためのリトライ・ロジック • Flexible Server にはビルトインされている • 有効化する必要がある • General Purpose と Memory Optimized の Tier でのみサポート (Burstable では非サポート) • Azure Portal では一部の PgBouncer パラメータが表示されていない
  57. まとめ • Azure Database for PostgreSQL について、ご紹介と解説をしました。 • PaaS ならではの生産性、Azure

    ならではのベネフィットを、簡単に得ることができます。 • 代表的なマイグレーションのパターンの解説も行いました。具体的かつ詳細な方法については、ガイド をご確認ください。 • パフォーマンスを最適化するためのチューニングポイントを、Azure が関連する、あるいはAzure が提供 する機能に絞って解説しました。PaaS のメリットを活かして、より高速なアプリケーションの開発にト ライしてください。
  58. リファレンス • Azure Database for PostgreSQL のドキュメント https://docs.microsoft.com/ja-jp/azure/postgresql/ • 更新情報

    https://azure.microsoft.com/ja-jp/updates/?category=databases&query=PostgreSQL • Microsoft Tech Community https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/bg-p/ADforPostgreSQL • 提供中のリージョン https://azure.microsoft.com/ja-jp/global-infrastructure/geographies/#geographies • 価格 https://azure.microsoft.com/ja-jp/pricing/details/postgresql/server/ • 予約容量の前払い https://docs.microsoft.com/ja-jp/azure/postgresql/concept-reserved-pricing • SLA https://azure.microsoft.com/ja-jp/support/legal/sla/postgresql/v1_0/ • セキュリティ • セキュリティ ベースライン https://docs.microsoft.com/ja-jp/security/benchmark/azure/baselines/postgresql-hyperscale-security- baseline?toc=/azure/postgresql/TOC.json?toc=/azure/postgresql/TOC.json • Azure セキュリティ ベンチマーク https://docs.microsoft.com/ja-jp/security/benchmark/azure/overview-v1 • コミュニティ・ワーク • コミッター https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/microsoft-azure-welcomes-postgresql-committers/ba-p/1207612 • 最近の成果 https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/speeding-up-recovery-and-vacuum-in-postgres-14/ba-p/2234071 • Azure Advisor for PostgreSQL https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-azure-advisor-recommendations • 接続ライブラリ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-connection-libraries • Azure CLI サンプル https://docs.microsoft.com/ja-jp/azure/postgresql/sample-scripts-azure-cli • Azure CLI https://docs.microsoft.com/ja-jp/cli/azure/postgres?view=azure-cli-latest
  59. リファレンス (Contd.) • REST API https://docs.microsoft.com/ja-jp/rest/api/postgresql/ • Azure Arc •

    Azure Arc-enabled data services https://aka.ms/PostgreSQLAzureArc • Azure Arc 対応データサービスとは https://docs.microsoft.com/ja-jp/azure/azure-arc/data/overview • ハイブリッドとマルチクラウドのソリューション https://azure.microsoft.com/ja-jp/solutions/hybrid-cloud-app/
  60. リファレンス (Single Server) • 概要 https://docs.microsoft.com/ja-jp/azure/postgresql/overview-single-server • サポートされるバージョン https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-supported-versions •

    メジャーバージョンアップグレードの方法 https://docs.microsoft.com/ja-jp/azure/postgresql/how-to-upgrade-using-dump-and-restore • 一時的な接続エラーへの対処 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-connectivity • 拡張機能 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-extensions • サーバーについて https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-servers • セキュリティ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-security • 接続のアーキテクチャ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-connectivity-architecture • ファイアウォール規則 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-firewall-rules • 仮想ネットワーク規則 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-data-access-and-security-vnet • プライベートリンク https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-data-access-and-security-private-link • 計画メンテナンス https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-planned-maintenance-notification • ビジネス継続性 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-business-continuity • 高可用性 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-high-availability • バックアップと復元 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-backup • 長期保有のためのバックアップ https://docs.microsoft.com/ja-jp/azure/backup/backup-azure-database-postgresql • 監視とチューニング https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-monitoring • ログ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-server-logs • 監査ログ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-audit
  61. リファレンス (Single Server, Contd.) • クエリストアによるパフォーマンスの監視 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-query-performance-insight • パフォーマンスに関する推奨事項 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-performance-recommendations

    • 読み取りレプリカ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-read-replicas • Azure Portal から読み取りレプリカを管理する https://docs.microsoft.com/ja-jp/azure/postgresql/howto-read-replicas-portal • Azure Cli, REST API から読み取りレプリカを管理する https://docs.microsoft.com/ja-jp/azure/postgresql/howto-read-replicas-cli • 論理デコード https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-logical • 論理デコードの使い方 https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/change-data-capture-in-postgres-how- to-use-logical-decoding-and/ba-p/1396421 • クイックスタート https://docs.microsoft.com/ja-jp/azure/postgresql/quickstart-create-server-database-portal • チュートリアル https://docs.microsoft.com/ja-jp/azure/postgresql/tutorial-design-database-using-azure-portal • 制限 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-limits
  62. リファレンス (Flexible Server (Preview)) • 概要 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/overview • サポートされるバージョン https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-supported-versions

    • メジャーバージョンアップグレードの方法 https://docs.microsoft.com/ja-jp/azure/postgresql/how-to-upgrade-using-dump-and-restore • 予定メンテナンス https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-maintenance • PgBouncer https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-pgbouncer • 拡張機能 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-extensions • サーバーについて https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-servers • コンピューティングとストレージのオプション https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-compute- storage • 制限 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-limits • ストレージ https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-compute-storage#storage • ネットワーク https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-networking • ビジネス継続性 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-business-continuity • バックアップと復元 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-backup-restore • 高可用性 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-high-availability • 監視 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-monitoring • ログ https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-logging • 監査ログ https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-audit • クエリストアによるパフォーマンスの監視 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-query-store
  63. リファレンス (Flexible Server (Preview), Contd.) • クエリストアの使用シナリオ https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-query-store-scenarios • クエリストアのベストプラクティス

    https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-query-store-best- practices • レプリケーション https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-logical • クイックスタート https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/quickstart-create-server-portal • チュートリアル https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/tutorial-django-aks-database • Azure portal による管理 https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/how-to-manage-server-portal
  64. リファレンス (Hyperscale (Citus)) • サポートされるバージョン https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-versions • 拡張機能 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-extensions •

    メジャーバージョンアップグレードの方法 https://docs.microsoft.com/ja-jp/azure/postgresql/howto-hyperscale-upgrade • 予定メンテナンス https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-maintenance • 最大接続数 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-limits#managed-pgbouncer-preview • 分散データ • ノードとテーブル https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-nodes • アプリケーションの種類の決定 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-app-type • ディストリビューション列の選択 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-choose-distribution-column • テーブル・コロケーション https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-colocation • 列指向テーブルストレージ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-columnar • 構成オプションと価格 • 構成オプション https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-configuration-options • Basic レベル https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-tiers • 予約容量による前払い https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-reserved-pricing • 制限と制約事項 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-limits • セキュリティ • ファイアウォール規則 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-firewall-rules • TLS の構成 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-ssl-connection-security
  65. リファレンス (Hyperscale (Citus), Contd.) • 事業継続性 • バックアップと復元 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-backup •

    高可用性 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-high-availability • 監視とチューニング https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-monitoring • メトリックに基づいたアラートの作成 https://docs.microsoft.com/ja-jp/azure/postgresql/howto-hyperscale-alert-on-metric • 監査ログ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-audit • ログ https://docs.microsoft.com/ja-jp/azure/postgresql/howto-hyperscale-logging • 読み取りレプリカ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-read-replicas • クイックスタート https://docs.microsoft.com/ja-jp/azure/postgresql/quickstart-create-hyperscale-basic-tier • チュートリアル https://docs.microsoft.com/ja-jp/azure/postgresql/tutorial-hyperscale-server-group • 初期サーバーグループサイズの選択 https://docs.microsoft.com/ja-jp/azure/postgresql/howto-hyperscale-scale-initial • 制限と制約事項 https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-hyperscale-limits • SQL API 関数 https://docs.microsoft.com/ja-jp/azure/postgresql/reference-hyperscale-functions • サーバー パラメーター https://docs.microsoft.com/ja-jp/azure/postgresql/reference-hyperscale-parameters • システム テーブルとビュー https://docs.microsoft.com/ja-jp/azure/postgresql/reference-hyperscale-metadata
  66. リファレンス (マイグレーション) • 移行ガイド https://docs.microsoft.com/ja-jp/data-migration/ • ホモジニアス・マイグレーション • 概要 https://azure.microsoft.com/ja-jp/services/database-migration/#overview

    • Single Server への移行 https://docs.microsoft.com/ja-jp/azure/postgresql/howto-migrate-online • Postgres to Azure Database for Postgres Migration Guide https://github.com/microsoft/OrcasNinjaTeam/tree/master/Postgres%20to%20Azure%20Database%20for%20Postgres%20Migration%20Guide • 事例 https://customers.microsoft.com/ja-jp/story/737502-harvestmark-partner-professional-services-azure • Oracle からのマイグレーション • Oracle からの移行 https://docs.microsoft.com/ja-jp/azure/postgresql/howto-migrate-from-oracle • Oracle to Azure Database for PostgreSQL Migration Guide https://github.com/microsoft/OrcasNinjaTeam/blob/master/Oracle%20to%20PostgreSQL%20Migration%20Guide/Oracle%20to%20Azure%20Database%20f or%20PostgreSQL%20Migration%20Guide.pdf
  67. リファレンス (パフォーマンス最適化) • PostgreSQL が提供する情報とツール • Autovacuum https://docs.microsoft.com/ja-jp/azure/postgresql/howto-optimize-autovacuum • pg_stat

    ステートメントと統計収集サブシステム https://docs.microsoft.com/ja-jp/azure/postgresql/howto-optimize-query-stats-collection • Azure Database for PostgreSQL が提供する情報とツール • Query Store • https://docs.microsoft.com/ja-jp/azure/postgresql/howto-optimize-query-stats-collection • https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-query-store-best-practices • https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-query-store-best-practices • Metrics https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-monitoring • Query Performance Insight https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-query-store-best-practices#set-the-optimal-query-capture-mode • Performance Recommendations https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-performance-recommendations • その他 Azure が提供する情報とツール • Azure Activity log https://docs.microsoft.com/ja-jp/azure/azure-monitor/essentials/activity-log • Resource Health https://docs.microsoft.com/ja-jp/azure/service-health/resource-health-overview • Azure Advisor • https://azure.microsoft.com/ja-jp/services/advisor/ • https://docs.microsoft.com/ja-jp/azure/advisor/advisor-get-started • https://docs.microsoft.com/ja-jp/azure/azure-sql/database/database-advisor-implement-performance-recommendations • Log Analytics • https://docs.microsoft.com/ja-jp/azure/azure-monitor/logs/log-analytics-tutorial • https://docs.microsoft.com/en-ca/azure/azure-monitor/essentials/diagnostic-settings
  68. リファレンス (パフォーマンス最適化, Contd.) • ベストプラクティスと制約 • リソースの数と Tier は正しく選ぶ •

    https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-pricing-tiers • https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-compute-storage • エクステンション • https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-extensions • https://www.pgaudit.org/ • https://www.postgresql.org/docs/13/pgrowlocks.html • https://www.postgresql.org/docs/13/pgstattuple.html • https://hypopg.readthedocs.io/_/downloads/en/rel1_stable/pdf/ • https://www.postgresql.org/docs/13/runtime-config-client.html#GUC-SHARED-PRELOAD-LIBRARIES • https://www.postgresql.org/docs/13/pgprewarm.html • サーバーのパラメータ • https://docs.microsoft.com/ja-jp/azure/postgresql/howto-configure-server-parameters-using-cli • https://docs.microsoft.com/ja-jp/azure/postgresql/howto-configure-server-parameters-using-powershell • https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-servers#server-parameters • https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-server-parameters • アプリケーションとデータベース間の通信 • 物理的近さのためのコロケーション、リージョン、そして遅延 • https://azure.microsoft.com/pricing/details/data-transfers • https://docs.microsoft.com/ja-jp/azure/app-service/app-service-web-app-cloning
  69. リファレンス (パフォーマンス最適化, Contd.) • コネクション・プーリングと pgBouncer • https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-aks • https://azure.microsoft.com/ja-jp/blog/performance-best-practices-for-using-azure-database-for-postgresql-connection-pooling/

    • https://www.pgbouncer.org/features.html#sql-feature-map-for-pooling-modes • https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/steps-to-install-and-setup-pgbouncer-connection-pooling-proxy/ba-p/730555 • https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/concepts-pgbouncer • https://docs.microsoft.com/ja-jp/azure/architecture/patterns/sidecar • https://hub.docker.com/_/microsoft-azure-oss-db-tools-pgbouncer-sidecar • ネットワークの高速化 • https://docs.microsoft.com/ja-jp/azure/virtual-network/create-vm-accelerated-networking-powershell • https://docs.microsoft.com/ja-jp/azure/virtual-network/virtual-network-create-vm-accelerated-networking • ExpressRoute • https://azure.microsoft.com/services/expressroute/ • https://docs.microsoft.com/ja-jp/azure/app-service/environment/create-external-ase • https://docs.microsoft.com/ja-jp/azure/app-service/environment/create-ilb-ase • https://docs.microsoft.com/ja-jp/azure/app-service/environment/forced-tunnel-support • データアクセス設計が「次善の策」となっているアプリケーション • https://azure.microsoft.com/ja-jp/overview/what-is-caching/#overview • https://docs.microsoft.com/ja-jp/azure/azure-sql/database/performance-guidance#application-tier-caching
  70. See also (Cloud-native apps) • Transactional apps • IoT と時系列のワークロードを強化する

    https://azure.microsoft.com/ja-jp/blog/power-iot-and-time-series-workloads-with-timescaledb-for-azure-database- for-postgresql/ • 事例 • Finxact banks https://customers.microsoft.com/ja-jp/story/822002-finxact-banks-on-azure-for-core-financial-services • Swiss Re https://customers.microsoft.com/ja-jp/story/1358540087031302788-swiss-re-accelerates-java-app-modernization-using-azure-spring-cloud • Bosch https://customers.microsoft.com/ja-jp/story/765209-bosch-increases-vehicle-safety-using-map-matching-algorithms-and-azure-kubernetes-service • Geospatial-aware apps • 事例 • Helsinki Region Transport Authority https://customers.microsoft.com/ja-jp/story/845146-transit-authority-improves-traffic-monitoring-with-azure-database-for-postgresql-hyperscale • Cloud9 https://customers.microsoft.com/ja-jp/story/794816-cloud9-conquers-esports-using-azure-data-analytics • Real-time apps • インタラクティブ分析アプリケーションの移行 https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/migrating-interactive-analytics- apps-from-redshift-to-postgres/ba-p/1825730
  71. See also (アプリケーション開発) • ホスティング環境の選択 • Azure App Service •

    概要 https://docs.microsoft.com/ja-jp/azure/app-service/overview • プランの概要 https://docs.microsoft.com/ja-jp/azure/app-service/overview-hosting-plans • App Service Environment の概要 https://docs.microsoft.com/ja-jp/azure/app-service/environment/intro • App Service で Django アプリをデプロイする https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/tutorial-django-app-service-postgres?tabs=clone • Azure Spring Cloud • 概要 https://docs.microsoft.com/ja-jp/azure/spring-cloud/overview • Spring Boot https://spring.io/projects/spring-boot • Azure Kubernetes Service • Django アプリを AKS にデプロイする https://docs.microsoft.com/ja-jp/azure/postgresql/flexible-server/tutorial-django-aks-database • Single Server を接続する https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-aks
  72. See also (アプリケーション開発, Contd.) • アプリケーション アーキテクチャの設計 • Azure アーキテクチャ

    センター https://docs.microsoft.com/ja-jp/azure/architecture/ • 財務管理アプリの例 https://docs.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/finance-management-apps-using-azure-database-for- postgresql • インテリジェント アプリの例 https://docs.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/intelligent-apps-using-azure-database-for- postgresql • 小売業と eコマースの例 https://docs.microsoft.com/ja-jp/azure/architecture/solution-ideas/articles/retail-and-ecommerce-using-azure-database-for- postgresql • アプリ開発のベストプラクティス https://docs.microsoft.com/ja-jp/azure/postgresql/application-best-practices • GitHub Actions を使用したデプロイ • Azure 向けの GitHub Actions とは https://docs.microsoft.com/ja-jp/azure/developer/github/github-actions • GitHub Actions を使用して Azure PostgreSQL に接続する https://docs.microsoft.com/ja-jp/azure/postgresql/how-to-deploy-github-action • デモ https://github.com/mksuni/pg-github-action-demo/
  73. 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoft は絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、提示された情報の信憑性については保証できま せん。 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、お よび目的であっても禁じられています。これらは著作権保護された権利を制限するものではありません。

    Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へ のライセンスを与えるものではありません。 © 2021 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.