1.11 ベクター・タイル
Oracle Spatialでは、データベース表の空間データからベクター・タイルを生成するためのサポートが提供されます。ベクター・タイル形式は、空間データをマップ・ビジュアライゼーション・クライアントに非常に効率よくストリーミングするように設計されています。
ベクター・タイルには、タイル処理方法で定義された正方形の領域を覆う圧縮バイナリ形式のジオメトリおよび属性データが含まれています。タイル処理方法では、世界が、事前定義されたズーム・レベルの各セットでX座標とY座標で識別される正方形のタイルに分割されます。最新のマッピング・クライアントは、ベクター・タイルからの空間データと、スタイル・シートからのスタイル情報を使用するように設計されています。これにより、単一のベクター・タイル・データセットを多数の地図スタイルに活用できるため、柔軟性と俊敏性が大幅に向上します。
Oracle Spatialでは、SDO_UTIL.GET_VECTORTILEファンクションを使用した表の空間データからのベクター・タイルの生成がサポートされています。ベクター・タイルは、GoogleまたはTMSのタイル処理方法に基づいて生成されます。
また、ベクター・タイルのキャッシュもサポートされています。
- ベクター・タイル・キャッシュ
Oracle Spatialではベクター・タイルのキャッシュがサポートされており、ベクター・タイルを操作する際のパフォーマンスが大幅に向上します。
親トピック: Spatialの概念
1.11.1 ベクター・タイル・キャッシュ
Oracle Spatialではベクター・タイルのキャッシュがサポートされており、ベクター・タイルを操作する際のパフォーマンスが大幅に向上します。
SDO_UTIL.GET_VECTORTILEを介してタイルがリクエストされると、プロシージャでは最初にキャッシュ内のタイルをチェックします。タイルが存在する場合は、キャッシュされたタイルのバージョンが(タイルを再度計算せずに)返されます。キャッシュでタイルが見つからない場合は、タイルが計算されて返されます。計算されたタイルは、後で使用するためにキャッシュにも配置されます。ただし、ベクター・タイルのキャッシュは、表およびジオメトリ列名を指定してSDO_UTIL.GET_VECTORTILEをコールした場合にのみサポートされることに注意してください。ベクター・タイルをリクエストするときにカーソル入力を指定した場合、タイルはキャッシュされません。
タイル・キャッシュは、table_name
/geom_col_name
ペアを共有するベクター・タイルのセットとして定義されます。たとえば、table_a/geom_col
とtable_b/geom_col
は2つの異なるタイル・キャッシュです。これらの各キャッシュは、次の2つの表に保持されます:
SDO_VECTOR_TILE_CACHE$INFO
: この表には1行のキャッシュ・メタデータが含まれています。SDO_VECTOR_TILE_CACHE$TABLE
: この表には多数の行が含まれており、それぞれが個別のベクター・タイルです。
ベクター・タイル・キャッシュの管理の詳細は、次のプロシージャを参照してください:
- SDO_UTIL.ENABLE_VECTORTILE_CACHE
- SDO_UTIL.DISABLE_VECTORTILE_CACHE
- SDO_UTIL.PURGE_VECTORTILE_CACHE
- SDO_UTIL.GRANT_VECTORTILE_CACHE
- SDO_UTIL.REVOKE_VECTORTILE_CACHE
ベクター・タイル・キャッシュのソース表に対するDMLおよびDDL操作
DMLおよびDDL操作中にキャッシュの一貫性が維持されるように、キャッシュ内のベクター・タイルのソース・データを提供するデータベース表にトリガーが適切に配置されます。ソース表に対してDML操作が実行されると、変更、挿入または削除された行から生成されたデータを含むキャッシュ内のタイルがキャッシュから削除されます。SDO_UTIL.GET_VECTORTILE
が次回コールされると、これらのタイルは新しいデータを使用して再作成され、キャッシュに格納されます。
大規模なDML操作の前に、ベクター・タイル・キャッシュを無効にすることをお薦めします。これは、変更対象の行がキャッシュ内のいずれかのタイルと相互作用するかどうかを確認するために、各DML操作で空間操作が実行されるためです。これにより、DML操作が大幅に遅くなる可能性があります。したがって、DML操作の前にキャッシュを無効にすると、この速度低下がなくなります。DML操作の完了後、キャッシュを再度有効にできます。小規模なDML操作の場合は、キャッシュを有効にしたままでもかまいません。DML操作は比較的遅くなる可能性がありますが、キャッシュを再作成するよりも実用的です。
一方で、ソース表に対してDDL操作を実行する必要がある場合は、その表に基づくすべてのベクター・タイル・キャッシュを無効にする必要があります。このルールの唯一の例外はTRUNCATE TABLE
で、タイル・キャッシュを有効にした状態で実行できます。
親トピック: ベクター・タイル