В моем веб-приложении есть транспортные средства, и у каждого транспортного средства может быть много атрибутов (например, color
, power
, doors
и т. Д.). Некоторые из этих атрибутов требуются системой (например, color
и power
), другие являются необязательными или могут добавляться пользователем динамически (например, has_tow_coupling
).
Теперь мне интересно использовать решение nosql (в моем случае mongodb) или придерживаться mysql и использовать тип поля json, поскольку его можно легко расширять новыми атрибутами. Я использую Laravel, поэтому могу выполнять запросы where к этим json-полям.
Один из подходов состоит в том, чтобы определить необходимые атрибуты в виде столбцов и поместить все эти динамические элементы в json-поле с именем attributes
. Еще одна попытка - переключиться на MongoDB.
С одной стороны, я беспокоюсь о проблемах производительности при использовании mysql. С другой стороны, сейчас нет, если было бы хорошо использовать MongoDB для всего приложения, поскольку остальная часть базы данных не так сложна, как аспекты транспортных средств.
Итак, у меня есть следующие варианты:
- Придерживайтесь MySQL, используя тип поля JSON и виртуально созданные столбцы (благодаря @JonasStaudenmeir)
- Переключить полное приложение на MongoDB
- Поменять транспортные средства на MongoDB и использовать MySQL для остальной части приложения
Мои опасения:
- Потеря производительности при запросе таблицы с большим количеством записей (и фактически генерируемых столбцов)
- Простота изучения / обучения, так как я никогда не работал с NoSQL до
- Поддерживаемость, поскольку части приложения используют mysql, а другие используют mongodb
Как лучше всего решить мою проблему?