Задать вопрос
SunnyPh
@SunnyPh
ASP.NET Core (MVC, Razor Pages, Blazor)

Выбор между SQL и NoSQL документооринтированной базой данных?

Задача, создание оптимальной архитектуры веб приложения для каталога разлчных объектов с гео привязкой, с возможностью фильтрации объектов по категориям, с текстовым поиском из описания объектов, с локальным поиском по удаленности от пользоателя. Фронтенд - NEXTJS, бекенд API ASP.NET с штатной ASP.NET Identity + PostgreSQL для учета пользователей. Проблема в том что гео объекты или точнее страницы о них, будут иметь неограниченное количество дополнтительных полей (свойств), но при этом поиск должен прводиться в одном пуле (наборе) объектов как по отдельным полям объектов так и по Geo. Какую базу данных выбрать для этого кроме PostgreSQL, это MongoDb или RavenDb или ...?
  • Вопрос задан
  • 1008 просмотров
Подписаться 2 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    JVA-I-003 Работа с базами данных в Java
    1 неделя
    Далее
  • Нетология
    Продвинутый SQL
    5 недель
    Далее
  • Академия Эдюсон
    SQL-разработчик: тариф Базовый
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Тут нет никакого выбора.

Первое, что надо понять - это что в "веб приложении", да ещё и с "архитектурой", должна быть база данных. Без неё просто не обойтись. А из всего перечисленного базой данных является только постргес.
(те, кто почему-то до сих пор не избавился от иллюзий, или просто стал жертвой незамысловатой рекламы, могут почитать, почему MongoDB базой данных не является).

Второе, что надо понимать - это что в нагруженных приложениях база данных никогда не используется одна сама по себе. Для выполнения различных дополнительных задач используются специализированные движки. Например
  • кликхаус для аналитики
  • редис для кэширования
  • эластик для поиска
  • сентри для логов
  • и так далее - вариантов масса

Соответственно, если говорить про базу данных, то выбор очевиден - Постгрес.
Но если речь про поиск, то так и надо формулировать - "что использовать для поиска по базе данных?". И тут ответ тоже будет очевидный - Эластик (ну или любой другой поисковый движок - солр, мантикора, и так далее). Который и будет искать по информации, хранящейся в базе данных.

Но это только если у вас действительно веб-приложение. Если же у вас стильный энергичный молодёжный стартап, целью которого является проесть деньги инвестора, то Монго - а ещё лучше Равен - будет идеальным выбором. Это же мечта любого говнокодера маститого разработчика - не нужно корпеть над структурой базы данных, мучиться с внешними ключами, вдумчиво расставлять индексы - а просто валить всё в одну кучу!
Ответ написан
В postgres можно искать по геоиндексам при помощи postgis.
Для текстового поиска по описанию в постгресе есть полнотекстовый поиск.
Произвольные поля можно добавить через колонку с jsonb.

Так как нет никаких дополнительных данных, по которым можно было бы выбрать, я бы предложил взять постгрес, тк он вроде как все перечисленные нужды закрывает и не будет раздувать инфраструктуру, ведь вы уже собираетесь его использовать для хранения пользователей.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Казань
от 75 000 до 125 000 ₽
Инком Нижний Новгород
от 160 000 до 230 000 ₽
Инком Нижний Новгород
от 160 000 до 230 000 ₽