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

Как да се справяте с взаимоотношенията, докато използвате mongodb

РЕДАКТИРАНЕ:

Току-що намерих отговор на Брендън Макадамс, човек от 10gen, който очевидно е много авторитетен от мен, и той препоръчва да се вграждат документи.

по-стар текст:

Първият е да включите ръчно към всеки коментар ObjectID на потребителя, на когото принадлежат.

comment: { text : "...", 
           date: "...", 
           user: ObjectId("4b866f08234ae01d21d89604"),
           votes: 7 }

Вторият и умен начин е да използвате DBRefs

добавяме допълнителен I/O към нашия диск, губим производителност, прав ли съм? (не съм сигурен как работи това вътрешно), следователно трябва да избягваме свързването, ако е възможно, нали?

Да - ще има още една заявка, но драйверът ще го направи вместо вас - можете да мислите за това като за синтактична захар. Влияе ли върху производителността? Всъщност зависи също :) Една от причините Mongo да е толкова бърз е, че използва файлове с карта на паметта и mongo опитайте най-добре да запазите целия работен набор (плюс индекси) директно в RAM. И на всеки 60 секунди (по подразбиране) той синхронизира моментна снимка на RAM с дисков файл.
Когато казвам работещ набор , имам предвид неща, с които работите:можете да имате три колекции - foo , барната , база , но ако сега работите само с foo и bar, те трябва да бъдат заредени в ram, докато baz остава на диска изоставен. Освен това картографираните в паметта файлове позволяват да се зареди само част от колекцията. Така че, ако изграждате нещо като engadget или techcrunch, има голяма вероятност работният набор да бъде коментари за последните няколко дни и старите страници ще се съживяват много по-рядко (коментарите ще бъдат заредени в паметта при поискване), така че не t влияят значително на производителността.

И така, обобщете:докато продължавате да работите в паметта (може да мислите, че това е кеширане за четене/запис), извличането на тези неща е супер бързо и още една заявка не би била проблем. Ако работите с части от данни, които не се побират в паметта, ще има скорост деградация , но сега не разбирам вашите обстоятелства -- може да е приемливо, така че и в двата случая съм склонен да избера да използвам свързване.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Сигурно внедряване на MongoDB на Amazon AWS

  2. MongoError:филтър параметърът трябва да бъде обект

  3. Защо Mongoose има както схеми, така и модели?

  4. Как да получите последните N записа на всяка група в mongodb?

  5. Импортирайте данни в MongoDB от JSON файл с помощта на Java