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

Jak modelowałbyś klienta> zamówienie> zamówienie> produkt w bazie NoSql?

Ważną kwestią podczas projektowania schematu dla MongoDB nie jest to, jakie są Twoje dane, ale jak będziesz ich używać. Bez ustalenia, jakiego rodzaju odczyty i zapisy będziesz wykonywać (i jak będą one wydajne), zaprojektowanie „optymalnego” schematu może być trudne.

Istnieje kilka podstawowych wskazówek, które możesz wziąć pod uwagę, aby uniknąć problemów. Jednym z nich jest unikanie projektowania dokumentów, które rosną bez ograniczeń. Oznacza to, że nie należy osadzać zamówień w dokumentach klienta. Inną zasadą jest to, że rzeczy, które same w sobie nie są „interesujące” (lub same w sobie nie istnieją), prawdopodobnie lepiej osadzić. Sugeruje to, że orderItems nie zasługują na swoją własną kolekcję i powinny być po prostu traktowane jako atrybuty zamówień (co w rzeczywistości jest tym, czym są).

To dokładne ćwiczenie jest omówione w szkoleniu dla programistów MongoDB, będącym dość typowym przykładem projektowania schematu.

Podsumowując, powinieneś mieć trzy kolekcje:

Produkty
Klienci
Zamówienia

Zamówienia będą odnosić się do klientów (opcjonalnie denormalizując niektóre informacje z kolekcji klientów) i będą odnosić się do produktów (w tablicy zamówień, które będą zawierać).

Dalsze kolekcje i dokładne pola we wszystkich tych kolekcjach zależą od konkretnego przypadku użycia, ale nie widzę realnego scenariusza, aby mieć mniej kolekcji niż te trzy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Problem z MapReduce

  2. MongoDB $ostatni operator potoku agregacji

  3. MongoDB:Kopiowanie tablicy do innej tablicy w tym samym dokumencie

  4. mangusta rekurencyjne wypełnianie

  5. Nie można zapełnić tablicy poddokumentów Mongoose.js