Использование MySQL JSON-поля для множества атрибутов или переключение на MongoDB - PullRequest
0 голосов
/ 02 июля 2018

В моем веб-приложении есть транспортные средства, и у каждого транспортного средства может быть много атрибутов (например, color, power, doors и т. Д.). Некоторые из этих атрибутов требуются системой (например, color и power), другие являются необязательными или могут добавляться пользователем динамически (например, has_tow_coupling).

Теперь мне интересно использовать решение nosql (в моем случае mongodb) или придерживаться mysql и использовать тип поля json, поскольку его можно легко расширять новыми атрибутами. Я использую Laravel, поэтому могу выполнять запросы where к этим json-полям.

Один из подходов состоит в том, чтобы определить необходимые атрибуты в виде столбцов и поместить все эти динамические элементы в json-поле с именем attributes. Еще одна попытка - переключиться на MongoDB.

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

Итак, у меня есть следующие варианты:

  1. Придерживайтесь MySQL, используя тип поля JSON и виртуально созданные столбцы (благодаря @JonasStaudenmeir)
  2. Переключить полное приложение на MongoDB
  3. Поменять транспортные средства на MongoDB и использовать MySQL для остальной части приложения

Мои опасения:

  1. Потеря производительности при запросе таблицы с большим количеством записей (и фактически генерируемых столбцов)
  2. Простота изучения / обучения, так как я никогда не работал с NoSQL до
  3. Поддерживаемость, поскольку части приложения используют mysql, а другие используют mongodb

Как лучше всего решить мою проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...