Мне нужен пространственный индекс в моей базе данных?

Я разрабатываю приложение, которое должно сохранить геометрические фигуры в базе данных. Я еще не выбрал систему управления базами данных.

В моем приложении все запросы базы данных будут иметь ограничительную рамку, как введено, и, как произведено я хочу все формы в той базе данных. Я знаю, что базы данных с пространственным индексом используются для этого вида приложения. Но в моем приложении не будет никаких запросов типа, "дают мне, возражает соседнему x/y" или другим более сложным запросам, которые полезны в ГИС-приложении.

Я планирую наличия базы данных без пространственного индекса и имею сходство с запросов:

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

И имейте индекс на столбцах x (double) и y (double). Как долго я вижу, мне действительно не нужна база данных с пространственным индексом, как бы ни мое приложение близко к таким приложениям.

И даже если я хотел бы иметь соседние запросы, затем я мог бы создать достаточно большую ограничительную рамку вокруг той точки. Или это приведет к низкой производительности?

Мне действительно нужна пространственная база данных? И когда пространственный индекс необходим?

Править: Поисковые запросы будут на самом деле немного больше усовершенствованы, чем тот, который я записал выше, так как я имею дело с геометрическими фигурами, я введу Ограничительную рамку, которая возвратит несколько форм (с ограничительной рамкой), которые являются внутри или вмешиваются в поле в запросе. Но я все еще думаю, что могу сделать это без пространственного индекса, после чтение всех хороших ответов.

8
задан Jonas 1 April 2010 в 20:02
поделиться

4 ответа

Действительно ли мне нужна пространственная база данных?

Похоже, то, что вы делаете, отлично подойдет для вашего приложения.

И даже если я хочу, чтобы рядом было запросов, я мог бы создать достаточно большую ограничивающую рамку вокруг этой точки.

Вместо этого вы можете создать индекс для Geohash . Этот метод рекомендуется для индексации геопространственных точек в Google App Engine, например, если функции индексирования ограничены. ( Источник )

А когда нужен пространственный индекс?

Есть много сценариев, в которых пространственный индекс полезен. Во-первых, пространственные индексы могут иметь дело не только с точками, но и с полилиниями, многоугольниками и другими формами. Кроме того, как вы уже упоминали, существует множество сложных операций запроса, которые можно применить к пространственным данным, где необходим правильный пространственный индекс.

2
ответ дан 5 December 2019 в 21:17
поделиться

Чтобы добавить к существующим отличным ответам, производительность здесь может быть, а может и не иметь значения.

Если вы моделируете запрос диапазона пространственного индекса, выполняя два запроса диапазона для осей x и y и взяв пересечение результатов, вы, ну, выполняете два запроса, которые могут вернуть гораздо больше данных, чем требовалось до пересечения.

С другой стороны, такой запрос изначально поддерживается пространственным индексом и, как таковой, на него будет дан эффективный ответ.

В общем, если ваши пространственные запросы являются узким местом, вам нужно будет использовать пространственный индекс.

2
ответ дан 5 December 2019 в 21:17
поделиться

Нет, для этого вам не нужен пространственный индекс.

Пространственные индексы необходимы для расчета расстояния между объектами, определения того, находится ли точка в пределах определенного радиуса от другой точки и т. Д., В основном, когда вам нужно принимать во внимание географические координаты. Южное полушарие, северное полушарие и т.д ... все это немного меняет расстояние, когда вам нужно принимать во внимание кривую Земли.

Если вы всегда ищете и x, и y, вам будет полезно иметь индекс для обоих элементов одновременно. Итак ... не индекс столбца x и индекс столбца y, а индекс столбца x и y вместе.

2
ответ дан 5 December 2019 в 21:17
поделиться

Если вы не выходите за рамки того, что уже делаете, вам не нужен ни пространственный индекс, ни ГИС. Однако я бы тщательно проанализировал ваши требования и вероятность того, что приложению понадобится система ГИС. Лучше планировать этот переход раньше, чем позже".

ГИС дает вам несколько преимуществ. Во-первых, ГИС имеет специальный столбец форм для хранения всего необходимого о геометрии. Она управляет пространственными ссылками, метаданными координат и т.д. ГИС предоставляет мощные методы для запроса данных на основе пространственных отношений и модификации геометрии (объединения, извлечения, буферы и т.д.). Она работает с точками, линиями, полигонами и т.д. Вы можете создавать новые формы на основе топологических операций. Кроме того, почти все ГИС-системы предоставляют средства для визуализации данных (это зависит от того, какую ГИС вы выберете, но если они есть, это сэкономит вам массу работы).

Пространственные индексы понадобятся вам только в том случае, если вы используете настоящую среду ГИС. Если вы выбираете среду ГИС, да, используйте пространственные индексы - вы просто не захотите работать без них.

1
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: