STH サーバの実行

STH サーバを実行するには、STH コンポーネントがインストールされているディレクトリから次のコマンドを実行してください :

./bin/sth

STH コンポーネントは、ユーザに具体的なニーズに合わせてコンポーネントを構成する 2 つのメカニズムをユーザに提供します :

  • 環境変数 : STH コンポーネントのパッケージ化されたバージョンが使用されている場合は、それらに値を割り当てるか、sth_default.conf ファイルを使用するかを設定できます
  • STH コンポーネントコードのルートにある config.js ファイル : 設定プロパティを含むJSON形式のファイル

環境変数が設定されている場合は、config.js ファイルに定義されているプロパティよりも優先されることに注意することが重要です。

すでに述べた config.js に対応するエントリが存在するスクリプトが受け入れる環境変数は、以下のものです :

  • STH_HOST : STH サーバを起動するホスト。オプション。デフォルト値 : "localhost"
  • STH_PORT : STH サーバが待機するポート。オプション。デフォルト値 : "8666"
  • FILTER_OUT_EMPTY : 空の結果をレスポンスから削除するかどうかを示すフラグ。オプション。デフォルト値 : "true"
  • TEMPORAL_DIR : STH ホームディレクトリから、STH コンポーネントによって生成された一時ファイルが格納されているディレクトリへの相対パス。これらのファイルは、filetype がデータ取得リクエストに含まれているときに返される前に生成されます。デフォルト値 : "temp"
  • DEFAULT_SERVICE : Orion Context Broker の通知で送信されない場合に使用されるサービス。オプション。デフォルト値 : "testservice"
  • DEFAULT_SERVICE_PATH : Orion Context Broker の通知で送信されない場合に使用されるサービスパス。オプション。デフォルト値 : "/testservicepath"。
  • DATA_MODEL : STHコンポーネントは、未処理データと集約されたデータをデータベースに格納するときに、1) 属性ごとに1つのコレクション、2) エンティティごとに1つのコレクション、3)サービスパスごとに1つのコレクションを、サポートします。可能な値は、それぞれ、"collection-per-attribute", "collection-per-entity", "collection-per-service-path" です。デフォルト値 : "entity-per-entity"。
  • DB_USERNAME : データベース接続に使用するユーザ名。オプション。デフォルト値 : ""
  • DB_PASSWORD : データベース接続に使用するパスワード。オプション。デフォルト値 : ""
  • DB_URI : データベース接続に使用するURI。これには 'mongo://' プロトコル部分は含まれていません。下記のいくつかの例を参照してください。オプション。デフォルト値 : "localhost:27017"
  • REPLICA_SET : 接続するレプリカセットの名前(存在する場合)。デフォルト値 : ""
  • DB_PREFIX : データベースの作成のためにサービスに追加されるプレフィックス。詳細は下記を参照してください。オプション。デフォルト値 : "sth_"
  • COLLECTION\PREFIX : データベース内のコレクションに追加されるプレフィックス。詳細は下記を参照してください。オプション。デフォルト値 : "sth_"
  • POOL_SIZE : データベース接続の MongoDB プールサイズのデフォルト値。オプション。デフォルト値 : "5"
  • WRITE_CONCERN : MongoDB データベースにデータを書き込むときに適用する書き込み確認ポリシー。デフォルト値 : "1"
  • SHOULD_STORE : 未処理データおよび/または集約されたデータを永続化するかどうかを示すフラグ。有効な値は、"only-raw", "only-aggregated", "both" です。デフォルト値 : "both"
  • TRUNCATION_EXPIRE_AFTER_SECONDS : 未処理および集約されたデータコレクションのデータは、秒単位で指定された値よりも古い場合は削除されます。未処理データの場合、参照時間は recvTime プロパティに格納された時間ですが、集計されたデータの場合、時間の参照は _id.origin プロパティに格納された時間です。この時間ベースの切捨てポリシーを適用しない場合は、値を0に設定します。デフォルト値 : "0"
  • TRUNCATION_SIZE : 未処理データ・コレクションのサイズがバイトで指定された値より大きくなると、(挿入時間に応じて)最も古い未処理データが削除されます。この切捨てポリシーを適用しない場合は、値を0に設定します。MongoDB が要求するように、サイズの切り捨てが必要な場合は、 "size" 設定パラメータが必須であることを考慮してください。デフォルト値 : "0"。MongoDB は現在、ドキュメントのサイズを増加させる上限のあるコレクション内のドキュメントの更新をサポートしていないため、この構成パラメータは集約されたデータコレクションには影響しないことに注意してください。また、未処理データの場合は、サイズベースの切り捨てポリシーが TTL よりも優先されることにも注意してください。具体的には、サイズ制限が設定されている場合には、現時点で MongoDB は上限付きのコレクションで TTL をサポートしていないため、前回の有効期限は未処理データ・コレクションでは無視されます。デフォルト値 : "0"
  • TRUNCATION_MAX : 未処理データコレクション内のドキュメント数が指定された値を超えた場合、最も古い未処理データ(挿入時間による)が削除されます。この切捨てポリシーを適用しない場合は、値を 0 に設定します。MongoDB は現在、ドキュメントのサイズを増加させる上限のあるコレクション内のドキュメントの更新をサポートしていないため、この構成パラメータは集約されたデータコレクションには影響しないことに注意してください。デフォルト値 : "0"
  • IGNORE_BLANK_SPACES : 1つまたは複数の空白の属性値は無視し、未処理データとしても集計された計算でも処理しないでください。デフォルト値 : "true"
  • NAME_MAPPING : データベース名とコレクション名は、サービス、サービスパス、エンティティID、型、属性名から生成されます。したがって、MongoDB が課す、https://docs.mongodb.com/manual/reference/limits/ に記載されている制限を回避するために、それらの制限を迂回するデータベース名とコレクション名にマップすることができます。 提供されるマッピングメカニズムは、サービス、サービスパス、エンティティID、および型と属性名の間の1対1のマッピングをマッピング構成ファイルを介して構成します。NAME_MAPPING 値は、2つのプロパティを含むオブジェクトです: 1) enabled は、その名前の状態として、マッピングメカニズムを有効または無効にします(デフォルト値 : "true")、2)configFileは、マッピング構成ファイルの相対パスまたは絶対パスです(デフォルト値 : "./name-mapping.json")。"インストールおよび管理マニュアル"の"データベースおよびコレクション名のエンコーディングおよびデコード"セクションに、マッピング構成ファイルの詳細があります
  • NAME_ENCODING : MongoDB が課す制限を避けるために、データベース名とコレクション名は、https://docs.mongodb.com/manual/reference/limits/ に記載されています。エンコーディング基準は次のとおりです : 1) エスケープ文字(x)と各文字の数値 Unicode コードを使用して禁止された文字をエンコードします。たとえば、$ 文字は x0024 としてエンコードされます、2) すでに上記のエンコーディングを使用しているデータベースとコレクション名は、別の x より前にエスケープする必要があります。たとえば、テキスト x002axx002a としてエンコードされます、3) データベース名に含まれる大文字は、1)で説明したメカニズムを使用してエンコードされます、4) system.で始まるコレクション名は、xsystem/ としてエンコードされます。たとえば、system.myDataxsystem.myData としてエンコードされます、5) 名前区切り文字(xffff)はデコードされません。結果の要素または新しい要素に対してマッピングが実行された場合にも、エンコードメカニズムが適用されることに注意することが重要です。 デフォルト値:"true"
  • LOGOPS_LEVEL : 使用するログレベル。可能な値は、"DEBUG", "INFO", "WARN", "ERROR", "FATAL" です。STH コンポーネントはロギングに logops パッケージを使用するため、詳細情報については logops npm パッケージ情報をオンラインでチェックしてください。デフォルト値 : "INFO"
  • LOGOPS_FORMAT : 使用するログ形式。可能な値は、"json"(JSONとしてログが書かれる)、 "dev"(開発用、NODE_ENV 変数が 'development'に設定されているときに使用されます)です。STH コンポーネントはロギングに logops パッケージを使用するので、詳細は logops npm パッケージ情報をオンラインで確認してください。デフォルト値 : "json"
  • PROOF_OF_LIFE_INTERVAL : サーバが正常に稼働していることを知らせる、生存証明メッセージの送信間隔(秒)。デフォルト値 : "60"

