【くうかんでーたべーす】

空間データベース とは?

💡 「この近くのお店は?」に答えられるデータベース
📌 このページのポイント
空間データベース(位置情報の検索) 半径 1km 現在地 カフェ 書店 薬局 公園 空間クエリの例 距離検索 1km以内の店舗 包含判定 この地域に含まれる? 交差判定 2つの区域は重なる? 最近傍検索 最も近い病院は?
空間データベースのイメージ
ひよこ ひよこ

空間データベースって普通のデータベースと何が違うの?

ペンギン先生 ペンギン先生

普通のデータベースは数値や文字を扱うけど、空間データベースは「点・線・面」といった地理情報を扱えるんだよ。たとえばお店の位置(緯度・経度)や、市区町村の境界線(ポリゴン)を保存できるんだ

ひよこ ひよこ

普通のデータベースに緯度と経度を入れるだけじゃダメなの?

ペンギン先生 ペンギン先生

単純な検索なら可能だけど、「半径500m以内のレストラン」や「この地域に含まれる建物」みたいな空間的な検索は、専用の機能がないと非常に遅くなるんだ。空間インデックスがあれば一瞬だよ

ひよこ ひよこ

どんなアプリで使われてるの?

ペンギン先生 ペンギン先生

地図アプリ、配車サービス、不動産検索、災害マップ、物流の配送ルート最適化など、位置情報を扱うサービスにはほぼ必ず使われているよ

ひよこ ひよこ

空間インデックスってどういう仕組みなの?

ペンギン先生 ペンギン先生

R-tree(アールツリー)という木構造が一般的だよ。空間をどんどん小さな矩形に分割して、検索範囲に重なる矩形だけを探索するんだ。普通のB-treeインデックスでは1次元のデータしか効率よく探索できないけど、R-treeなら2次元・3次元でも高速に検索できるんだよ

ひよこ ひよこ

実際に使うにはどうすればいいの?

ペンギン先生 ペンギン先生

PostgreSQLPostGISという拡張を入れるのが最もポピュラーだよ。MySQLにも空間機能があるし、クラウドではAmazon Location ServiceやGoogle BigQuery GISなども使えるんだ。最近はモバイルアプリでもSQLiteのSpatiaLite拡張が使われることがあるね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「空間データベース」って出てきたら「地図や位置情報を扱えるデータベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Spatial Database」 = 空間データベース
💬 spatial(空間の)という意味で、2次元・3次元の位置や形を扱えるデータベースのことだよ
← 用語集にもどる