SailsJS — связанные записи и встроенная коллекция

Я использую SailsJS/Waterline ORM с базой данных Mongo. Это приложение, работающее в реальном времени, поэтому паб/подписка Sails sockets.io активно используется.

У меня есть несколько экземпляров в моем приложении, которые требуют ассоциаций "многие ко многим" и "многие к одному".

Я вполне уверен, что смогу установить отношения «многие к *» со встроенными коллекциями, однако ассоциации с водяными линиями кажутся немного чище (например, доступ к publishAdd()).

Вопрос: как лучше всего (для моего текущего стека) подключать/связывать данные (встроенные или связанные)? Есть ли снижение производительности связанных записей из-за дополнительных запросов?


person mcnamee    schedule 28.06.2015    source источник


Ответы (1)


Задайте себе эти вопросы:

<сильный>1. Собираюсь ли я просто создавать/читать эти связанные или встроенные коллекции?

OR

<сильный>2. Требуется ли много операций обновления/удаления для этих коллекций?

  1. Если ваш ответ больше склоняется к Q1, то можно использовать Embedded Collections. Они ускоряют доступ, запрашивая только одну коллекцию за раз. Его также проще реализовать.

НО

Если ваш ответ больше склоняется к Q2, то вам нужны ассоциации. У этого подхода есть много преимуществ:

  1. Операции обновления/удаления не требуют обновления/удаления встроенного документа во всех коллекциях, в которые он встроен.

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

  3. Каждая встроенная коллекция будет иметь свою собственную модель и, следовательно, собственную структуру, что делает код более организованным, более простым в обслуживании и более понятным.

Не стесняйтесь добавлять свои собственные указатели, если вы обнаружите еще какие-то плюсы и минусы в ходе реализации. Удачи!

person myusuf    schedule 06.07.2015