sql >> Databáze >  >> NoSQL >> MongoDB

Může být pole seznamu shard klíč v MongoDB?

Na základě některých zpětných vazeb, které dostávám a které, jak se zdá, tvrdí, že není možné provést fragmentaci pomocí pole seznamu jako klíčového fragmentu, jsem chtěl ilustrovat, jak lze tento případ použití rozdělit pomocí omezení MongoDB:

Původní objekt:

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: 
    ...
    ...
}

Datová vrstva rozděluje objekt na více objektů ukazatele na základě počtu prvků v poli vybraném pro klíč:

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']
}

Vysvětlení:

  • Pole categories nyní může být shard klíč v MongoDB.
  • Původní objekt bude nyní uložen v úložišti párů klíč–hodnota. Dotazy na data v MongoDB vrátí objekt ukazatele, který bude použit k získání objektu z úložiště párů klíč–hodnota.
  • Dotazy na data MongoDB zasáhnou pouze jeden fragment.
  • Vložení do dat MongoDB zasáhne tolik útržků, kolik je prvků v seznamu, ve většině případů bude ovlivněna pouze malá podmnožina z celkového počtu útržků.


  1. změna typu mongodb na pole

  2. jak nastavit mogodb ve službě upstart s ověřováním

  3. Bezpečné vysílání zpráv, které má být spotřebováno konkrétním příjemcem pomocí redis a python

  4. jak aktualizovat pole vnořeného objektu v mongodb?