PostgreSQL からのデータを使用する

AppSheet は、Google Cloud SQL、アマゾン ウェブ サービス(AWS)、またはその他の PostgreSQL をサポートするクラウド ホスティング プロバイダでホストされている PostgreSQL データベースからアプリを構築できます。

PostgreSQL データベースからアプリを構築するには、PostgreSQL データソースを追加します。

  1. [My Account] > [Sources] タブに移動します。
  2. [+ New Data Source] をクリックします。
  3. データソースの名前を入力し、[Cloud Database] または [On-premises Database] をクリックします。
    [Add database connection information] ダイアログが表示されます。
  4. データベースの接続情報を構成します。 
    • [Type]: [Postgres] を選択します。
    • [Server]: Postgres データベース サーバーのホスト名または IP アドレスを入力します。
    • [Database]: データベース名を入力します。
    • [Username]: データベース ユーザーのユーザー名を入力します。
    • [Password]: データベース ユーザーのパスワードを入力します。
    • [SSL]: 接続に必要な SSL モードを選択します。詳細については、SSL を使用するをご覧ください。
  5. [Test] をクリックして接続の詳細をテストします。
  6. テストが成功したら、[Authorize Access] をクリックして、AppSheet アカウントにデータソースを保存します。

AppSheet が PostgreSQL データにアクセスするには、PostgreSQL インスタンスがクラウド(Google Cloud SQLd、Amazon RDS、またはその他のクラウド ホスティング プロバイダ)でホストされている必要があります。

AppSheet サーバーがデータにアクセスするには、ネットワークと PostgreSQL の両方が、AppSheet サーバーからデータベースへの受信接続を受け入れる必要があります。詳しくは、IP アドレスとファイアウォール情報を管理するをご覧ください。

PostgreSQL データソースがアカウントに追加されると、PostgreSQL テーブルまたはビューを任意のアプリに追加できます。アプリで新しいテーブルを追加すると、具体的なデータソースと、そのデータ・ソースからのテーブルまたはビューを選択できます。

アプリに追加されると、AppSheet はすべてのデータソースを同様に扱います。実際、PostgreSQL データソースからのデータと他のソースからのデータを同じアプリ内で組み合わせることは一般的であり、自然なことです。

PostgreSQL データベースにアプリのクローンを作成する

PostgreSQL データベースに既存のアプリのクローンを作成すると、AppSheet は、PostgreSQL のデフォルトのスキーマ(「public」スキーマ)にクローン作成済みアプリのテーブルを作成します。PostgreSQL のユーザー作成のスキーマへのアプリのクローン作成は、サポートされていません。

Postgres の UNIQUEID (UUID) キーの使用について

UNIQUEID() を Postgres テーブルのキーとして使用する場合、次の情報が重要です。

Appsheet の UNIQUEID("UUID") 式は、531B2ABA-C263-4433-A61E-AD14FCC1031C の形式で大文字の UUID Key-Value を生成します。Postgres は、新しく追加されたレコードの UUID Key-Value を受け入れますが、Key-Value を自動的に小文字に変換します。

Postgres Key-Value が自動的に変換されると、クライアントとワークフローで、新しく追加されたレコードの更新が正常に機能しなくなる場合があります。追加の直後に行われる更新は、大文字のキーを使用して新しく追加されたレコードを見つけようとします。更新内の大文字のキーは新しく追加されたレコード内の小文字のキーと一致しなくなるため、これらの更新は失敗します。更新は失敗し、更新の Audit History には UpdateDeletedRecord が含まれます。

UpdateDeletedRecord は、サーバーがその Key-Value に基づいて更新されたレコードを見つけられなかったことを示します。サーバーは、更新されたレコードが削除されたために見つからなかったと想定します。これは次のように正当に発生します。
1. ユーザー 1 がレコードを追加する
2. ユーザー 2 が新しく追加されたレコードを読み取る
3. ユーザー 1(または他のユーザー)が新しく追加されたレコードを削除する
4. ユーザー 2 が新しく追加されたレコードを更新しようとする

