1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OutSystems]Heroku Postgresを使って外部DB機能を無料で試してみる

Last updated at Posted at 2022-07-23

Herokuのフリープランは廃止されるようです。よってこの記事で紹介した方法は無料ではできなくなります。以下のFAQ参照。
https://help.heroku.com/RSBRUH58/removal-of-heroku-free-product-plans-faq

OutSystemsにおいて、外部DBとは、プラットフォームとは別に(外部に)あるDataBaseに接続し、そのデータをEntityを通して操作するもの。
個人的な経験的には、多くのユーザー企業で使われている。

ただ、Personal Environmentでこの機能の動作確認をするには、インターネット上でRDBをホストしてくれるサービスが必要で、だいたい有料。
最近、Heroku Postgresを使うと、PostgreSQLのデータベースを無料で用意できることに気づいたので、データベース作成からExtension作成・利用までの手順をまとめてみる。

環境

Personal Environment(Version 11.16.0 (Build 35766))
Service Studio(Version 11.53.7)
Integration Studio(Version 11.11.5)
pgAdmin4(Version 6.11)

Heroku Postgresのデータベースを用意する

How to set up a free PostgreSQL database on Herokuにスクリーンショット付きで手順が載っている。

  1. Herokuのアカウントを作る (Sign Upのリンクから)
  2. ログイン
  3. 「Create new app」ボタンでappを作る
  4. 作ったappを開き、Resourcesタブ > Add-ons欄で「Heroku Postgres」で検索して、Freeと書かれているプランを選択してProvision

Freeのオプションで作ってみたところクレジットカードは不要だった。
ここまででもうPostgreSQLのデータベースはできている。

データベースにテスト用Tableを作成する

データベースを操作するのにHerokuのCLIを使う方法と、PostgreSQLを操作するツールを使う方法があるらしい。
後者の方が簡単そうだったので、pgAdmin4をダウンロード、インストール。
私はWindowsを使っているので、https://www.pgadmin.org/download/pgadmin-4-windows/
からダウンロードした。

pgAdmin4でデータベースに接続する

pgAdmin4を起動すると、最初にMaster Passwordを設定するダイアログが出てくる。
これをCancelして後続の作業をしていたら、「crypto key missing」というエラーが出て接続できない問題が発生したので、恐らく設定しておいたほうが良い。

接続先情報を指定するため、DashboardにあるAdd New Serverをクリック。
image.png

Register - Serverダイアログ(正しい設定かどうかまでは分からないが、この設定で動作確認はできた)

  • Generalタブ > Nameプロパティ:接続につける適当な名前(ここではheroku_testとした)
  • Connectionタブ > (Heroku PostgresのDatabaseページ > Settingsタブ > Database Credentialsセクションからコピー)
    • Host name/address:Database CredentialsセクションのHost
    • Port:Database CredentialsセクションのPort
    • Maintenance database:Database CredentialsセクションのDatabase
    • Username:Database CredentialsセクションのUser
    • Password:Database CredentialsセクションのPassword
  • SSLタブ > SSL mode:Prefer

最後にSaveボタンをクリックして保存。

Heroku PostgresのDatabaseページ > Settingsタブ > Database Credentialsセクションの項目は以下の色を付けた位置
image.png

テーブルを作る

画面左のサイドバーのServers、先程定義した接続情報を展開すると、該当位置にあるDatabaseの一覧が表示される。
自分の環境で展開すると7000ほどのDatabaseが表示された。恐らく、共有の環境であるため、他のユーザーのDatabaseが表示されている。
image.png

接続情報で指定したのと同じ名前のDatabase > Schemas > public > Tablesを選択し、右クリック > Create > Table...でテーブルを作成する。
下のスクリーンショットでは、「PgTestTable」という名前で作っている。
image.png

テーブルの定義例。OutSystemsのEntityは主キーがInteger/Long Integerで自動採番させる。この設定にするためには、Id列のData typeをserial、Primary key?のスイッチをオンにするとよさそう。
image.png

Service CenterでDatabase Connectionを定義する

ここからはOutSystemsでの作業になる。

Database Connectionは、外部DBへの接続文字列の定義を行うもの。
各環境(開発、QA、本番など)に作成し、外部DBのExtensionは、どのDatabase Connectionを使うかを設定する。

  1. Service Centerにアクセスする
  2. トップのメニューからAdministration > Database Connectionを選択
  3. New Database Connectionのリンクをクリック
  4. DBMS項目でPostgreSQL / Aurora PostgreSQL、Configuration Mode項目でAdvanced configurationを選択し、各項目を以下の通り入力する(Database Credentialsセクションと書いてある部分は、Heroku PostgresのDatabaseページ > Settingsタブ > Database Credentialsセクションからコピー)
    • Name:任意の名前。後でExtensionに紐づけるときに確認する名前なので、わかりやすいものに
    • Username:Database CredentialsセクションのUser
    • Password:Database CredentialsセクションのPassword
    • Configuration Parameters(<>で囲んだ部分はDatabase Credentialsセクションの同名項目の値で置き換え):database=<Database>;host=<Host>;port=<Port>;SSL Mode=Require;Trust Server Certificate=true
  5. Test Connectionして問題なければCreate。

image.png

テスト用Tableを取り込むExtensionを作成する

  1. Service Studioでテスト用のアプリケーションを開き、モジュールの種別をExtensionにして新しいモジュールを追加する
  2. 追加したExtensionを開く
  3. Integration Studioが開くのでログイン
  4. Entitiesフォルダを右クリック→Connect to External Table or View...を選択
  5. Available Database Connectionsでは↑で作成したDatabase Connectionを選択
  6. Available Databasesでは、Tableを作成したSchema(↑ではpublic)を選択
  7. Select the Tables and Viewsでは、テストに使うTableを左のリストで選択し、Addボタンをクリックして右のリストに移してからNext
  8. Publish(Integration Studioの1-Click Publishアイコンは小さいが、Service Studioと同じ形と色でメニューの位置にある)

image.png

Extensionを経由して検索/更新する画面を作成してテスト

ここまできたら、普通のEntityと同じように検索/更新を行える。
参照追加し、UI FlowにEntityをドラッグ&ドロップして動作確認すると以下のように表示できる。
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?