すべてのプロダクト
Search
ドキュメントセンター

Lindorm:時空間オブジェクトの削除

最終更新日:Mar 29, 2026

Lindorm GanosBase では、時空間オブジェクトを削除する方法として、TTL に基づく有効期限切れ、時空間範囲による削除、およびオブジェクト ID による削除の 3 種類をサポートしています。各方法は、異なるインデックス構成に適用されます。

削除方法の選択

方法対応するインデックスタイプ他のインデックスへの影響使用するタイミング
TTL に基づく有効期限切れすべてのインデックステーブルあり(テーブルごとに TTL を設定)固定された時間しきい値を超えるデータを自動的にパージする場合
時空間範囲による削除z2/xz2 および z3/xz3 のみ属性インデックスとの不整合が発生するリスクありデータベース内に時空間インデックステーブルのみが存在する場合
オブジェクト ID による削除ID インデックステーブルのみ他のインデックステーブルのデータは削除されないデータベース内に ID インデックステーブルが 1 つだけ存在する場合
警告

削除を実行する前に、インデックステーブルのデータをバックアップしてください。

TTL による削除

Lindorm GanosBase では、ApsaraDB for HBase の Time to Live (TTL) 機能を活用して、データの自動的な有効期限切れを実現します。HBase Shell を使用し、時空間インデックステーブルの TTL 属性を変更することで、期限切れデータを削除できます。

複数のインデックステーブルが存在する場合は、それぞれのテーブルに対して個別に TTL を設定してください。TTL の値は秒単位で指定します。

例: 時空間インデックステーブル xxx_z3 および属性インデックステーブル xxx_attr から、5 分(300 秒)より古いデータを削除します。

Alter 'xxx_z3',{NAME=>'d',TTL=>300}
Alter 'xxx_attr',{NAME=>'d',TTL=>300}

時空間範囲による削除

この方法は、z2/xz2 および z3/xz3 の時空間インデックステーブルにのみ適用可能です。

警告

データベースに属性インデックステーブルが含まれる場合、時空間範囲による削除を実行しても、属性インデックステーブルは変更されません。これにより、時空間インデックステーブルと属性インデックステーブルの間で不整合が発生します。したがって、この方法は、データベース内に時空間インデックステーブルのみが存在する場合にのみ使用してください。

操作手順:

  1. 削除対象のオブジェクトを特定するフィルターを設定します。クエリ時と同じフィルター構文を使用します。フィルター文字列は、拡張共通クエリ言語(ECQL)構文に準拠している必要があります。

  2. GeoTools の SimpleFeatureStore.removeFeatures() を呼び出して、条件に一致するオブジェクトを削除します。

/**
 * 指定されたフィルターに一致する時空間オブジェクトを削除します。
 * @param schema       スキーマ名
 * @param filterString ECQL フィルター文字列。空文字列の場合は、すべてのオブジェクトが削除されます
 */
public void removeByFilter(String schema, String filterString) throws Exception {
    SimpleFeatureStore fs = (SimpleFeatureStore) ds.getFeatureSource(schema);
    // filterString が空文字列の場合、すべての時空間オブジェクトが削除されます。
    if (StringUtils.isEmpty(filterString)) {
        fs.removeFeatures(Filter.INCLUDE);
        return;
    }
    Filter filterToDelete = ECQL.toFilter(filterString);
    fs.removeFeatures(filterToDelete);
}

オブジェクト ID による削除

この方法では、指定された ID に関連付けられたインデックステーブルからのみデータが削除されます。他のインデックステーブルのデータには影響しません。

説明

この方法は、データベース内に ID インデックステーブルが 1 つだけ存在する場合にのみ使用してください。複数のインデックステーブルが存在する場合、削除されたオブジェクトに関するデータは他のインデックスに残り続けます。

SimpleFeatureStore.removeFeatures() を、FilterFactory2 を使用して構築した ID フィルターとともに呼び出します。

public void removeById(String schema, String simpleFeatureId) throws Exception {
    // FilterFactory2 を使用して ID フィルターを構築します。
    FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
    Filter filterToDelete = ff.id(ff.featureId(simpleFeatureId));
    SimpleFeatureStore fs = (SimpleFeatureStore) ds.getFeatureSource(schema);
    fs.removeFeatures(filterToDelete);
}