Deep-dive on the Next Gen Platform. Join the Webinar!

Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku のアーキテクチャ
    • Dyno (アプリコンテナ)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Troubleshooting Node.js Apps
      • Node.js Behavior in Heroku
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres の特別なトピック
  • Heroku Postgres での拡張機能、PostGIS、フルテキスト検索辞書

Heroku Postgres での拡張機能、PostGIS、フルテキスト検索辞書

日本語 — Switch to English

最終更新日 2024年05月31日(金)

Table of Contents

  • 拡張機能のインストール
  • 拡張機能のアップグレード
  • 拡張機能の削除
  • 拡張機能の表示
  • データ型
  • 外部データラッパー
  • 関数
  • 統計
  • インデックスの種類
  • フルテキスト検索辞書
  • dblink
  • pg_stat_​statements
  • PostGIS
  • pgvector
  • サポートされなくなった拡張機能

拡張機能では、機能の関連する部分 (データ型や関数など) をまとめてバンドルし、1 つのコマンドでデータベースにインストールすることができます。Heroku Postgres は、多くの Postgres 拡張機能のほか、拡張機能システムの一部としてバンドルされていないフルテキスト検索などの機能をサポートしています。PostGIS 空間データベース拡張機能も使用できます。この記事の次の拡張機能のみがサポートされており、Heroku Postgres にインストールできます。

サポートされている拡張機能の一覧については、データベースのクエリを実行してください。

$ echo 'show extwlist.extensions' | heroku pg:psql
     extwlist.extensions
-----------------------------
...bloom,btree_gin,btree_gist,cube,dblink,dict_int...

拡張機能のインストール

いずれかのサポートされている拡張機能を作成するには、heroku pg:psql​ でセッションを開き、適切な CREATE EXTENSION​ コマンドを実行します。

