TairTSは、Redisモジュールの上に展開される時系列データ構造です。 このデータ構造は、低レイテンシで同時並行性の高いメモリ内読み取りおよび書き込みアクセスを提供し、高速フィルタリングおよび集約クエリをサポートし、ストレージ機能とコンピューティング機能の両方を備えています。 TairTSは時系列データの処理を簡素化し、パフォーマンスを大幅に向上させます。
概要
RedisTimeSeriesと比較して、TairTSはより豊富な機能セットを提供します。
Pkeyレベルの集計。 TairTSは、追加のハッシュレイヤーとしてpkey構造を導入して、複数のタイムラインにわたる集計クエリを容易にします。
たとえば、foo pkeyのメトリック名とデバイスIDにちなんで名前が付けられた複数のskeyを作成できます。 例: 温度: 1、圧力: 1、および距離: 1。 次に、TairTSが提供する EXTS.S.MRANGEコマンドを実行して、デバイスIDが1のskeysなどのカスタムモニタリングデータを取得できます。 RedisTimeSeriesを使用して同様の機能を実装する場合は、ビジネスロジックコードに多数の集計クエリを挿入する必要があります。
次のセクションでは、TairTSデータの構造について説明します。
Pkey: タイムラインのセットを表すTairTSデータの一部。 pkeyは複数のskeyで構成できます。
Skey: タイムライン。 skeyは、固定容量を持つ複数のチャンクで構成できます。 各skeyに1つ以上の異なるラベルを付けることができます。 次に、skeyをラベルでフィルタリングできます。
チャンク: データチャンク。 チャンクは複数のデータポイントを格納できます。
チャンクは、最大256データポイントのカスタム容量を持つことができます。
チャンクは、データ削除の最小単位として機能します。 チャンク内のすべてのデータポイントの有効期限が切れた後、チャンクは削除されます。
DataPoint: タイムスタンプとDOUBLE型の値を含む時系列データ。
ダウンサンプリング、属性フィルタリング、バッチクエリ、複数の数値関数の使用などのシナリオでクエリを集約します。 この機能は、バッチクエリと集約を単一のコマンドに統合して、ネットワークの相互作用を減らし、ミリ秒以内に応答を提供します。
履歴時系列データの更新または蓄積。
skeyのtime-to-live (TTL) の設定。 TTLは各skeyに設定でき、データを自動的に消去し、事前定義されたタイムウィンドウに基づいてタイムラインを進めることができます。
ゴリラアルゴリズムによる効率的な圧縮。 TairTSは、Gorilla圧縮アルゴリズムと特定のストレージ技術を使用して、ストレージコストを大幅に削減します。
典型的なシナリオ
モニタリングデータの保存とコンピューティング
アプリケーションパフォーマンス管理 (APM) の1秒あたりのモニタリング
IoTのためのデータ分析と処理
スロットリングシナリオでのリスク管理
ホットニュースのキャッシング
タイムウィンドウ関数の使用
ベストプラクティス
前提条件
管理するインスタンスは、Tair DRAMベースのインスタンスです。
インスタンスがRedis 5.0と互換性のあるDRAMベースのインスタンスである場合、インスタンスのマイナーバージョンは1.7.20以降である必要があります。
最新のマイナーバージョンは、より多くの機能とより高い安定性を提供します。 インスタンスを最新のマイナーバージョンに更新することを推奨します。 詳細については、「インスタンスのマイナーバージョンの更新」をご参照ください。 お使いのインスタンスがクラスターインスタンスまたは読み書き分離インスタンスの場合、すべてのコマンドを期待どおりに実行できるように、インスタンスのプロキシノードを最新のマイナーバージョンに更新することを推奨します。
注意事項
管理するTairTSデータは、Tairインスタンスに保存されます。
TairTSは、リアルタイムの同時実行性の高い書き込みとクエリをサポートしますが、ストレージ容量は限られています。 期限切れのデータがタイムリーに削除されるように、TairTSデータにTTLを指定することを推奨します。
ストレージコストを削減するには、次の方法で
CHUNK_SIZE
パラメーターを指定することを推奨します。skeyに平均して5,000を超えるデータポイントが含まれている場合は、
CHUNK_SIZE
を256に設定します。 デフォルト値です。skeyに含まれるデータポイントが平均で5,000未満の場合、
CHUNK_SIZE
を次の式を使用して計算される値に設定します。CHUNK SIZE=skeyの平均データポイント数 /20。 skeyに平均1,000個のデータポイントが含まれている場合は、CHUNK_SIZE
を50に設定します。
変更を破る:
2024年7月22日、Redis 6.0と互換性のある24.7.0.0バージョンのTair DRAMベースのインスタンスがリリースされました。 このバージョンでは、ts-auto-del-empty-skey-enableという新しいパラメーターが導入されます。これはデフォルトでyesに設定されています。 これは、skeyのすべてのデータポイントが期限切れになると、skeyが自動的に削除されることを示します。 ただし、Redis 6.0と互換性のあるTair DRAMベースのインスタンスの24.7.0.0より前のバージョンでは、データポイントが期限切れになるskeyはデフォルトで削除されません。
Redis 6.0と互換性のあるTair DRAMベースのインスタンスでTairTSを使用する前に、インスタンスをバージョン24.7.0.0以降にアップグレードし、ts-auto-del-empty-skey-enableパラメーター設定を確認して手動で調整することを推奨します。 これにより、デフォルトの動作の変更によるビジネスへの潜在的な影響を防ぐことができます。
サポートされるコマンド
表 1. TairTSコマンド
データ型 | コマンド | 構文 | 説明 |
基本的な書き込み操作 |
| TairTS pkeyを作成します。 同じ名前のpkeyがすでに存在する場合、pkeyは作成できません。 | |
| 指定されたpkeyにskeyを作成します。 pkeyが存在しない場合は、自動的に作成されます。 同じ名前のskeyが既に存在する場合、skeyは作成できません。 説明 有効期限や圧縮を有効にするかどうかなど、skeyのパラメーターを指定できます。 | ||
| 指定したskeyのメタデータを変更します。 DATA_ET時間値のみを変更できます。 | ||
| データポイントをskeyに挿入します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 | ||
| データポイントをpkeyの複数のskeyに挿入します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 | ||
| データポイントをskeyに挿入します。 挿入するデータポイントの値が正の場合、skeyに存在する最後のデータポイントの値に挿入された値が加算されます。 データ点が負の値を有する場合、挿入された値は、skeyに存在する最後のデータ点の値から減算される。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 | ||
| データポイントをpkeyの複数のskeyに挿入します。 挿入するデータポイントの値が正の場合、挿入された値は各skeyに存在する最後のデータポイントの値に加算されます。 データ点が負の値を有する場合、挿入された値は、各skeyに存在する最後のデータ点の値から減算される。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 | ||
| skeyとskey内のすべてのデータポイントをpkeyから削除します。 | ||
基本的な読み取り操作 |
| 指定したskeyの最後のデータポイントの値を照会します。 | |
| 指定したskeyのメタデータを照会します。 メタデータは、データポイントの数、最後のデータポイントのタイムスタンプおよび値、およびskeyのラベル情報を含む。 | ||
| pkeyで指定されたフィルター条件を満たすskeysを照会します。 | ||
集計操作 |
| 指定された時間範囲内にskeyに存在するデータポイントの数を照会します。 時間範囲は、閉じた間隔である。 | |
| 指定された時間範囲内に複数のskeyで指定されたフィルター条件を満たすデータポイントの数を照会します。 時間範囲は、閉じた間隔である。 | ||
| 指定されたフィルター条件を満たすpkeyのデータポイントを集計します。 集約に1つ以上のskeyを指定した場合、EXTS.S.MRANGEコマンドを使用した場合と同じ方法でskeyが最初に集約されます。 次に、skey集計結果に基づいてpkeysが集計されます。 | ||
同時書き込み操作 |
| 指定したskeyのデータポイントの値を変更します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 | |
| 複数のskeysのデータポイントの値を一度に変更します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 | ||
| 指定したskeyのデータポイントの値を変更します。 値を変更するためのインクリメントまたはデクリメントを指定できます。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 | ||
| 複数のskeysのデータポイントの値を一度に変更します。 値を変更するためのインクリメントまたはデクリメントを指定できます。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 | ||
汎用操作 |
| 1つ以上のTairTSキーを削除します。 |
このトピックで使用されるコマンド構文の規則を次に示します。
Uppercase keyword
: commandキーワードを示します。イタリックテキスト
: 変数を示します。[options]
: 囲まれたパラメータがオプションであることを示します。 括弧で囲まれていないパラメータを指定する必要があります。A | B
: 縦棒 (|) で区切られたパラメータが相互に排他的であることを示します。 指定できるパラメーターは1つだけです。...
: このシンボルの前にあるパラメーターを繰り返し指定できることを示します。
EXTS.P.CREATE
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | TairTS pkeyを作成します。 同じ名前のpkeyがすでに存在する場合、pkeyは作成できません。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.CREATE
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定されたpkeyにskeyを作成します。 pkeyが存在しない場合は、自動的に作成されます。 同じ名前のskeyが既に存在する場合、skeyは作成できません。 説明 有効期限や圧縮を有効にするかどうかなど、skeyのパラメーターを指定できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.ALTER
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定したskeyのメタデータを変更します。 DATA_ET時間値のみを変更できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.ADD
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | データポイントをskeyに挿入します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S. マッド
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nはskeyの数を示す。 |
コマンド説明 | データポイントをpkeyの複数のskeyに挿入します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.INCRBY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | データポイントをskeyに挿入します。 挿入するデータポイントの値が正の場合、skeyに存在する最後のデータポイントの値に挿入された値が加算されます。 データ点が負の値を有する場合、挿入された値は、skeyに存在する最後のデータ点の値から減算される。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | 事前に サンプルコマンド:
サンプル出力:
この時点で
|
EXTS.S.MINCRBY
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nはskeyの数を示す。 |
コマンド説明 | データポイントをpkeyの複数のskeyに挿入します。 挿入するデータポイントの値が正の場合、挿入された値は各skeyに存在する最後のデータポイントの値に加算されます。 データ点が負の値を有する場合、挿入された値は、各skeyに存在する最後のデータ点の値から減算される。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.DEL
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | skeyとskey内のすべてのデータポイントをpkeyから削除します。 |
項目 |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.GET
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定したskeyの最後のデータポイントの値を照会します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.INFO
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定したskeyのメタデータを照会します。 メタデータは、データポイントの数、最後のデータポイントのタイムスタンプおよび値、およびskeyのラベル情報を含む。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.QUERYINDEX
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nは、フィルタ条件に含まれるセットの最大数を示す。 |
コマンド説明 | pkeyで指定されたフィルター条件を満たすskeysを照会します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S. レンジ
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nは、データポイントが属するチャンクの数を示す。 |
コマンド説明 | 指定された時間範囲内にskeyに存在するデータポイントの数を照会します。 時間範囲は、閉じた間隔である。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.MRANGE
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nは、データポイントが属するチャンクの数を示す。 |
コマンド説明 | 指定された時間範囲内に複数のskeyで指定されたフィルター条件を満たすデータポイントの数を照会します。 時間範囲は、閉じた間隔である。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.P. レンジ
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nは、データポイントが属するチャンクの数を示す。 |
コマンド説明 | 指定されたフィルター条件を満たすpkeyのデータポイントを集計します。 集約に1つ以上のskeyを指定した場合、EXTS.S.MRANGEコマンドを使用した場合と同じ方法でskeyが最初に集約されます。 次に、skey集計結果に基づいてpkeysが集計されます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.RAW_MODIFY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定したskeyのデータポイントの値を変更します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.RAW_MMODIFY
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nはskeyの数を示す。 |
コマンド説明 | 複数のskeysのデータポイントの値を一度に変更します。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
EXTS.S.RAW_INCRBY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | 指定したskeyのデータポイントの値を変更します。 値を変更するためのインクリメントまたはデクリメントを指定できます。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 デフォルトの初期値は0です。 skeyのパラメーター (有効期限や圧縮を有効にするかどうかなど) は、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | 事前に サンプルコマンド:
サンプル出力:
この時点で
|
EXTS.S.RAW_MINCRBY
項目 | 説明 |
構文 |
|
時間の複雑さ | ここで、nはskeyの数を示す。 |
コマンド説明 | 複数のskeysのデータポイントの値を一度に変更します。 値を変更するためのインクリメントまたはデクリメントを指定できます。 pkeyまたはskeyが存在しない場合、pkeyまたはskeyは自動的に作成されます。 有効期限や圧縮を有効にするかどうかなどのskeyのパラメーターは、skeyが自動的に作成された場合にのみ有効になります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
インデックスフィルター構文
Skeysはラベルでフィルタリングできます。 次の構文は、フィルター条件に使用されます。
フィルター条件を指定するときは、次のコマンドを1つ以上使用できます。また、EQ、CONTAINS、LIST_MATCHのいずれかのロジックを使用する必要があります。
Filterコマンド | 説明 | ロジック |
| ラベルLの値はVに等しい。 | EQ (等しい) |
| ラベルLの値はNULLではなく、skeyにラベルLが含まれていることを示します。 | 含有量 |
| ラベルLの値は、v1またはv2など、リスト内の値の1つと一致します。 | LIST_TMATCH |
| ラベルLの値はVに等しくない。 | NOEQ (等しい) |
| ラベルLの値はNULLです。これは、skeyにラベルLが含まれていないことを示します。 | NOCONTAINS |
| ラベルLの値は、v1やv2など、リスト内のどの値とも一致しません。 | LIST_NOTMATCH |
集計構文
集計操作では、複数のタイムバケットに存在するデータが集計されます。 次の集計タイプがサポートされています。
MAX
: 最大値を返します。MIN
: 最小値を返します。AVG
: 平均値を返します。SUM
: すべての値の合計を返します。FIRST
: 最初の値を返します。LAST
: 最後の値を返します。RANGE
: 最小値から最大値までの範囲を返します。COUNT
: 値の数を返します。STD.P
: 母集団の分散を返します。STD.S
: サンプル分散を返します。VAR.P
: 母集団の標準偏差を返します。VAR.S
: サンプルの標準偏差を返します。