MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Най-добър модел за представяне на много към много връзки с атрибути в MongoDB

В много отношения API на meteor насърчава плоски релационни документи, но MongoDB е нерелационен хранилище на данни. Този конфликт, за съжаление, е оставен като упражнение за разрешаване на разработчика.

Понятието структура на схемата и присъединяване е огромна тема, която трябва да се обхване в рамките на един отговор, така че ще се опитам да бъда възможно най-кратък.

Причини, поради които трябва да изберете релационен модел

Да приемем, че имате данни за коментари и публикации. Помислете какво би се случило, ако вградите коментари в публикациите си.

  • DDP работи с документи. Всички коментари ще бъдат изпращани всеки път, когато се добави нов коментар в същата публикация.

  • allow и deny правила действат върху документите. Може да е неразумно да се очаква едни и същи правила да важат едновременно както за публикации, така и за коментари.

  • Публикациите са склонни да имат повече смисъл по отношение на колекциите. В горния сценарий не бихме могли лесно да публикуваме списък с коментари, независимо от техните публикации.

  • Релационни бази данни съществуват по основателни причини. Едно от тях е да избегнете проблема с множество модификации, присъщ на второто ви решение.

Причини, поради които трябва да изберете вграден модел

  • Съединенията не се поддържат първоначално от MongoDB и няма основен пакет за създаване на реактивно присъединяване.

Препоръки

Използвайте третото си решение. Според моя опит причините за избора на релационен модел далеч надхвърлят ограниченията, наложени от хранилището на данни. Разбира се, преодоляването на липсата на присъединявания не е лесно, но болката вероятно ще бъде изолирана само от шепа функции за публикуване. Ето някои ресурси, които силно препоръчвам:

  • Как да публикувате връзка много към много в EventedMind. Крис описва точния ви случай на използване в подробности, но той ръчно прави реактивното присъединяване с обратни извиквания за наблюдение, което не препоръчвам.

  • Reactive се присъединява към метеора от Discover Meteor Encyclopedia. Това обхваща основите на това как и защо трябва да се направи реактивно присъединяване.

  • Главата за денормализация от Discover Meteor. Това обхваща много от точките, които направих по-горе, а също така говори за това кога и как да денормализирате някои от вашите данни.

  • Можете да използвате Публикуване с релации, за да присъедините вашите данни. Алтернативните пакети включват:интелигентно публикуване, съставно публикуване и просто публикуване.

Ако имате нужда от повече информация освен това, моля, коментирайте по-долу и аз ще актуализирам отговора си.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB forEach()

  2. Преглед на WiredTiger Storage Engine за MongoDB

  3. Как да изпращам известия с angular.js?

  4. Сортиране по максимално поле на масива, възходящо или низходящо

  5. Намерете стойности, които не съдържат числа в SQL