MapInfo ネイティブ TAB

ネイティブ TAB は、最も一般的な TAB 形式です。ネイティブ拡張 TAB (NativeX) は、非常に大きなファイル (> 2 GB) と複数の言語をサポートすることを除けば、基本的にネイティブ TAB と同じです。両方のネイティブ TAB 形式は同じ振る舞いをします。

Spectrum Spatial はネイティブ TAB を読み取り/書き込み用データ ソースとして扱います。ただし、挿入、更新、および削除操作が適用できるのは Windows オペレーティング システムと非クラスタ システムに限られます。

データ タイプ

Spectrum Spatial は、ネイティブな TAB ファイルにおいて、Point、MultiPoint、Linestring、MultiLineString、Polygon、MultiPolygon、MultiFeatureGeometry の各ジオメトリ タイプをサポートしています。TAB データ タイプから Spectrum Spatial の同等のデータ タイプへのマッピングを以下に示します。

TAB データ タイプ Spectrum Spatial のデータ タイプ
OBJ Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection。

レンダリングのみのコンストラクトとしてサポートされている長方形、面取り矩形、楕円、円弧、およびテキスト オブジェクト。

integer Integer
smallint Short
float 二重線
decimal 二重線
char 文字列
largeint 経度
integer64 経度
date Date (日付)
time 時間
datetime Date_Time
logical Boolean

プライマリ キー

ネイティブ TAB には暗黙的なプライマリ キーがあります。それは行 ID です。この列は、Oracle の ROWNUM と同様で、データには表示されません。

挿入、更新および削除のサポート

挿入、更新、削除の各操作はネイティブ TAB データ ソース プロバイダで以下の制限のもとにサポートされます。

  • 名前付きテーブルの作成または編集時に Spatial Manager 内のある設定を使用して、ユーザに必要な操作権限がある適格な TAB ファイル (Windows の Native および NativeX タイプのファイル) の読み取り専用属性をオン/オフできます。ただし、このとき TAB ファイルのメタデータに読み取り専用フラグが立っているかどうか、つまりファイル システム レベルで読み取り専用かどうかは考慮されません。
  • これらの操作は Spectrum™ Technology Platform インストレーションの単一のインスタンスでのみサポートされます。一方、クラスタ環境ではサポートされません。ファイルの複数のコピーが各ノードに存在するためにファイルの内部的な無矛盾性が失われるか、ファイル共有が使われているためです。クラスタ環境のパフォーマンスとスケーラビリティを考えると、RDBMS ベースのデータ ソース (SQL Server、PostGIS、Oracle など) は書き込み用で使うべきです。Native および NativeX タイプの TAB ファイルは、データベースと同様の使い方を想定していません。
  • これらの操作は Spectrum™ Technology Platform インスタンスにローカルな TAB ファイルでのみサポートされます。ネットワーク共有上の TAB ファイルではサポートされません。ファイル共有経由で TAB ファイルに書き込みを行うとパフォーマンスと信頼性が低下するからです。
  • TAB ファイルからのデータの読み取りに Read Spatial Data または Query Spatial Data ステージを使い、同じデータフロー内の Write Spatial Data ステージを使って当該 TAB ファイルの更新または削除操作を実行することはお勧めしません。状況によってはデッドロックが発生し、ファイルが読み取りでロックして書き込みが行えなくなることがあるからです。コミット間隔を同じ TAB から読み込むレコード数よりも大きく設定しない限り、これが意図したとおりに機能することはありません。実行に時間のかかる挿入、更新、または削除操作がデータフロー内にあるとき、別のサービス (Mapping、Feature、Map Tiling サービスなど) から同じ TAB ファイルに対して読み取り操作が実行されると、TAB ファイルのロック状態が発生して読み取りリクエストが失敗する可能性もあります。
  • ネイティブ TAB ファイルの書き込み操作で Feature サービスを使うと、その書き込み操作が完了するまで当該ファイルに対するすべての読み取りリクエストが待ち状態になります。また、同じ TAB ファイルに対して複数の読み取りリクエストを並行して実行でき、その場合、TAB ファイルに対するすべての読み取りリクエストが完了するまで書き込みリクエストは待ち状態になります。
  • ネイティブ TAB ファイルに対してマルチプロセス書き込みアクセスは許可されません (例えば、MapInfo Pro などの別のツールが読み取ろうとしている TAB ファイルへの書き込みは実行できません)。この書き込み操作は失敗し、TAB ファイルは内部的に矛盾した状態になるか破壊されます。

MI SQL の最適化

ネイティブ TAB データ ソース プロバイダには、次の MI SQL コンストラクトの最適化が含まれています。

詳細については、付録のデータ ソース プロバイダへの委任を参照してください。

データ ソースの可変性

ネイティブ TAB データ ソースの場合、タイムスタンプの変更によって確認される、テーブルのスキーマまたはレコードに対する任意の変更が可変性にあたります。可変性を有効 (true) にすると、データ ソース プロバイダでは、特定の TAB グループのファイルに関する情報がキャッシュされます。キャッシュされた情報のタイム スタンプと、アクセスするファイルのタイム スタンプが比較されます。これらのタイム スタンプが異なる場合、キャッシュから情報がフラッシュされ、再度読み込まれます。

可変性がチェックされるネイティブ TAB ファイルは、.TAB、.DAT、.MAP です。

挿入、更新、または削除操作は、可変タイプと非可変タイプのどちらのネイティブ TAB ファイルでも実行できます。TAB ファイルを書き込みアクセスで有効にするときは可変性も有効にすることをお勧めします。

詳細については、データ ソースの可変性を参照してください。

ファイル ハンドル プール

ネイティブ TAB ファイルが頻繁に変更されない場合は、可変性を false に設定して、ファイル ハンドル プールを利用します。これにより、操作時のファイルの開閉を最小限に抑えることができます。これは、非可変性のネイティブおよびシームレス TAB ファイルとシェイプファイルにのみ使用できます。非可変タイプのテーブルでは、挿入、更新、削除操作の実行前にファイル ハンドルがプールから解放されます。

ファイル ハンドル プールは、デフォルトで有効になります。ファイル ハンドル プールの設定は、tab-file-handle-pool.properties ファイルを使って行います。このファイルは \server\modules\spatial フォルダにあります。使用できるプロパティとして、プールに割り当てることができるハンドルの最大数 (maxTotal)、1 つのファイルに割り当てることができるハンドルの最大数 (maxTotalPerKey)、プールに保持されたファイル ハンドルが閉じられるまでの最小不使用時間 (minEvictableIdleTimeMillis) などがあります。ネイティブ TAB のファイル ハンドル キャッシュの統計情報は、JMX コンソールで参照できます (詳細は、『Spectrum Spatial ガイド』の「管理」セクションの「JMX コンソールによる、ファイル ハンドル キャッシュ統計の監視」を参照してください)。

ファイル ハンドル プールをオフにするには、\server\modules\spatial\pool-tab.properties ファイルを開き、tab.cache.enabled に false を設定します。この設定変更を反映するには、サーバーを再起動する必要があります。あるいは、JMX コンソールからファイル ハンドル プールを無効化すれば、サーバーを再起動しなくてもファイル ハンドル キャッシュをクリアできます。