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ů.