この問題は、Appsheet テーブルの最初の Key-Value を次に指定することで回避できます。
LOWER(UNIQUEID("UUID"))

SSL を使用する

AppSheet は、セキュア ソケット レイヤ(SSL)接続を使用して PostgreSQL インスタンスに接続することもできます。PostgreSQL データソースを作成または編集する際、SSL を必須とした場合、データベースが SSL をサポートし、有効なサーバー証明書がある場合にのみ、接続が確立されます。

PostgreSQL インスタンスは、VeriSign や GeoTrust などの広く認知されている認証局によって生成されたサーバー証明書を使用することを強くおすすめします。これにより、証明書が関連するすべての暗号化基準とフォーマット基準を確実に満たすことになります。Google Cloud や Amazon RDS など、一部のクラウド ストレージ プロバイダも、ホストしている PostgreSQL インスタンス用にサーバー証明書を生成しています。現在、TinyCA によって生成されたサーバー証明書はサポートされていません。

また、SHA-2 ハッシュ アルゴリズムを使ってサーバー証明書に署名することもおすすめします。これは、SHA-1 アルゴリズムはもはや完全に安全とはみなされず、Microsoft、Amazon、Google を含む多くのクラウド プロバイダが SHA-2 や SHA-3 への移行を進めているからです。

Amazon RDS で PostgreSQL を使用する

PostgreSQL インスタンスが Amazon RDS でホストされている場合、[Publicly Accessible] 設定を [Yes] に設定する必要があります。サーバーが AppSheet からのトラフィックを確実に受け入れるようにするには、Amazon RDS のセキュリティ グループ設定に移動し、EC2 Management Console に入り、[Edit inbound rules] を選択して、AppSheet の IP アドレスからのすべてのトラフィックを受け入れるルールを作成します。これについては、IP アドレスとファイアウォール情報を管理するをご覧ください。

Ec2 Management Console で [Edit inbound rules] を選択する

[Edit inbound rules] 画面

アプリで作成したファイルを保存する

データベース サーバーは、ファイル システムを持たないという点で、他のクラウド ストレージ プロバイダと異なります。これにより、ファイル(画像やドキュメントなど)を保存する際の AppSheet の動作が変更されます。アプリが写真をキャプチャする必要がある場合、それらは通常、クラウド ストレージのデータソースの隣のフォルダに保存されます。PostgreSQL テーブルの場合、画像ファイルとドキュメント ファイルは、アプリ作成者のプライマリ AppSheet アカウントに関連付けられたメインのクラウド ファイル システム(通常は Google ドライブ/Dropbox/Office 365/Box)に保存されます。ファイルは、アカウントのデフォルトのフォルダパスのサブフォルダ(通常、/appsheet/data)に保存されます。アカウント ページの [Settings] タブで、デフォルトのフォルダパスの表示や変更ができます。

データの種類

PostgreSQL タイプ

AppSheet タイプ

メモ

bigint
bigserialinteger
smallint
smallserial
serial

Number

 

double precision
numeric
real

Decimal

 

money

Price

 

boolean

Yes/No

 

date

Date

 

timestamp
timestamp with time zone

DateTime

AppSheet の DateTime は time zone aware ではなく、タイムゾーンはキャプチャされません。

interval

Duration

 

character
character varying

Text
LongText

Text は、列が 100 文字以下の場合に使用されます。

json
jsonb
text
xml

LongText

 

他のタイプは現在サポートされていませんが、AppSheet は Text にマッピングを試みます。

Array 型の列(例: integer[]text[])は現在サポートされていないため、スキップされます。

この情報は役に立ちましたか?

改善できる点がありましたらお聞かせください。
true
検索
検索をクリア
検索を終了
Google アプリ
メインメニュー
5507763729809906224
true
ヘルプセンターを検索
false
true
true
true
false
false
false
false