@topuserman

Документоориентированная или реляционная база данных (для моей задачи)?

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

Кроме бизнесовой задачи, также известно, что в иногда могут появляться новые типы дверей (со своими особенностями - например, пусть это будет Замок), и нужно будет доработать конфигуратор, чтобы после этапа выбора дверей, можно было указать, какой замок нам нужен для выбранной двери.

Про двери, написал для примера.

Хочется спроектировать все таким образом, чтобы минимизировать трудозатраты при расширении функционала, и не пришлось переделывать базу данных.

Я знаю как это сделать на реляционном БД, но также понимаю, насколько сложно будет расширять функционал, добавлять новые сущности и т.д.

Подумал, что может в этом случае, уместнее будет использоваться документоориентированную бд ? опыта работы с таким типом бд у меня нет. поэтому возникли такие вопросы:

1. подойдет ли такой тип бд для моей задачи ?
2. я читал, что в документоориентированной бд проблематично выделать выборки с джоинами (join).
Правда ли это ? если да, то как быть, если у меня много типов документов, например:
- основание для шкафа
- стены для шкафа
- двери для шкафа
- полки для шкафа
- ...

неужели в этом случае, нужно делать N-запросов к БД и поочередно запрашивать данные из разных типов документов ?
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
7workers
@7workers
можно хранить всё в одной коллекции:

{
   "type": "полка",
   "size":{
      "width": 45,
      "height": 34
    }
}

{
   "type": "стена",
   "size":{
      "width": 11,
      "height": 500
    },
    "holes": 3
}


так что для хранения "зоопарка" и поиска по нему mongoDB подходит.
если будут связи с другими таблицами, могут быть проблемы, потому что JOIN-ы сделать непросто.

лучше прикинуть структуру данных со связями и тогда может будет яснее
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Для ответа надо просто определиться с уровнем нормализации, границами транзакций и структурой объектов системы.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы