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

MongoEngine:EmbeddedDocument v/s. ReferenceField

Отговорът на това наистина зависи от това какво възнамерявате да правите с данните, които съхранявате в mongodb. Важно е да запомните, че ReferenceField ще сочи към документ в друга колекция в mongodb, докато EmbeddedDocument се съхранява в същия документ в същата колекция.

Разгледайте тази схема:

Person
    -> name
    -> address

Address
    -> street
    -> city
    -> country

Ако очаквате всеки човек да има само един адрес и всеки адрес да бъде свързан само с едно лице (връзка едно към едно) и обикновено ще направите заявка в базата данни за едно или повече Person документи, тогава полето Person.address трябва да бъде EmbeddedDocumentField .

Ако очаквате всеки човек да има повече от един адрес, но всеки адрес ще бъде асоцииран само с един човек (връзка „един към много“) и все пак ще търсите основно човек, тогава можете да използвате EmbeddedDocumentListField .

Ако очаквате всеки човек да има повече от един адрес и всеки адрес ще бъде свързан с много хора (връзка много към много), вероятно трябва да използвате ReferenceField .

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

Друг момент, който трябва да имате предвид, е, че освен ако не завъртите изключено mongoengine ще дереферира всяко ReferenceField когато извличате документ - това може да доведе до наказания за производителност с много ReferenceField или препратки към много големи документи.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Конвертиране на JSON структура в BasicDBObject

  2. Как да премахна низ от масив в документ на mongodb?

  3. Mongoose извежда грешка „Полето не е в схема“, когато дефинира поле два пъти

  4. Система за гласуване с Backbone.js

  5. Някакви подробни и конкретни причини защо MongoDB е много по-бърз от SQL DB?