たとえば、ポート 7777 でリッスンしている STH サーバを起動し、mymongo.com:27777 でリッスンしている空の MongoDB インスタンスに接続し、空の結果を除外しない場合は、次のようにします :

STH_PORT=7777 DB_URI=mymongo.com:27777 FILTER_OUT_EMPTY=false ./bin/sth

一方、ポート 27771, 27772, 27773をそれぞれリッスンしている IP アドレス1.1.1.1, 1.1.1.2, 1.1.1.3 の 3 台のマシンで構成された MongoDB レプリカセットに接続する場合、次のコマンドを使用します :

DB_URI=1.1.1.1:27771,1.1.1.2:27772,1.1.1.3:27773 ./bin/sth

STH コンポーネントは、サービスごとに新しいデータベースを作成します。これらのデータベースの名前は、アンダースコア(_)を区切り記号として使用して、DB_PREFIX 環境変数とサービス名を連結したものになります。

すでに述べたように、これらの設定パラメータはすべて内容が自明である config.js ファイルを使用して調整することもできます。

MongoDB では、名前空間(データベース名とコレクション名の連結)に 120 バイトの制限があることに注意することが重要です。これに関連して、STH は次のメカニズムを使用してコレクション名を生成します :

  • コレクション名は、COLLECTION_PREFIX 構成パラメータ、サービス・パス、エンティティID、エンティティ・タイプ、および集約されたデータを格納するコレクションのサフィックス ".aggr" の連結として生成されます。コレクション名と DB_PREFIX とデータベース名(またはサービス)の長さは、UTF-8形式を使用して 120 バイトを超えることはできません。そうでないと、MongoDB はコレクションを作成せず、結果として STH によってデータが保存されません。このような場合に備えて警告メッセージが記録されます。