注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

公開済み関数を管理する

公開後は、すべての種類の関数を Ontology Manager で閲覧および管理できます。

関数を検索する

関数を検索するには、Ontology Manager に移動し、関数タブを選択します。 関数名、説明、API名、RID など、関数のほとんどのメタデータで関数を検索できます。

Ontology Manager で関数を検索する

関数の概要ページ

Ontology Manager で関数を選択すると、その入力、出力、使用履歴、および成功件数、失敗件数、P95 実行時間を含む関数メトリクスを表示できます。

Ontology Manager で関数の概要を表示する

関数の設定ページ

一部の種類の関数では、タイムアウトやメモリー上限などのリソースを設定できます。 関数が設定オプションに対応している場合は、設定タブで表示および編集できます。 このタブが表示されない場合、その関数は設定オプションに対応していません。

設定のオーバーライドは、関数のバージョンごとに適用されます。関数を公開するアプリケーションによっては、新しいバージョンにデフォルトの設定が適用され、設定のオーバーライドを再適用する必要がある場合があります。

たとえば、次の画像のように TypeScript 関数のタイムアウトを設定できます。

Ontology Manager で関数の実行時設定を管理する

設定の継承

関数では、新しいバージョンを公開する際に設定のオーバーライドを継承する機能が標準で用意されています。設定は、セマンティックバージョニングの仕様に従って、以前の安定版から継承されます。安定版ではないバージョンを公開する場合、設定は安定版リリースかどうかにかかわらず、以前のバージョンから継承されます。

設定を継承するには、リポジトリに更新されたテンプレート設定が含まれている必要があります。非表示の templateConfiguration.json ファイルで、リポジトリのバージョンを確認できます。

  • TypeScript v1 関数のリポジトリでは、parentTemplateVersion >= 3.512.0 である必要があります
  • Python 関数のリポジトリでは、parentTemplateVersion >= 0.423.0 である必要があります

一貫したスナップショット

関数ベースのアクションは、1回の実行におけるすべての読み取りリクエストに対して、1つのオントロジースナップショットを自動的に使用します。

一貫したスナップショットには、次の特性があります。

  • データの一貫性: スナップショットを使用しない場合、リクエストの間に基になるデータが変更されると、関数内で順次実行されるオントロジークエリが異なるバージョンのデータを返す可能性があります。スナップショットを使用すると、データベーストランザクションのスナップショット分離と同様に、関数はオントロジーの一貫したビューに対して動作します。
  • パフォーマンスの向上: すべてのオントロジーリクエストで1つのスナップショットを再利用すると、オントロジーの読み取りパフォーマンスが大幅に向上します。1つの関数ベースのアクションと、その中のすべてのクエリがこのメリットを受けます。

スナップショットの設定

高度なユースケースでスナップショットを明示的に管理する必要がある場合は、関数の設定ページで、次のオプションを使用してスナップショットの動作を設定できます。

  • デフォルト(推奨): スナップショット関連のエラーが発生しない限り、この選択肢を選択したままにしてください。
  • スナップショットを無効化: 実行中のクエリごとに最新のデータが必要な場合、または実行時間の長いワークロードが原因でスナップショットエラーが発生している場合に使用します。
  • スナップショットを有効化: すべての読み取りで同じ時点の一貫したビューが必要で、読み取りパフォーマンスを向上させたい場合に、関数が実行中にデータが更新されなくても問題なければ使用します。ほとんどのユースケースでは推奨されません。

デフォルトでは、ソースを使用する関数はスナップショットを使用せずにライブデータに対して実行されます。関数は書き込みや外部システムの呼び出しを実行できるため、スナップショットの強制は推奨されません。

適用される制限

関数の実行時にリソースを過剰に消費しないよう、いくつかの制限が設けられています。

時間制限

関数の実行時間は、デフォルトで 60秒に制限されています。これらの制限は、関数の設定ページで変更できます。

ライブプレビューで実行する場合、関数の設定ページで変更していても、関数は最大 280秒実行できます。

Automate を通じて実行される関数は、標準の実行制限を超え、最大 4時間非同期で実行されます。

TypeScript v1 関数には、さらに CPU 時間の 30秒という制限があり、これは設定できません。関数がこのしきい値を超える場合、非効率なデータ読み込みロジックが原因であることが多くあります。CPU タイムアウトを回避する方法については、パフォーマンスを最適化するのセクションを参照してください。

メモリー上限

メモリー上限は、TypeScript v1、TypeScript v2、Python 関数で異なります。

TypeScript v1

関数実行時のメモリー使用量は 128メガバイトに制限されています。この上限に達することはほとんどなく、多くの場合、メモリー上限に達する前に、時間制限やオブジェクト読み込みの制限に達します。

デプロイ済み Python 関数

デプロイ済み Python 関数のメモリー使用量は、デフォルトで 2ギガバイトです。現在、デプロイ済み Python 関数では、関数の設定ページでメモリー使用量を設定できません。

サーバーレス Python および TypeScript v2 関数

サーバーレス関数のメモリー使用量は、デフォルトで 1024メビバイトです。関数の設定ページで、512メビバイトから 5120メビバイトまで設定できます。

マルチスレッド

TypeScript v1 では、関数は単一のスレッドで実行されるため、一度に実行できる計算は1つだけです。ただし、オブジェクトセットやリンクの読み込みは並列化できます。詳細は、パフォーマンスを最適化するを参照してください。

TypeScript v2 および Python 関数では、組み込みの Node.js worker_threads ライブラリと Python threading ライブラリを使用して、マルチスレッドを利用できます。

TypeScript v1 のオブジェクトセットの制限

オブジェクトセットを使用する際、次の場合に .all() または .allAsync() を呼び出すとエラーがスローされます。

  • オブジェクトセットから一度に 100,000個のオブジェクトを超えて読み込む場合。一般に、数万個のオブジェクトを読み込むだけでも、時間制限やメモリー上限に達します。この制限に達するユースケースでは、集計を使用して概要データを取得するか、並べ替えと件数制限を使用してオブジェクトのサブセットを取得することを検討してください。
  • 一度に 3回の関連検索 を超えて使用する場合。

一部の集計操作およびバケット化操作には制限があります。詳細は、集計のセクションを参照してください。