TairRoaringは、RoaringビットマップのTairベースのデータ構造です。 このトピックでは、TairRoaringとそのサポートされるコマンドについて説明します。
概要
ビットマップ (ビットセットとも呼ばれます) は、少量のストレージを使用して大量のデータのクエリを最適化する一般的なデータ構造です。 ビットマップは、ハッシュベースの実装よりも多くのスペースを節約しますが、スパースデータの格納には適していません。 この問題に対応して、圧縮ビットマップが開発されました。 轟音ビットマップは、他の圧縮ビットマップよりも効率的でバランスの取れた業界で認められたビットマップタイプです。
Roaringビットマップは、TairRoaringで次の方法で最適化されます。
TairRoaringは、2レベルのインデックスと動的コンテナを使用することで、多数のシナリオでパフォーマンスとスペースの複雑さのバランスをとることができます。
TairRoaringは、単一命令、複数データ (SIMD) 、ベクトル化、およびpopcountアルゴリズムなどの最適化技術を使用して、計算効率を改善し、効率的な時間と空間の複雑さを実現します。
TairRoaringは、Tairが提供する強力なコンピューティングパフォーマンスと高い安定性を活用して、ビジネスシナリオをサポートします。
典型的なシナリオ
TairRoaringは、ライブストリーミング、音楽、電子商取引などの業界での使用に適しています。 TairRoaringを使用して、パーソナライズされたレコメンデーションや精密マーケティングなどのシナリオで多次元タグをユーザーに追加できます。
リリースノート
TairRoaring V2の変更:
TR.RANGEINTARRAY: TairRoaring V1のTR.RANGEINTARRAYをTairRoaring V2のTR.RANGEに変更する。
TR.SETRANGE: TR.SETRANGEの出力は、TairRoaring V1で
OK
から、TairRoaring V2で1に設定されたビット数に変更される。
2021年9月13日、マイナーバージョン1.7.20以降を実行するインスタンスのTairRoaring V1がリリースされました。
2022年3月11日、マイナーバージョン1.7.27以降を実行するインスタンス用にTairRoaring V2がリリースされました。
TairRoaring V2は、パフォーマンスを向上させるために特定のコマンド実装を最適化します。 TairRoaring V2には、TR.SETBITSやTR.CLEARBITSなどの9つの新しいコマンドが付属しており、3つのコマンドを更新して、そのうち2つはTairRoaring V1と互換性があり、1つのコマンドの名前を変更します。
2022年4月20日、マイナーバージョン1.8.1以降を実行するインスタンス用にTairRoaring V2.2がリリースされました。
TairRoaring V2.2には、TR.JACCARD、TR.CONTAINS、TR.RANKの3つの新しいコマンドが付属しています。 このバージョンでは、データベースに存在しないキーに対して特定のコマンドが発行されたときに返されるエラーも変更されます。 たとえば、
ERR key not found
というエラーメッセージは削除されます。
ベストプラクティス
前提条件
マイナーバージョン1.7.7以降を実行するTair DRAMベースのインスタンスが作成されます。
最新のマイナーバージョンは、より多くの機能とより高い安定性を提供します。 インスタンスを最新のマイナーバージョンに更新することを推奨します。 詳細については、「インスタンスのマイナーバージョンの更新」をご参照ください。 お使いのインスタンスがクラスターインスタンスまたは読み書き分離インスタンスの場合、すべてのコマンドを期待どおりに実行できるように、インスタンスのプロキシノードを最新のマイナーバージョンに更新することを推奨します。
使用上の注意
管理するTairRoaringキーは、Tairインスタンスに保存されます。
サポートされるコマンド
データ型 | コマンド | 構文 | 説明 | バージョン変更 |
書き込み操作 |
| TairRoaringキーの指定されたビットを1または0の値に設定し、元のビット値を返します。 オフセットは0から始まります。 | - (N/A) | |
| TairRoaringキーの指定されたビットの値を1に設定します。 複数のビットを1の値に設定できます。 | V2で追加されました。 | ||
| TairRoaringキーの指定されたビットの値を0に設定します。 指定されたビットが既に0の値を有する場合、演算は実行されない。 複数のビットを0の値に設定できます。 | V2で追加されました。 | ||
| TairRoaringキーの指定された範囲内のビットを1の値に設定します。 範囲は閉区間です。 | V2で更新。 V2でのコマンド更新後、コマンド出力は、1に設定されたビット数に変更される。 | ||
| TairRoaringキーの指定されたビットの後の位置にビット配列を挿入し、元のデータを上書きします。 ビット配列は0と1で構成されます。 | V2で追加されました。 | ||
| TairRoaringキーの指定された範囲内のビットの値を0から1または1から0に変更します。 範囲は閉区間です。 キーが存在しない場合、キーは空のデータセットとして作成され、キーに対して操作が実行されます。 | V2で追加されました。 | ||
| TairRoaringキーの指定されたビットの値を1に設定します。 複数のビットを1の値に設定できます。 説明 TairRoaring V2では、このコマンドの代わりにTR.SETBITSを使用することを推奨します。 | - | ||
| 指定された整数配列に基づいてTairRoaringキーを作成します。 キーが既に存在する場合、このコマンドはキー内のデータを上書きします。 説明 TairRoaring V2では、このコマンドの代わりにTR.SETBITSを使用することを推奨します。 | - | ||
| 指定されたビット配列文字列に基づいてTairRoaringキーを作成します。 ビット配列列は0と1からなる。 キーが既に存在する場合、このコマンドはキー内のデータを上書きします。 説明 TairRoaring V2では、このコマンドの代わりにTR.APPENDBITARRAYを使用することを推奨します。 | - | ||
| 複数のTairRoaringキーに対してビットごとの操作を実行し、結果を宛先キーに格納します。 AND、OR、XOR、NOT、およびDIFFビット単位の演算がサポートされています。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 | - | ||
| 複数のTairRoaringキーに対してビット操作を実行します。 AND、OR、XOR、NOT、およびDIFFビット単位の演算がサポートされています。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 | V2で追加されました。 | ||
| TairRoaringキーのストレージを最適化します。 キーに多数の要素が格納され、主にキーの作成後の読み取り操作に使用される場合は、このコマンドを実行できます。 | - | ||
読み取り操作 |
| TairRoaringキーから指定されたビットの値を取得します。 | - | |
| TairRoaringキーから指定されたビットの値を取得します。 値取得用に複数のビットを指定できます。 | V2で追加されました。 | ||
| TairRoaringキーで指定された範囲内の値が1のビット数をカウントします。 範囲は閉区間です。 | V2で更新され、V1と互換性があります。 | ||
| カウントの序数を持つビットのオフセットを取得します。 ビットは、1または0の値を有することができる。 countパラメーターはオプションで、デフォルト値は1です。 1の値は、左 − 右計数アプローチを使用することによって検索された最初のビットを示す。 | V2で更新され、V1と互換性があります。 | ||
| TairRoaringキーの指定されたビットの後にあるすべてのビットをスキャンし、値が1のスキャンされたビットのカウントに対応するオフセットを返します。 返されるカーソルは、キーに対応するオフセットです。 説明 このコマンドは、追加または削除された要素をスキャンして返さない場合もあります。 | V2で追加されました。 | ||
| TairRoaringキーの指定された範囲内で1の値を持つビットのオフセットを取得します。 範囲は閉区間です。 | V1のTR.RANGEINTARRAYからV2のTR.RANGEに名前が変更されました。 | ||
| TairRoaringキーの指定された範囲内の0と1のビット値で構成される文字列を取得します。 範囲は閉区間です。 | V2で追加されました。 | ||
| TairRoaringキーで1の値を持つ最初のビットのオフセットを取得します。 1の値を有するビットがない場合、− 1の値が返される。 | - | ||
| TairRoaringキーで1の値を持つ最後のビットのオフセットを取得します。 1の値を有するビットがない場合、− 1が返される。 | - | ||
| 指定されたTairRoaringキーの統計情報を返します。 この情報は、コンテナの数およびメモリ使用量を含む。 | V2で追加されました。 | ||
| 2つのTairRoaringキーのJaccard類似係数を取得します。 係数が高いほど、類似性が高くなります。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 | V2.2で追加されました。 | ||
| key2にkey1が含まれているかどうかをチェックします。 yesの場合、key1はkey2のサブセットであり、値1が返されます。 そうでなければ、key1はkey2のサブセットではなく、0の値が返される。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 | V2.2で追加されました。 | ||
| 最初のビットから指定されたビットまでの範囲内で値が1のビット数を取得します。 範囲は閉区間です。 | V2.2で追加されました。 | ||
汎用操作 |
| 1つ以上のTairRoaringキーを削除します。 | - |
次のセクションでは、コマンドの構文について説明します。
Uppercase keyword
: commandキーワードを示します。イタリックテキスト
: 変数を示します。[options]
: 囲まれたパラメータがオプションであることを示します。 括弧で囲まれていないパラメータを指定する必要があります。A | B
: 縦棒 (|) で区切られたパラメータが相互に排他的であることを示します。 指定できるパラメーターは1つだけです。...
: このシンボルの前にあるパラメーターを繰り返し指定できることを示します。
このトピックでは、時間の複雑さの式で使用される文字は、トピック固有の意味を示します。
Cはパラメータのargcまたは範囲を示します。
Mは、リスト内のノードの数またはハッシュ内のフィールドの数など、データ構造内で1に設定されたビットの数を示す。
TR.SETBIT
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | TairRoaringキーの指定されたビットを1または0の値に設定し、元のビット値を返します。 オフセットは0から始まります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.SETBITS
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定されたビットの値を1に設定します。 複数のビットを1の値に設定できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. クリアビット
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定されたビットの値を0に設定します。 指定されたビットが既に0の値を有する場合、演算は実行されない。 複数のビットを0の値に設定できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.SETRANGE
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定された範囲内のビットを1の値に設定します。 範囲は閉区間です。 たとえば、 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR。アペンディターレイ
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定されたビットの後の位置にビット配列を挿入し、元のデータを上書きします。 ビット配列は0と1で構成されます。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
サンプル出力:
この場合、TairRoaring fooキーは101101です。 |
TR.FLIPRANGE
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定された範囲内のビットの値を0から1または1から0に変更します。 範囲は閉区間です。 キーが存在しない場合、キーは空のデータセットとして作成され、キーに対して操作が実行されます。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
サンプル出力:
この場合、TairRoaring fooキーは01001です。 |
TR.APPENDINTARRAY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定されたビットの値を1に設定します。 複数のビットを1の値に設定できます。 説明 TairRoaring V2では、このコマンドの代わりにTR.SETBITSを使用することを推奨します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.SETINTARRAY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | 指定された整数配列に基づいてTairRoaringキーを作成します。 キーが既に存在する場合、このコマンドはキー内のデータを上書きします。 説明 TairRoaring V2では、このコマンドの代わりにTR.SETBITSを使用することを推奨します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.SETBITARRAY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | 指定されたビット配列文字列に基づいてTairRoaringキーを作成します。 ビット配列列は0と1からなる。 キーが既に存在する場合、このコマンドはキー内のデータを上書きします。 説明 TairRoaring V2では、このコマンドの代わりにTR.APPENDBITARRAYを使用することを推奨します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.BITOP
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C * M) |
コマンド説明 | 複数のTairRoaringキーに対してビットごとの操作を実行し、結果を宛先キーに格納します。 AND、OR、XOR、NOT、およびDIFFビット単位の演算がサポートされています。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.BITOPCARD
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C * M) |
コマンド説明 | 複数のTairRoaringキーに対してビット操作を実行します。 AND、OR、XOR、NOT、およびDIFFビット単位の演算がサポートされています。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. 最適化
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | TairRoaringキーのストレージを最適化します。 キーに多数の要素が格納され、主にキーの作成後の読み取り操作に使用される場合は、このコマンドを実行できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.GETBIT
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | TairRoaringキーから指定されたビットの値を取得します。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.GETBITS
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーから指定されたビットの値を取得します。 値取得用に複数のビットを指定できます。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. ビットカウント
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | TairRoaringキーで指定された範囲内の値が1のビット数をカウントします。 範囲は閉区間です。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.BITPOS
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | カウントの序数を持つビットのオフセットを取得します。 ビットは、1または0の値を有することができる。 countパラメーターはオプションで、デフォルト値は1です。 1の値は、左 − 右計数アプローチを使用することによって検索された最初のビットを示す。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. スキャン
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定されたビットの後にあるすべてのビットをスキャンし、値が1のスキャンされたビットのカウントに対応するオフセットを返します。 返されるカーソルは、キーに対応するオフセットです。 説明 このコマンドは、追加または削除された要素をスキャンして返さない場合もあります。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. レンジ
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定された範囲内で1の値を持つビットのオフセットを取得します。 範囲は閉区間です。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
サンプル出力:
|
TR.RANGEBITARRAY
項目 | 説明 |
構文 |
|
時間の複雑さ | O(C) |
コマンド説明 | TairRoaringキーの指定された範囲内の0と1のビット値で構成される文字列を取得します。 範囲は閉区間です。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
サンプル出力:
|
TR.MIN
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | TairRoaringキーで1の値を持つ最初のビットのオフセットを取得します。 1の値を有するビットがない場合、− 1の値が返される。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.MAX
項目 | 説明 |
構文 |
|
時間の複雑さ | O(1) |
コマンド説明 | TairRoaringキーで1の値を持つ最後のビットのオフセットを取得します。 1の値を有するビットがない場合、− 1が返される。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR.STAT
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | 指定されたTairRoaringキーの統計情報を返します。 この情報は、コンテナの数およびメモリ使用量を含む。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. ジャカード
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | 2つのTairRoaringキーのJaccard類似係数を取得します。 係数が高いほど、類似性が高くなります。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 |
パラメーター |
|
Output |
|
例: | サンプルコマンド:
サンプル出力:
|
TR. 含有量
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | key2にkey1が含まれているかどうかをチェックします。 yesの場合、key1はkey2のサブセットであり、値1が返されます。 そうでなければ、key1はkey2のサブセットではなく、0の値が返される。 説明 このコマンドは、クラスターインスタンスのスロットにまたがるキーでは使用できません。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
が含まれています サンプル出力:
|
TR. ランク
項目 | 説明 |
構文 |
|
時間の複雑さ | O(M) |
コマンド説明 | 最初のビットから指定されたビットまでの範囲内で値が1のビット数を取得します。 範囲は閉区間です。 |
パラメーター |
|
Output |
|
例: |
サンプルコマンド:
サンプル出力:
|
エラーメッセージ
エラーメッセージ | 説明 |
| 不正なキータイプ: キーはTairRoaringキーではありません。 |
| 不正なパラメータタイプ: パラメータ値を32ビット整数に変換できません。 |
| 無効なパラメーター:
|
| TairRoaringキーは既に存在し、そのデータは上書きできません。 説明 このエラーはTairRoaring V2.2で修正されています。 |
| TairRoaringキーは存在しません。 説明 このエラーはTairRoaring V2.2で修正されています。 |