Я разрабатываю приложение, которое должно сохранить геометрические фигуры в базе данных. Я еще не выбрал систему управления базами данных.
В моем приложении все запросы базы данных будут иметь ограничительную рамку, как введено, и, как произведено я хочу все формы в той базе данных. Я знаю, что базы данных с пространственным индексом используются для этого вида приложения. Но в моем приложении не будет никаких запросов типа, "дают мне, возражает соседнему 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)
. Как долго я вижу, мне действительно не нужна база данных с пространственным индексом, как бы ни мое приложение близко к таким приложениям.
И даже если я хотел бы иметь соседние запросы, затем я мог бы создать достаточно большую ограничительную рамку вокруг той точки. Или это приведет к низкой производительности?
Мне действительно нужна пространственная база данных? И когда пространственный индекс необходим?
Править: Поисковые запросы будут на самом деле немного больше усовершенствованы, чем тот, который я записал выше, так как я имею дело с геометрическими фигурами, я введу Ограничительную рамку, которая возвратит несколько форм (с ограничительной рамкой), которые являются внутри или вмешиваются в поле в запросе. Но я все еще думаю, что могу сделать это без пространственного индекса, после чтение всех хороших ответов.
Действительно ли мне нужна пространственная база данных?
Похоже, то, что вы делаете, отлично подойдет для вашего приложения.
И даже если я хочу, чтобы рядом было запросов, я мог бы создать достаточно большую ограничивающую рамку вокруг этой точки.
Вместо этого вы можете создать индекс для Geohash . Этот метод рекомендуется для индексации геопространственных точек в Google App Engine, например, если функции индексирования ограничены. ( Источник )
А когда нужен пространственный индекс?
Есть много сценариев, в которых пространственный индекс полезен. Во-первых, пространственные индексы могут иметь дело не только с точками, но и с полилиниями, многоугольниками и другими формами. Кроме того, как вы уже упоминали, существует множество сложных операций запроса, которые можно применить к пространственным данным, где необходим правильный пространственный индекс.
Чтобы добавить к существующим отличным ответам, производительность здесь может быть, а может и не иметь значения.
Если вы моделируете запрос диапазона пространственного индекса, выполняя два запроса диапазона для осей x и y и взяв пересечение результатов, вы, ну, выполняете два запроса, которые могут вернуть гораздо больше данных, чем требовалось до пересечения.
С другой стороны, такой запрос изначально поддерживается пространственным индексом и, как таковой, на него будет дан эффективный ответ.
В общем, если ваши пространственные запросы являются узким местом, вам нужно будет использовать пространственный индекс.
Нет, для этого вам не нужен пространственный индекс.
Пространственные индексы необходимы для расчета расстояния между объектами, определения того, находится ли точка в пределах определенного радиуса от другой точки и т. Д., В основном, когда вам нужно принимать во внимание географические координаты. Южное полушарие, северное полушарие и т.д ... все это немного меняет расстояние, когда вам нужно принимать во внимание кривую Земли.
Если вы всегда ищете и x, и y, вам будет полезно иметь индекс для обоих элементов одновременно. Итак ... не индекс столбца x и индекс столбца y, а индекс столбца x и y вместе.
Если вы не выходите за рамки того, что уже делаете, вам не нужен ни пространственный индекс, ни ГИС. Однако я бы тщательно проанализировал ваши требования и вероятность того, что приложению понадобится система ГИС. Лучше планировать этот переход раньше, чем позже".
ГИС дает вам несколько преимуществ. Во-первых, ГИС имеет специальный столбец форм для хранения всего необходимого о геометрии. Она управляет пространственными ссылками, метаданными координат и т.д. ГИС предоставляет мощные методы для запроса данных на основе пространственных отношений и модификации геометрии (объединения, извлечения, буферы и т.д.). Она работает с точками, линиями, полигонами и т.д. Вы можете создавать новые формы на основе топологических операций. Кроме того, почти все ГИС-системы предоставляют средства для визуализации данных (это зависит от того, какую ГИС вы выберете, но если они есть, это сэкономит вам массу работы).
Пространственные индексы понадобятся вам только в том случае, если вы используете настоящую среду ГИС. Если вы выбираете среду ГИС, да, используйте пространственные индексы - вы просто не захотите работать без них.