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

MongoDB:Все още ли трябва да предоставяте идентификатори, свързващи други колекции, или просто да включвате колекции?

Зависи.

Зависи колко от всеки от тези видове обекти очаквате да имате. Можете ли да ги съберете всички в един MongoDB документ за дадена тема? Вероятно не.

Зависи от връзките - имате ли връзки "един към много" или "много към много"? Ако е едно към много и броят на свързаните обекти е малък, можете да изберете да ги вградите в IList на документ. Ако е много към много, можете да изберете да използвате по-традиционна връзка или да изберете да вградите и двете страни като ILists.

Все още можете да моделирате връзки в MongoDB с отделни колекции, НО в базата данни няма съединения, така че трябва да направите това в код. Зареждането на тема и след това зареждането на коментарите за нея може да е добре от гледна точка на ефективността.

Други съвети:

С MongoDB можете да индексирате INTO масиви на документи. Така че не мислете за индекс просто като за индекс на просто поле в документ (като SQL). Можете да използвате, да речем, колекция от етикети в тема и да индексирате в етикетите. (Вижте http://www.mongodb.org/display/DOCS/Indexes #Индекси-Масиви )

Когато извличате или записвате данни, можете да извършите частично четене и частично записване на всеки документ. (вижте http://www.mongodb.org/display /DOCS/Извличане+на+подмножество+от+полета )

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

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да сортирам по множество полета в mongodb с Perl?

  2. използвайте глобална променлива за споделяне на db между модула

  3. Индекс на поддокумента в mongo

  4. Услугата mongodb не се стартира

  5. Нарича се съхранена javascript функция от Mongoose?