Lindorm GanosBase は、LindormTable(Lindorm のワイドテーブルエンジン)上にネイティブに構築された時空間データエンジンです。LindormTable に空間データの型、時空間インデックス、および PostGIS 互換関数を追加することで、分散型ワイドテーブルストアのスループットおよびコストプロファイルを維持したまま、大規模な軌道データの保存、クエリ実行、および分析を可能にします。
アプリケーションが、インターネット・オブ・ビークルズ(IoV)、モノのインターネット(IoT)、物流、自動運転、旅行、ナビゲーション、または地理情報システム(GIS)ワークロードから軌道データを処理する場合、GanosBase はそのスケールに対応するよう設計されています。
GanosBase を使用するタイミング
以下のいずれかに該当する場合、GanosBase が適しています。
アプリケーションで時空間範囲クエリを実行する場合 — たとえば、過去 1 時間以内に特定エリアを通過したすべての車両を検索する場合。
オブジェクトが定義済みの境界内へ進入または離脱したことをリアルタイムで検出するためのジオフェンシング機能が必要な場合。
半径内におけるポイント・オブ・インタレスト(POI)を検索するなど、位置情報サービスを実装する場合。
大量の履歴軌道データを保有しており、コスト効率よく圧縮およびアーカイブする必要がある場合。
既存のアプリケーションで PostGIS、GeoMesa、MongoDB、または Redis の空間機能を使用しており、分散型かつスケーラブルなバックエンドへ移行したい場合。
仕組み
時空間データベースは、3 つの能力によって定義されます。GanosBase は、これらの能力すべてを LindormTable に追加します。
空間データの型 — ポイント、LineString、ポリゴンなどの標準的な幾何学オブジェクト。
時空間インデックス — 多次元座標(空間、または空間+時間)を 1 次元キーにマッピングする Z-ORDER インデックス。冗長なレプリカを格納せずに効率的な範囲スキャンを実現します。
時空間関数 — アクセス、空間関係性、データ処理、測定をカバーする PostGIS 互換の関数ライブラリ。
GanosBase は、これらの能力を 3 つのインターフェイスを通じて提供します。ご利用中の技術スタックに最も適合するインターフェイスをお選びください。
サポートされるインターフェイス
| インターフェイス | エントリポイント | 推奨用途 | パフォーマンス |
|---|---|---|---|
| GanosBase SQL | 標準 SQL | PostGIS、GeoMesa、MongoDB、または Redis の空間機能を活用するアプリケーション | オープンソース版 GeoMesa(クエリリライト、並列クエリ、シャード、最適化された空間近似アルゴリズム)を上回る |
| GanosBase GeoMesa | GeoTools API または ECQL | オープンソース版 GeoMesa を活用するアプリケーション | オープンソース版 GeoMesa および HBase を上回る |
| GanosBase for streaming engines | 標準 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 では Z-ORDER インデックスを使用し、空間または時空間座標を 1 次元キーとして符号化します。これにより、冗長なデータレプリカを格納することなく、空間のみまたは空間+時間の条件に対する効率的な範囲スキャンをサポートします。
主な検索パターンが空間または時空間である場合は、主キーインデックスをご利用ください。
-- 空間範囲クエリのみ
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 for streaming engines
GanosBase for streaming engines は、標準 Flink SQL を通じて Apache Flink に時空間機能を追加します。位置情報または軌道データを処理する Flink または Spark のストリーミングパイプラインの移行を目的として設計されています。
主な機能:
すべての標準 Apache Flink ストリーミング計算機能
PostGIS 互換の時空間関数の大規模ライブラリ
軌道データ計算関数
リアルタイムジオフェンスフィルタリングおよび軌道集約
低遅延パフォーマンスを実現するためのメモリ内インデックスおよび並列クエリ
ユースケース
以下は、旅行、ナビゲーション、航空、インターネット・オブ・ビークルズ(IoV)、物流など、さまざまな業界における GanosBase SQL の適用例です。GanosBaseGanosBaseGanosBase
軌道データの保存およびクエリ実行
フリート事業者が、過去 24 時間以内に特定エリア内を通過した対象の軌道をクエリ実行します。履歴軌道データはストレージコスト削減のため、圧縮およびアーカイブされます。
地理グリッド集約
都市のモビリティチームが、H3 グリッド集約を用いて各区画の車両台数をカウントし、密度をヒートマップとして可視化します。集約精度は、必要な粒度に応じてクエリごとに指定可能です。
リアルタイムジオフェンス
物流プラットフォームが、配達車両が計画ルートから逸脱した際にアラートをトリガーします。ライドシェアアプリは、乗車地点を空間グリッドセルにマッピングすることで、料金ゾーンを決定します。
位置情報サービス
消費者向けアプリが、ユーザーの現在地から 5 km 圏内にあるレストランを表示します。