Timescale¶
Timescale は、NGSI エンティティの時系列を格納するバック エンドとして QuantumLeap で使用できる時系列データベースの1つです。 データベース選択のセクション で説明しているように、永続化 されるエンティティを所有するテナントに応じて、使用するストレージ・ バックエンド (Crate または Timescale) を実行時に動的に選択できます。 さらに、QuantumLeap には、Timescale バックエンドのセットアップを自動化 し、Crate から Timescale への移行スクリプトを生成するツールが付属して います。詳細は、データ移行のセクションにあります。
QuantumLeap Timescale DB のセットアップ¶
Timescale バックエンドの使用を開始するには、動作する PostgreSQL の
インストールが必要です。特に、QuantumLeap には、Timescale および
PostGIS 拡張機能がすでにインストールされている PostgreSQL server 10
以上が必要です。timescale-container/test
の Docker ファイルを
使用して、QuantumLeap が接続できる Timescale サーバ・バックエンドを
すばやくスピンアップできますが、実稼働環境のデプロイでは、より洗練
されたセットアップが必要になる可能性があります。たとえば、高可用性の
ために PostgreSQL を構成。
Timescale が稼働したら、QuantumLeap DB をブートストラップする必要が
あり、Crate から一部のデータを移行することもできます。QuantumLeap
には、プロセスのほとんどのステップを自動化できる自己完結型の Python
スクリプトが付属しています。スクリプト・ファイルの名前は
quantumleap-db-setup
で、timescale-container
ディレクトリに
あります。次の3つのことを順番に実行します :
-
QuantumLeap データベースが存在しない場合は、ブートストラップします。 QuantumLeap のデータベースを作成し、必要なすべての拡張子と最初の QuantumLeap ロールを追加します。指定された QuantumLeap DB が既に 存在する場合、ブートストラップのフェーズはスキップされます
-
指定された init ディレクトリで見つかった SQL スクリプトを実行 します。デフォルトは
./ql-db-init
です。このディレクトリ・ツリー 内の.sql
ファイルをピックアップし、昇順のアルファベット順に 各ファイルを実行し、エラーが発生した最初のファイルで停止します。 その場合、スクリプトは終了します -
上記の init ディレクトリにあるデータ・ファイルをロードします。 データ・ファイルは、init ディレクトリ・ツリーにある拡張子が
.csv
のファイルです。各データ・ファイルには、QuantumLeap データベースのテーブルにロードされる CSV 形式のレコードのリストが 含まれている必要があります。.csv
拡張子のないファイル名は、 データがロードされるテーブルの FQN であると見なされますが、 列の仕様は、ファイル内にあると予想される CSV ヘッダの名前で 指定されます。データ・ファイルはアルファベット順に順番に読み込まれ、 エラーが発生した最初のファイルで停止します。その場合、スクリプトは 終了します。
(2) と (3) はデータの移行に最も関連しています (詳細については以下の
セクションで説明します) が、スクリプトは任意の SQL ステートメントを
実行するためにも使用できます。前述の Docker compose ファイルは、
Timescale コンテナ (PostGIS を使用) と、inittime として、
timescale-container/test/ql-db-init
を使用してスクリプトを実行する
別のコンテナをスピンアップし、動作するTimescale DB、および、いくつかの
テーブル、テストデータを提供します。
Timescale バックエンドの使用¶
新しく作成された QuantumLeap DB を含む Postgres + Timescale + PostGIS サーバがあれば、QuantumLeap を DBサーバに接続する準備ができています。 そのためには、いくつかの環境変数を設定し、YAML ファイルを編集する必要が あります。使用する環境変数は次のとおりです :
POSTGRES_HOST
: Timescale サーバのホスト名または IP アドレス。 指定しない場合のデフォルトはtimescale
ですPOSTGRES_PORT
: 接続するサーバのポート。デフォルトは5432
ですPOSTGRES_DB_NAME
: QuantumLeap DB の名前。デフォルトはquantumleap
ですPOSTGRES_DB_USER
: QuantumLeap が接続に使用する DB ユーザ。 デフォルトはquantumleap
ですPOSTGRES_DB_PASS
: 上記のユーザのパスワード。デフォルトは*
ですPOSTGRES_USE_SSL
: QuantumLeap は SSL を使用して PostgreSQL に 接続する必要がある場合、この変数をtrue
,yes
,1
,t
のいずれかに 設定します。他の値を指定するか、変数を設定しなければ、プレーン TCP 接続を使用しますQL_CONFIG
: QuantumLeap YAML 設定ファイルの絶対パス名。設定されて いない場合は、Crate バックエンドのみが使用可能なデフォルト構成が 使用されます。バックエンドと YAML 設定を選択する方法の詳細については、 データベース選択のセクション を参照してください