Lindorm GanosBase は、Lindorm のワイドテーブルエンジンである LindormTable 上にネイティブに構築された時空間データエンジンです。空間データ型、時空間インデックス、および PostGIS 互換関数で LindormTable を拡張し、分散ワイドテーブルストアのスループットとコスト特性で、大規模な軌跡データの保存、クエリ、分析を可能にします。
お使いのアプリケーションが IoV (Internet of Vehicles)、IoT (モノのインターネット)、物流、自動運転、旅行、ナビゲーション、または地理情報システム (GIS) のワークロードからの軌跡データを処理する場合、GanosBase はその規模に合わせて設計されています。
GanosBase のユースケース
GanosBase は、次のようなニーズに適合します:
アプリケーションが時空間範囲クエリ (たとえば、過去 1 時間に特定のエリアを通過したすべての車両の検索) を実行する場合。
オブジェクトが定義された境界に出入りするタイミングを検出するために、リアルタイムジオフェンシングが必要な場合。
半径内の POI (points of interest) の検索など、位置情報サービスを実行する場合。
大量の履歴軌跡データがあり、コスト効率よく圧縮してアーカイブする必要がある場合。
既存のアプリが PostGIS、GeoMesa、MongoDB、または Redis の空間機能を使用していて、分散型でスケーラブルなバックエンドに移行したい場合。
仕組み
時空間データベースは、3 つの機能によって定義されます。 GanosBase は、これら 3 つすべてを LindormTable に追加します:
空間データ型 — ポイント、 LineString、 ポリゴンなどの標準的なジオメトリオブジェクト。
時空間インデックス — 多次元座標 (空間、または空間 + 時間) を 1 次元のキーにマッピングする Z オーダーインデックス。これにより、冗長なレプリカを保存することなく、効率的な範囲スキャンが可能になります。
時空間関数 — アクセス、空間関係、データ処理、および計測をカバーする PostGIS 互換の関数ライブラリ。
GanosBase は、これらの機能を 3 つのインターフェイスを介して公開します。 既存のスタックに一致するものを選択してください。
対応インターフェイス
| インターフェイス | エントリポイント | 最適な用途 | パフォーマンス |
|---|---|---|---|
| GanosBase SQL | 標準 SQL | PostGIS、GeoMesa、MongoDB、または Redis の空間機能上に構築されたアプリ | オープンソースの GeoMesa よりも優れています (クエリリライト、並列クエリ、シャード、最適化された空間近似アルゴリズム) |
| GanosBase GeoMesa | GeoTools API または ECQL | オープンソースの GeoMesa 上に構築されたアプリ | オープンソースの GeoMesa および HBase よりも優れています |
| ストリーミングエンジン向け GanosBase | 標準 Flink SQL | Flink または Spark のストリーミングパイプライン | インメモリインデックスと並列クエリによる優れたクエリパフォーマンス |
GanosBase SQL
GanosBase SQL は、標準 SQL を通じて時空間機能を提供し、GeoMesa、MongoDB、および Redis のデータ処理機能を単一のインターフェイスでカバーします。
空間データ型
ポイント、 LineString、 ポリゴン — 標準的な OGC ジオメトリオブジェクト。 詳細については、「空間データ型」をご参照ください。
SQL 構文
標準の DDL および DML ステートメントを使用して、時空間テーブルを操作します:
テーブルの作成:CREATE TABLE
データの挿入または更新:UPSERT
データのクエリ:SELECT
完全な構文リファレンスについては、「DDL」および「DML」をご参照ください。
時空間関数
GanosBase SQL には、4 つのカテゴリの PostGIS 互換関数が含まれています:
| カテゴリ | 関数例 |
|---|---|
| アクセス | ST_X |
| 空間関係 | ST_Contains, ST_Intersects |
| データ処理 | ST_Buffer |
| 計測 | ST_Length |
完全な関数リファレンスについては、「概要」をご参照ください。
時空間インデックス
GanosBase SQL は、空間座標または時空間座標を 1 次元のキーとしてエンコードする Z オーダーインデックスを使用します。 これにより、冗長なデータレプリカを保存することなく、空間のみまたは空間 + 時間の条件で効率的な範囲スキャンをサポートします。
プライマリ検索パターンが空間または時空間の場合は、プライマリキーインデックスを使用します:
-- 空間範囲クエリのみ
CREATE TABLE gtest(id INT, g GEOMETRY(POINT), name VARCHAR, PRIMARY KEY(Z-ORDER(g),id));
-- 空間および時間範囲クエリ
CREATE TABLE gtest(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(Z-ORDER(g,t),id));プライマリキー以外の列での時空間クエリを高速化するには、セカンダリインデックスを使用します:
-- 空間範囲クエリのみ
CREATE INDEX idx ON gtest (Z-ORDER(g));
-- 空間および時間範囲クエリ
CREATE INDEX idx ON gtest (Z-ORDER(g,t));GanosBase SQL のセカンダリインデックスにより、時空間クエリをサポートするための冗長なデータレプリカが不要になります。
LindormTable から継承した機能
GanosBase は LindormTable 上に構築されているため、GanosBase SQL テーブルはコールドストレージ、ホット/コールドデータ分離、および動的列もサポートします。 詳細については、デベロッパーガイドをご参照ください。
GanosBase GeoMesa
GanosBase GeoMesa は、オープンソースの GeoMesa または GeoServer 上に構築されたアプリケーション向けのドロップインバックエンドです。 GeoMesa の全機能セットを継承し、GeoTools API および ECQL と互換性があるため、既存の GeoMesa アプリケーションを分散型でスケーラブルなバックエンドに移行できます。
ストリーミングエンジン向け GanosBase
ストリーミングエンジン向け GanosBase は、標準の Flink SQL を通じて Apache Flink に時空間機能を追加します。 このインターフェイスは、位置データや軌跡データを処理する Flink または Spark のストリーミングパイプラインを移行するために設計されています。
主な機能:
すべての標準的な Apache Flink ストリーミングコンピューティング機能
PostGIS 互換の時空間関数の大規模なライブラリ
軌跡データ計算関数
リアルタイムのジオフェンスフィルタリングと軌跡集約
低レイテンシーパフォーマンスを実現するインメモリインデックスと並列クエリ
ユースケース
以下のシナリオは、旅行、ナビゲーション、航空、IoV (Internet of Vehicles)、物流などの業界で GanosBase SQL の適用方法を示しています。
軌跡の保存とクエリ
フリート事業者は、過去 24 時間に特定のエリア内のオブジェクトの軌跡をクエリします。 履歴軌跡データは圧縮およびアーカイブすることで、ストレージコストを削減します。
地理的グリッド集約
都市のモビリティチームは、H3 グリッド集約を使用して地区全体の車両をカウントし、密度をヒートマップとして可視化します。 集約の精度は、必要な粒度に基づいてクエリごとに指定されます。
リアルタイムジオフェンシング
物流プラットフォームは、配送車両が計画ルートから逸脱したときにアラートをトリガーします。 配車アプリは、乗車場所を空間グリッドセルにマッピングすることで、料金ゾーンを決定します。
位置情報サービス
消費者向けアプリは、ユーザーの現在地から 5 km 以内にあるレストランを表示します。