Skip Navigation
Show nav
Heroku Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
  • ドキュメント
  • 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
View categories

Categories

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

Heroku Data Links

日本語 — Switch to English

この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。

最終更新日 2021年12月28日(火)

Table of Contents

  • 概要
  • データリンクの一覧表示
  • Heroku Postgres の Heroku Postgres へのリンク
  • Heroku Redis の Heroku Postgres へのリンク
  • データリンクの名前付け
  • データリンクの削除

Heroku Data Links を使用すると、Heroku Postgres データベースに異種のデータソース (Heroku Postgres など) を容易に接続できます。 接続すると、データが存在する場所に関係なく、SQL セマンティックスを使用してデータを読み取りおよび書き込みできます。

Heroku Data Links は、Hobby 層のデータベースでは使用できません。

概要

Heroku Data Links は、外部データラッパーと呼ばれる Postgres のネイティブ機能を使用します。外部データラッパーは、外部サーバーの外部テーブルの論理表現をローカルデータベースのテーブルにマップします。

リモートデータベース内のデータに対するクエリを記述すると、Postgres はリモートデータに対して透過的にクエリを実行します。データが存在する場所や、それが Postgres でどのように抽象化されているかの詳細は、2 つのデータストアを接続する Postgres 拡張機能にプッシュダウンされます。

Heroku Data Links は、ローカルデータベース内でのサーバー仕様の作成や、リモートシステムでクエリを実行する対象のテーブルの作成など、外部データラッパーを管理するための困難な部分を処理します。

用語

Heroku Data Links に関するドキュメントでは、厳密な一連の用語を使用してすべての対話を定義します。

  • リモート - Heroku Postgres データベースに接続されているデータストア。
  • ローカル - 接続を受け付けている Heroku Postgres データベース。
  • データリンク - リモートデータベースとローカルデータベースの間の接続の名前。

データリンクの一覧表示

作成されているデータリンクはすべて、Heroku CLI 経由で一覧表示できます。

$ heroku pg:links -a example-app
=== postgresql-animate-91581

*  datalink_test
created_at:     2021-10-11T14:46:22.721+00:00
remote:      HEROKU_POSTGRESQL_BLUE_URL (postgresql-colorful-33594)
remote_name: postgresql_colorful_33594

=== postgresql-colorful-33594
No data sources are linked into this database.

=== postgresql-round-06985
This operation is not supported by hobby-dev databases

このコマンドは、アプリケーションにアタッチされているすべてのデータベースおよび各データベース内に存在するリンクを一覧表示します。上記の例では、DATABASE_URL​ がローカルデータベースであり、そのリソースアドオン名 warming-calmly-5763​ とも呼ばれます。

Remote:​ 行は、DATABASE_URL​ に接続されているデータベースの環境設定とリソース名を参照しています。Remote Name​ は、DATABASE_URL​ データベース内のサーバー参照です。

Heroku Postgres の Heroku Postgres へのリンク

Heroku Postgres を別の Heroku Postgres データベースにリンクすることもできます。

$ heroku pg:links:create HEROKU_POSTGRESQL_BLUE HEROKU_POSTGRESQL_RED --as datalink_test -a example-app

Heroku Postgres インスタンスがリンクされると、そのリンク名に基づいて Postgres に新しいスキーマが追加されます (この場合は、datalink_test​ スキーマ)。リモートデータストア HEROKU_POSTGRESQL_BLUE​ 内に people​ テーブルがある場合は、HEROKU_POSTGRESQL_RED​ データベースから、そのテーブルに次のようにクエリを実行できます。

SELECT * FROM datalink_test.people;

リンク作成の時点で存在するテーブルのみが使用可能になります。リンクを作成した後にテーブルを作成した場合、それらのテーブルはローカルデータベースに表示ません。新しく作成されたテーブルを含める場合は、リンクを削除し、もう一度作成する必要があります。

 

リモートデータストアを削除するか、またはリモートデータストアが別のホストに移動された (Postgres フェイルオーバーなど) 場合、データリンクは更新されません。また、heroku pg:reset​ などのコマンドでローカルデータベースをリセットした場合は、データリンクの情報もリセットされます。これらの場合は、データリンクを作成し直す必要があります。

Heroku Redis の Heroku Postgres へのリンク

2018 年 1 月 30 日の時点で、Heroku Redis から Heroku Postgres への Heroku Data Links の作成は非推奨になりました。

データリンクの名前付け

リンクを作成する場合は、それにわかりやすい名前を付けることをお勧めします。リンク名を指定するには、--as​ フラグを使用します。

$ heroku pg:links:create HEROKU_POSTGRESQL_BLUE HEROKU_POSTGRESQL_RED --as datalink_test -a example-app

名前には小文字の英数字とアンダースコアのみを使用し、最大の長さは 63 文字とする必要があります。

データリンクに名前が付けられた場合、リモートの Postgres テーブルには --as​ フラグと同じ名前を使用してクエリを実行する必要があります。

SELECT id, name, description FROM datalink_test.remote_table_name;

データリンクの削除

CLI 経由でデータリンクを削除するには、次のようにします。

$ heroku pg:links:destroy HEROKU_POSTGRESQL_BLUE datalink_test -a example-app
 !    WARNING: Destructive Action
 !    This command will affect the database: DATABASE
 !    This will delete datalink_test along with the tables and views created within it.
 !    This may have adverse effects for software written against the datalink_test schema.
 !    To proceed, type "example-app" or re-run this command with --confirm example-app
> example-app
Deleting link datalink_test in DATABASE... done

Postgres テーブルに対して、データリンクから来た何らかのビューまたはコードが記述されている場合、データリンクが削除される前にチェックは行われません。

関連カテゴリー

  • Postgres のデータ転送と保持
MySQL から Heroku 上の Postgres への移行 Heroku PGBackups

Information & Support

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

Language Reference

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

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing

Subscribe to our monthly newsletter

Your email address:

  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Heroku Podcasts
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Facebook
  • Instagram
  • Github
  • LinkedIn
  • YouTube
Heroku is acompany

 © Salesforce.com

  • heroku.com
  • Terms of Service
  • Privacy
  • Cookies
  • Cookie Preferences