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

MongoDB връзки за обекти

Зависи.

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

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

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

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

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

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

Още едно притеснение:Споменавате изчисляване на суми по етикет. Ако искате последователност на транзакциите със счетоводно качество, MongoDB може да не е правилният избор за вас. „Eventual-consistency“ е името на играта за NoSQL хранилища за данни и те като цяло не са подходящи за финансови транзакции. Например, няма значение дали един потребител види публикация в блог с 3 коментара, докато друг вижда 4, защото те са ударили различни копия на реплики, които все още не са синхронизирани, но за финансов отчет този вид последователност има значение - вашият отчетът може да не се събере!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Запитване за дати с данни на Mongo Spring срещу конзолата на Mongo (дати)

  2. Върнете елемент от масив по индекс в шаблон за интервали за метеор

  3. „TypeError:meme.find(...).forEach не е функция“ в mongoose node js?

  4. Как да извлечем стойност от mongoDB, по нейното ключово име?

  5. Как да изключа полета от вграден документ в Mongoid?