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

Czy pole listy może być kluczem fragmentu w MongoDB?

Na podstawie niektórych informacji zwrotnych, które otrzymuję, które wydają się twierdzić, że nie można shardować przy użyciu pola listy jako klucza sharda, chciałem zilustrować, w jaki sposób można podzielić ten przypadek użycia przy użyciu ograniczeń MongoDB:

Oryginalny obiekt:

widget:
{
    primary_key: '2389sdjsdafnlfda'

    categories: ['hair', 'nails', 'dress']
    colors:     ['red', 'white']

    #All the other fields in the document that don't need to be queried upon: 
    ...
    ...
}

Warstwa danych dzieli obiekt na wiele obiektów wskaźnikowych na podstawie liczby elementów w polu wybranym dla klucza fragmentu:

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'hair',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'nails',
    colors:     ['red', 'white']
}

widget_pointer:
{
    primary_key: '2389sdjsdafnlfda'
    categories: 'dress',
    colors:     ['red', 'white']
}

Wyjaśnienie:

  • Pole categories może być teraz kluczem fragmentu w MongoDB.
  • Oryginalny obiekt będzie teraz przechowywany w magazynie klucz-wartość. Zapytania dotyczące danych w MongoDB zwrócą obiekt wskaźnika, który zostanie użyty do pobrania obiektu z magazynu klucz-wartość.
  • Kwerendy dotyczące danych MongoDB trafią tylko w jeden fragment.
  • Wstawienia danych MongoDB trafią na tyle fragmentów, ile jest elementów na liście, w większości przypadków będzie to miało wpływ tylko na mały podzbiór całkowitej liczby fragmentów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. jak zserializować klasę?

  2. Jak odinstalować mongodb z Windows

  3. Grupowanie dokumentów w MongoDB na specjalnych warunkach

  4. jak mogę sprawdzić, na jakich portach mongo nasłuchuje z powłoki mongo?

  5. Rotacja dziennika mongo nie działa w systemie Windows