PostgreSQL PostGIS vs ElasticSearch Пространственный поиск

Я работаю над поисковым запросом, который должен делать геопространственный фильтр (т.е. фильтровать все элементы за пределами определенного радиуса). У нас есть как PostgreSQL, так и ElasticSearch как часть нашей инфраструктуры, и я оцениваю, какой из них использовать.

Я не прошу "что лучше", но объективный список "плюсы и минусы" был бы полезен с точки зрения простоты внедрения, производительности, масштабируемости и т.д.

Ответ 1

Postgis масштабируется так же, как и в postgresql. Индекс postgis будет работать так же, как и другие реляционные, вы можете проверить это здесь.

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

В то время как elasticsearch имеет индексирование в реальном времени, основанное на индексе Lucene.

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

Postgresql использует модель ACID, которая может быть недостатком в тяжелых приложениях реального времени.

В то время как

Elasticsearch - это поисковая система, предназначенная для поиска в режиме реального времени.

Вам нужно решить, какой тип поиска вам нужен на основе конкретной задачи?

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