このトピックでは、Lindorm が検索インデックスに課す制限事項について説明します。
検索インデックスには、以下の制限事項が課されます。
データ型
検索インデックス列は、BOOLEAN、BYTE、SHORT、INT、LONG、FLOAT、DOUBLE、STRING、CHAR、BINARY、TIMESTAMP、JSON のデータ型をサポートしています。
STRING データの場合、最大長は 8,191 文字です。形態素解析が有効になっている場合、この制限は結果として得られる各 term に適用されます。元の文字列または形態素解析された term のいずれかでこの制限を超えるデータは、検索インデックスに同期されません。形態素解析の詳細については、「形態素解析クエリ」をご参照ください。
重要JSON および TIMESTAMP データの型は、Lindorm 2.6.5 以降のバージョンでのみサポートされています。LindormTable のバージョンの確認およびスペックアップ方法の詳細については、「LindormTable のリリースノート」および「マイナーバージョンの更新」をご参照ください。
インデックス数
デフォルトでは、単一のワイドテーブルに検索インデックスを1つだけ作成できます。複数の検索インデックスを作成するには、「単一テーブルに対する複数の検索インデックス(パブリックプレビュー)」をご参照ください。Time to Live (TTL)
ベーステーブルに TTL が設定されている場合、検索インデックスは作成時にこの TTL を継承します。その後のベーステーブルの TTL の変更は、検索インデックスの TTL には影響しません。
ベーステーブルに TTL が設定されていない場合、検索インデックスは最初に TTL を設定したときにベーステーブルの TTL を採用します。その後のベーステーブルの TTL の変更は、検索インデックスの TTL には影響しません。
検索インデックスの TTL を個別に変更するには、Lindorm のテクニカルサポート (DingTalk ID: s0s3eg3) にご連絡ください。
検索インデックスの TTL は、期限切れのデータを定期的に削除するバックグラウンドプロセスによって適用されます。そのため、TTL の有効期限が切れた後も、データが短時間残存する場合があります。
複数データバージョン
検索インデックスは、インデックスキー列のデータの複数バージョンをサポートしていません。
カスタムタイムスタンプ
デフォルトでは、Lindorm は各データ行に対してミリ秒単位のタイムスタンプを生成します。このタイムスタンプはデータバージョンに相当します。データ行を書き込むときにカスタムタイムスタンプを指定すると、サーバーは書き込まれるデータ行に対してアプリケーションのタイムスタンプを使用します。カスタムタイムスタンプを指定するために使用できるメソッドは、クライアントによって異なります。
HBase クライアントは、次の Put 操作を実行してカスタムタイムスタンプを実装します。
public Put(byte[] row, long ts) public Put addColumn(byte[] family, byte[] qualifier, long ts, byte[] value)Lindorm SQL クライアントは、次の文を使用してカスタムタイムスタンプを実装します。
UPSERT INTO testTable (pk,c1,c2,_l_ts_) values('1','2','3',1640966400000);
Lindorm ワイドテーブルに対して検索インデックスが作成され、データにカスタムタイムスタンプを使用する場合は、ワイドテーブルにデータを書き込む前に、テーブルの MUTABILITY 属性を変更する必要があります。次のいずれかの文を実行して、MUTABILITY 属性を変更できます。
HBase Shell を使用して MUTABILITY 属性を変更します。
ALTER 'testTable', MUTABILITY=> 'MUTABLE_ALL'Lindorm SQL を使用して MUTABILITY 属性を変更します。
ALTER TABLE testTable SET 'MUTABILITY' = 'MUTABLE_ALL';
説明MUTABILITY 属性のデフォルト値は
MUTABLE_LATESTです。可変性タイプの詳細については、「基本概念」をご参照ください。
問題が発生した場合は、チケットを送信してください。