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

空間データベース とは?

公開:
💡 「この近くのお店は?」に答えられるデータベース
📌 このページのポイント
空間データベース(位置情報の検索) 半径 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次元の位置や形を扱えるデータベースのことだよ
← 用語集にもどる