8

幾何学的形状をデータベースに保存する必要があるアプリケーションを設計しています。データベース管理システムをまだ選択していません。

私のアプリケーションでは、すべてのデータベース クエリが入力としてバウンディング ボックスを持ち、出力としてそのデータベース内のすべての形状が必要です。この種のアプリケーションには、空間インデックスを持つデータベースが使用されることを知っています。しかし、私のアプリケーションでは、「x/y の近くにあるオブジェクトをくれ」というタイプのクエリや、GIS アプリケーションで役立つその他のより複雑なクエリはありません

空間インデックスのないデータベースを計画しており、クエリは次のようになります。

SELECT * FROM shapes WHERE x < max_x AND x > min_x AND y < max_y AND y > min_y

また、列およびに索引を付けます。私が見る限り、空間インデックスを備えたデータベースは実際には必要ありませんが、私のアプリケーションはその種のアプリケーションに近いものです。x (double)y (double)

また、クエリを近くに置きたい場合でも、そのポイントの周りに十分な大きさのバウンディング ボックスを作成できます。それとも、これはパフォーマンスの低下につながりますか?

空間データベースは本当に必要ですか? また、空間インデックスが必要になるのはいつですか?

EDIT: 検索クエリは、実際には上で書いたものよりも少し高度になります。これは、幾何学的形状を扱うため、ボックスの内側にあるか、ボックスに干渉する複数の形状(バウンディングボックス付き)を返すバウンディングボックスを入力しますクエリで。しかし、すべての良い答えを読んだ後でも、空間インデックスなしでこれを行うことができると思います。

4

4 に答える 4

2

本当に空間データベースが必要ですか?

あなたがしていることはあなたのアプリケーションにとってうまくいくようです。

また、近くにクエリが必要な場合でも、そのポイントの周囲に十分な大きさのバウンディングボックスを作成できます。

代わりに、ジオハッシュにインデックスを作成することを検討することをお勧めします。この方法は、インデックス機能が制限されているGoogleAppEngineで地理空間ポイントのインデックスを作成する場合に推奨されます。(出典

そして、いつ空間インデックスが必要ですか?

空間インデックスが役立つシナリオはたくさんあります。まず、空間インデックスは、ポイントだけでなく、ポリライン、ポリゴン、その他の形状も処理できます。さらに、すでに述べたように、適切な空間インデックスが不可欠な空間データに適用できる複雑なクエリ操作が多数あります。

于 2010-03-31T22:45:43.263 に答える
2

既存の優れた回答に追加するために、ここではパフォーマンスが重要な場合と重要でない場合があります。

x軸とy軸に対して2つの範囲クエリを実行し、結果の交差を取得することによって空間インデックス範囲クエリをシミュレートする場合、交差前に必要なデータよりもはるかに多くのデータを返す可能性のある2つのクエリを実行します。

一方、このようなクエリは空間インデックスによってネイティブにサポートされているため、効率的に回答されます。

全体として、空間クエリがボトルネックである場合は、空間インデックスを使用する必要があります。

于 2010-04-07T07:56:20.770 に答える
2

いいえ、これには空間インデックスは必要ありません。

空間インデックスは、オブジェクト間の距離を計算したり、ポイントが別のポイントの特定の半径内にあるかどうかを確認したりするために必要です...ほとんどの場合、地理座標を考慮する必要があります。南半球、北半球など... 地球のカーブを考慮すると距離が少し変わります。

x と y の両方を常に探している場合は、両方の項目に同時にインデックスを作成することでメリットが得られます。つまり、列 x のインデックスと列 y のインデックスではなく、列 x と y を組み合わせたインデックスです。

于 2010-03-31T22:38:11.033 に答える
1

すでに行っていることを超えないのであれば、そのことについては空間インデックスやGISは必要ありません。ただし、私はあなたの要件が何であるか、そしてアプリケーションがGISシステムを必要とするように成長する可能性を慎重に検討します。この移行については、後よりも早く計画するよりも優れています。

GISにはいくつかの利点があります。まず、GISには、ジオメトリに必要なすべてのものを格納するための特別な形状列があります。空間参照、座標メタデータなどを管理します。GISは、空間関係に基づいてデータをクエリし、ジオメトリ(ユニオン、抽出、バッファなど)を変更するための強力なメソッドを提供します。ポイント、ライン、ポリゴンなどを処理します。トポロジ操作から新しい形状を導き出すことができます。さらに、ほとんどすべてのGISシステムは、データをレンダリングするための手段を提供します(これは、実際には選択したGISによって異なりますが、存在する場合は、大量の作業を節約できます)。

真のGIS環境がある場合にのみ、空間インデックスが必要になります。GIS環境を選択する場合は、はい、空間インデックスを使用してください。実際には、空間インデックスなしで作業する必要はありません。

于 2010-03-31T22:42:37.873 に答える