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

MongoDB Schema Design - Много малки документи или по-малко големи документи?

Определено ще трябва да оптимизирате за заявките, които правите.

Ето най-доброто ми предположение въз основа на вашето описание.

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

Обектът за плащане автоматично ще има свой собствен идентификатор и индекс. Вероятно ще искате да добавите и индекс към клиентската справка.

Това ще ви позволи бързо да търсите Плащания от клиент, без да съхранявате целия клиентски обект всеки път.

Ако искате да отговорите на въпроси като „Каква беше средната сума, платена от всички клиенти миналия месец“ вместо това ще искате карта/намаляване за всеки голям набор от данни. Не получавате този отговор "в реално време". Ще откриете, че съхраняването на „препратка“ към Клиента вероятно е достатъчно добро за тези съкращения на картата.

Така че, за да отговоря директно на въпроса ви:MongoDB проектиран ли е да предпочита много, много малки документи или по-малко големи документи?

MongoDB е проектиран да намира индексирани записи много бързо. MongoDB е много добър в намирането на няколко игли в голяма купа сено. MongoDB не много добър в намирането на повечето от иглите в купа сено. Така че изградете данните си около най-често срещаните си случаи на употреба и пишете карти/намалете задания за по-редките случаи на употреба.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js - изчакайте няколко асинхронни повиквания

  2. Как да наложа външни ключове в бази данни NoSql (MongoDB)?

  3. Конфигурирайте регистриране за драйвера на MongoDB Java

  4. Mongodb, обобщена заявка с $lookup

  5. Моля, използвайте „MongoMappingContext#setAutoIndexCreation(boolean)“ или заменете „MongoConfigurationSupport#autoIndexCreation()“, за да бъде изрично