Древовидный алгоритм в Scala vs Earth Box

Мне нужно найти точку, расположенную в заданном радиусе. Теперь у меня есть два варианта: первый - написать свой собственный алгоритм для него (или использовать существующую библиотеку), второй - использовать утилиту postgresql earth_box, и я могу выбрать ее непосредственно из базы данных, используя хранимую процедуру. Каковы плюсы / минусы обоих в контексте веб-приложения?

1 ответ

Я думаю, что использование процедуры earth_box в postgres было бы лучше по следующим причинам:

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

Я определенно рекомендовал бы сначала попробовать подход с использованием Earthbox и использовать нестандартное решение, только если Earthbox абсолютно неэффективен с точки зрения производительности.

Вот более краткая мета-аргументация из поста в блоге, который вы можете проверить:

[...] функция earthbox позволяет нам выполнять простое сравнение, чтобы найти все записи в определенном радиусе. Это делается функцией, возвращая расстояние между точками большого круга, более подробное объяснение находится по адресу http://en.wikipedia.org/wiki/Greatcircle.

(Под мета-аргументацией я подразумеваю, что простота использования earthbox делает его использование простым и легким.)

Другие вопросы по тегам