MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy powinniśmy używać dbref lub osadzonego dokumentu w aplikacji wymagającej dużej ilości odczytu?

DBref nie przypomina klucza obcego w tradycyjnych systemach relacyjnych. Jest to tylko konwencja, która z łatwością mówi kierowcy (który jest w stanie) automatycznie ładować te dokumenty. Zobacz DBRef aby uzyskać więcej informacji na ten temat.

W zależności od używanego sterownika możesz być w stanie załadować te referencje automatycznie tylko wtedy, gdy ich potrzebujesz (leniwy), więc narzut wydajności powinien być naprawdę niewielki. Ale narzut pamięci jest nieco wyższy niż prosty identyfikator _id innego dokumentu. Zasadniczo powiedziałbym, że powinieneś używać tych DBrefs tylko wtedy, gdy połączony dokument może być typu zmiennego. Jeśli jest statyczny, utkniesz z referencjami _id i być może własną funkcjonalnością leniwego programu ładującego, więc nie powtarzaj się.

Nie powtarzaj się (lub powielanie danych w kategoriach bazy danych) dotyczy również twojego kontekstu, jak zaleca MongoDB (tak ja też bym), to tylko połącz swoje dokumenty . W przeciwnym razie będziesz mieć większe zużycie pamięci i nieco dłuższe aktualizacje, aby zaktualizować tylko jedną jednostkę logiczną (fizycznie bardzo często zduplikowaną).

Przy pomocy wspomnianego wcześniej niestandardowego lazy loadera możesz dodać trochę buforowania, aby nie każde wyszukiwanie faktycznie skutkowało wyszukiwaniem mongodb. Najprawdopodobniej będziesz musiał zadbać o spójność danych między pamięcią podręczną a bazą danych.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Importowanie json z pliku do mongodb za pomocą mongoimport

  2. Dlaczego Mongo przechowuje moją datę jako ciąg?

  3. Czy jest jakaś lepsza powłoka dla mongo.exe?

  4. Wdrażanie baz danych w chmurze za pomocą ClusterControl 1.6

  5. Mongoose:findOneAndUpdate nie aktualizuje istniejącego pola