本記事では、OceanBaseデータベースでスペースカラムを作成する方法を紹介します。
前提条件
GIS機能を使用する前に、ビジネステナントでGISメタデータを設定する必要があります。サーバーに接続した後、以下のコマンドを実行して、default_srs_data_mysql.sqlファイルをデータベースにインポートします。
## $password は、データベースにログインするためのパスワードに置き換える必要があります。
## $localhost は、データベースにログインするためのIPアドレスに置き換える必要があります。
## $tenant_name は、データベースにログインするためのテナント名に置き換える必要があります。
## $port は、データベースのポート番号に置き換える必要があります。
$python /home/admin/oceanbase/bin/import_srs_data.py -p'$password' -h $localhost -P $port -t $tenant_name -f /home/admin/oceanbase/etc/default_srs_data_mysql.sql
以下の結果が返された場合は、データファイルのインポートに成功しました。
INFO: succeed to import srs data
INFO: oceanbase.__all_spatial_reference_systems old result rows -- 1
INFO: oceanbase.__all_spatial_reference_systems new result rows -- 5152
例
OceanBaseデータベースでは、CREATE TABLEまたはALTER TABLEを使用してスペースカラムを作成できます。
CREATE TABLEステートメントを使用して、スペースカラムを持つテーブルを作成する構文例は以下のとおりです:
CREATE TABLE geom (g GEOMETRY);
ALTER TABLEステートメントを使用して、既存のテーブルにスペースカラムを追加または削除する構文例は以下のとおりです:
ALTER TABLE geom ADD pt POINT;
ALTER TABLE geom DROP pt;
以下は、さまざまなジオメトリタイプを持つテーブルを作成する方法を示しています。
-- さまざまなジオメトリタイプを持つテーブルを作成します
CREATE TABLE spatial_data (
id INT AUTO_INCREMENT PRIMARY KEY,
geom_point POINT, -- 点タイプ
geom_linestring LINESTRING not NULL SRID 4326, -- 線タイプ
geom_polygon POLYGON, -- 多角形タイプ
geom_multipoint MULTIPOINT, -- 多点タイプ
geom_multilinestring MULTILINESTRING,-- 多線タイプ
geom_multipolygon MULTIPOLYGON, -- 多多角形タイプ
geom_geometrycollection GEOMETRYCOLLECTION, -- ジオメトリコレクションタイプ
geom_geometry GEOMETRY -- 一般的なジオメトリタイプで、任意のジオメトリ値を格納できます。
);
スペースカラムの作成に関する制約は以下のとおりです:
スペースカラムを定義する際に、SRIDを明示的に指定できます。列にSRIDが定義されていない場合、クエリ時にオプティマイザーはスペースインデックスを選択しませんが、挿入/更新時には依然としてインデックスレコードが生成されます。
スペースカラムに
NOT NULL制約とSRIDが指定された後、そのスペースカラムにスペースインデックスを定義できます。つまり、SRIDが定義された列にのみスペースインデックスを使用できます。スペースカラムにSRIDが定義された後、他のSRID値を挿入するとエラーが発生します。
SRIDに関する制約は以下のとおりです:
スペースカラムに
SRIDが明示的に指定されています。列上のすべてのオブジェクトの
SRIDは同じでなければなりません。