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

Как да създадете емисия от файлове от хора, които потребителят следва?

Това е проблемът с вентилатора срещу вентилатора. Предлагам ви да опитате разклоняване:

Поддържайте feed колекция за вашите потребители. Когато потребител качи документ, вмъкнете нов елемент във всяка от колекциите от елементи в емисията на неговите приятели. Колекцията може да изглежда така:

{
    "_id": (some id)
    "UserId": (id of the user who 'owns', i.e. reads this feed)
    "FriendId": (if of the friend who posted the file)
    "FriendName": "John Doe" (name of the fried, denormalized)
    "Timestamp": ...
}

Използвайте съставен индекс {UserId, Timestamp} .

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

Разбира се, това може да бъде допълнително оптимизирано с повече усилия, но би трябвало да се справи добре с доста голям трафик.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DeprecationWarning:collection.findAndModify е остарял. Вместо това да използвате findOneAndUpdate, findOneAndReplace или findOneAndDelete?

  2. Има ли начин за атомарно актуализиране на две колекции в MongoDB?

  3. Представяне на диаграми за търсене в MongoDB

  4. MongoDB:Ужасна производителност на MapReduce

  5. Заявката за агрегиране на Mongoose връща повече от един запис, когато трябва да върне само един