$ heroku pg:psql DATABASE_URL -a example-app
--> Connecting to postgresql-octagonal-12345
psql (13.2, server 11.12 (Ubuntu 11.12-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

example-app::DATABASE=> CREATE EXTENSION hstore;
CREATE EXTENSION
example-app::DATABASE=>

すべてのプランのすべての Heroku Postgres データベースで、拡張機能はデフォルトで public​ スキーマにインストールされます。特定のスキーマに拡張機能をインストールするには、CREATE EXTENSION​ コマンドを WITH SCHEMA​ と共に実行します。

$ heroku pg:psql DATABASE_URL -a example-app
--> Connecting to postgresql-octagonal-12345
psql (13.2, server 11.12 (Ubuntu 11.12-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

example-app::DATABASE=> CREATE EXTENSION hstore WITH SCHEMA schema_name;
CREATE EXTENSION
example-app::DATABASE=>

heroku_ext​ スキーマに拡張機能をインストールする必要はなくなりました​。

拡張機能のアップグレード

Heroku Postgres アドオンで拡張機能のアップグレードが有効になっているかどうかを確認するには、heroku pg:info​ コマンドを実行して、Upgradable Extensions​ 行を確認します。この値が No​ に設定されている場合、次の定期的なメンテナンス後に拡張機能がアップグレード可能になります。

=== DATABASE_URL
Plan:                  Standard 0
Status:                Available
Data Size:             2.15 GB
Tables:                4
PG Version:            15.2
Connections:           32/120
Connection Pooling:    Available
Credentials:           1
Fork/Follow:           Available
Rollback:              earliest from 2023-04-21 17:14 UTC
Created:               2023-04-17 19:06
Region:                us
Data Encryption:       In Use
Continuous Protection: On
Enhanced Certificates: Off
Upgradable Extensions: Yes
Maintenance:           not required
Maintenance window:    Mondays 17:30 to 21:30 UTC
Add-on:                postgresql-trapezoidal-57207

拡張機能をアップグレードするには、heroku pg:psql​ セッションで、アップグレードする拡張機能に対して、ALTER EXTENSION​ コマンドを実行します。

$ heroku pg:psql DATABASE_URL -a example-app
--> Connecting to postgresql-octagonal-12345
psql (13.2, server 11.12 (Ubuntu 11.12-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

example-app::DATABASE=> CREATE EXTENSION btree_gin VERSION '1.0';
CREATE EXTENSION
example-app::DATABASE=> ALTER EXTENSION btree_gin UPDATE to '1.1';
ALTER EXTENSION
example-app::DATABASE=>

拡張機能の削除

既存の拡張機能をデータベースから削除するには、heroku pg:psql​ でセッションを開き、適切な DROP EXTENSION​ コマンドを実行します。

$ heroku pg:psql DATABASE_URL -a example-app
--> Connecting to postgresql-octagonal-12345
psql (13.2, server 11.12 (Ubuntu 11.12-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

example-app::DATABASE=> DROP EXTENSION hstore;
DROP EXTENSION
example-app::DATABASE=>

拡張機能の表示

拡張機能がインストールされているスキーマを確認するには、heroku pg:psql​ でセッションを開き、\dx​ コマンドを実行します。

intense-mesa-15917::DATABASE=> \dx
                                           List of installed extensions
       Name        | Version |   Schema   |                              Description
--------------------+---------+------------+------------------------------------------------------------------------
pg_stat_statements | 1.10    | public     | track planning and execution statistics of all SQL statements executed
plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 rows)

データ型

名前 説明 コマンド
Bloom​ 空間効率の高いブルームフィルターのインデックスを提供します create extension bloom
大文字と小文字を区別しないテキスト​ 大文字と小文字が区別されないテキストデータ型。citext に保存された文字列は大文字小文字の情報を保持しますが、クエリで使用されるときは大文字と小文字が区別されません。 create extension citext
Cube​ 多次元の立方体 create extension cube
HStore​ Postgres 内のキー値ストア create extension hstore
Label Tree​ 関数が関連付けられているツリー状の階層 create extension ltree
Large Objects​ 特殊なラージオブジェクト構造に保存されているユーザーデータへのストリーム形式のアクセスを提供します create extension lo
Product Numbering​ UPC​、ISBN​、ISSN​ などの製品 ID およびシリアル番号を保存します create extension isn
Seg​ セグメントまたは浮動小数点区間を表すための型を提供します create extension seg

外部データラッパー

外部データラッパーは、Essential 層のデータベース​では使用できません。

名前 説明 コマンド
postgres_fdw​ Postgres データベースが外部サーバーとして別の Postgres データベースにアクセスできるようにします create extension postgres_fdw

関数

pg_partman と pg_​prewarm は、Essential 層のデータベース​では使用できません。

名前 説明 コマンド
Address Standardizer​ 一連の定義されたルールに関するアドレスを正規化する 1 行のアドレスパーサー。US アドレスの一連のルールはすでに含まれています create extension address_standardizer_data_us​ create extension address_standardizer
Autoinc​ シーケンスの次の値を整数フィールドに保存します create extension autoinc
Earth Distance​ 地球上の地点間の距離を計算するための関数 create extension earthdistance
Fuzzy Match​ 文字列間の類似性を判定するための別の方法。UTF-8 のサポートは限定されています create extension fuzzystrmatch
Insert Username​ 現在のユーザーの名前をテキストフィールドに挿入します create extension insert_username
Intarray​ 整数の null のない配列のソート、操作、およびそのインデックスの作成を行います create extension intarray
ModDateTime​ 現在のタイムスタンプをタイムスタンプフィールドに挿入します create extension moddatetime
PGCrypto​ 暗号化関数によってデータベース内の暗号化が可能になります create extension pgcrypto
pg_partman​ 時間ベースとシリアルベースの両方のテーブルパーティションセットを作成して管理します。サブパーティション分割もサポートされています create extension pg_partman
pg_prewarm​ 新しく起動されるデータベースや休止データベースのパフォーマンスを正規化するために、オペレーティングシステムまたはデータベースバッファキャッシュにデータを事前ロードします create extension pg_prewarm
sslinfo​ 接続しているクライアントに関する SSL 情報のクエリを実行するための関数を提供します create extension sslinfo
Table Functions & Pivot Tables​ 完全なテーブルを返す関数。スプレッドシートのピボットテーブルと同様の方法でクエリ結果を操作する機能を含みます create extension tablefunc
tcn​ リスナーにテーブルへの変更を通知するためのトリガー関数を提供します create extension tcn
Timetravel​ 履歴データのクエリを実行するための関数を追加します create extension timetravel
Trigram​ トライグラムの一致​に基づいて、英数字の文字列の類似性 (または、それがないこと) を判定します。検索などの自然言語処理の問題に有効です create extension pg_trgm
tsm_system_​rows​ システム行を使用したテーブルサンプリングを提供します create extension tsm_system_rows
UUID Generation​ データベース内の v1、v3、v4、v5 の UUID を生成します。既存の UUID データ型​と適切に連携します create extension uuid-ossp

統計

名前 説明 コマンド
pgrowlocks​ テーブルの行ロックの情報を表示します create extension pgrowlocks

インデックスの種類

名前 説明 コマンド
btree-gist​ GiST​ インデックス演算子。これは一般に、B-tree では使用できない複数列インデックスや排他制約​を除き、標準の B-tree インデックスより劣っています。 create extension btree_gist
btree-gin​ GIN​ インデックス演算子。これは一般に、新しい GIN 演算子クラスの開発、または GIN インデックス可能列と btree インデックス可能列の両方に対する複数列 GIN インデックスの作成を除き、標準の B-tree インデックスより劣っています。 create extension btree_gin

フルテキスト検索辞書

名前 説明 コマンド
dict-int​ 整数のインデックスの作成方法を制御する、フルテキスト検索のためのフルテキスト検索辞書 create extension dict_int
unaccent​ 文字からアクセントを削除するフィルタリングテキスト辞書 create extension unaccent

さらに、次の辞書はデフォルトでインストールされるため、拡張機能システムを使用して作成する必要はありません。

$ heroku pg:psql
=> \dFd
                             List of text search dictionaries
   Schema   |      Name       |                        Description
------------+-----------------+-------------------------------
 pg_catalog | danish_stem     | snowball stemmer for danish language
 pg_catalog | dutch_stem      | snowball stemmer for dutch language
 pg_catalog | english_stem    | snowball stemmer for english language
 pg_catalog | finnish_stem    | snowball stemmer for finnish language
 pg_catalog | french_stem     | snowball stemmer for french language
 pg_catalog | german_stem     | snowball stemmer for german language
 pg_catalog | hungarian_stem  | snowball stemmer for hungarian language
 pg_catalog | italian_stem    | snowball stemmer for italian language
 pg_catalog | norwegian_stem  | snowball stemmer for norwegian language
 pg_catalog | portuguese_stem | snowball stemmer for portuguese language
 pg_catalog | romanian_stem   | snowball stemmer for romanian language
 pg_catalog | russian_stem    | snowball stemmer for russian language
 pg_catalog | simple          | simple dictionary: just lower case and check for stopword
 pg_catalog | spanish_stem    | snowball stemmer for spanish language
 pg_catalog | swedish_stem    | snowball stemmer for swedish language
 pg_catalog | turkish_stem    | snowball stemmer for turkish language

dblink

dblink は、Essential 層のデータベース​では使用できません

dblink​: Postgres データベース間のクエリのサポートを追加します。dblink​を使用すると、個別の Heroku Postgres データベース間で、または外部の Postgres データベースとの間でクエリを実行できます。

pg_stat_​statements

pg_stat_​statements​ モジュールは、サーバーによって実行されているすべての SQL ステートメントの実行統計を追跡するための手段を提供します。

使用法

pg_stat_statements​ を使用すると、パフォーマンスの問題を追跡できます。これにより、実行された各クエリとそれに関連するコストを表示する pg_stat_statements​ という名前のビューが表示されます。これには、クエリが実行された回数、全体としてかかった合計のシステム実行時間、全体としてヒットした共有メモリ内のブロックの合計数が含まれます。

pg_stat_statements​ では、それまでの実行時間の長さには関係なく、取り消されたクエリは取得されません。つまり、statement_timeout​ によって取り消された長時間実行クエリは pg_stat_statements​ ビューに反映されません。取り消された高コストのクエリを効果的に診断するには、Postgres ログ​を使用する必要があります。

PostGIS

PostGIS​ モジュールは、PostgreSQL オブジェクトリレーショナルデータベースに地理オブジェクトのサポートを追加します。実際上、PostGIS は PostgreSQL サーバーを “空間的に有効にする” ため、地理情報システム (GIS) のバックエンド空間データベースとして使用できます。

要件

PostGIS は、すべての Heroku Postgres データベースプラン​で使用できます。

Heroku Postgres でサポートされている PostGIS のバージョンは次のとおりです。

  • PostGIS v2.5、PostgreSQL 13 以前で実行されているデータベースの場合
  • PostGIS v3.3、PostgreSQL 14 以降で実行されているデータベースの場合

プロビジョニング

データベースが上記の要件を満たしている限り、他の拡張機能と同様に PostGIS を追加できます。

PostGIS を既存の Heroku Postgres データベースにインストールするには、psql​ セッションを開き、CREATE EXTENSION postgis;​ を実行します。

$ heroku pg:psql DATABASE_URL -a example-app
--> Connecting to postgresql-octagonal-12345
psql (13.2, server 11.12 (Ubuntu 11.12-1.pgdg16.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

example-app::DATABASE=> CREATE EXTENSION postgis;
CREATE EXTENSION

データベースに PostGIS がインストールされているかどうかを確認するには、psql​ から次のクエリを実行します。

=> SELECT postgis_version();
            postgis_version
---------------------------------------
 2.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 row)

pgvector

Heroku Postgres の pgvector​ 拡張機能により、ベクトルデータタイプのサポートが追加されます。「Heroku Postgres での pgvector​」を参照してください。

サポートされなくなった拡張機能

Heroku はプラットフォームで廃止された拡張機能を削除します。

  • PLV8 - この拡張機能の Heroku ベータ期間中、Debian/Ubuntu での PG11+ に対する PLV8 パッケージのメンテナンスは廃止されました。詳細は、ここ​を参照してください。これが変更された場合、PLV8 を再び設定します。
  • chkpass​ は Postgres 11 以降ではサポートされていません。
  • xml2​ は廃止されました​。

関連カテゴリー

  • Postgres の特別なトピック
'PostGIS: Rails での地理空間データの使用' 'PostGIS: Rails での地理空間データの使用'

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices