Správně jste si všimli, že dokumenty budou mít jinou velikost. Ušetříte tedy minimálně 15 bytes
na dokument (60%
pro podobné dokumenty), pokud se rozhodnete přijmout druhé schéma. To skončí něco jako 140MB
za vašich 10 million
evidence. To vám poskytne následující výhodu:
- Úspora pevného disku. Jediný problém je, že při pohledu na ceny současných HDD je to většinou k ničemu.
- Úspora paměti RAM. Ve srovnání s pevnými disky to může být užitečné pro indexování. V mongodb pracovní sada indexů by se měla vejít do RAM, aby bylo dosaženo dobrého výkon
. Pokud tedy budete mít indexy na těchto dvou polích, ušetříte nejen
140MB
místa na HDD, ale také140MB
potenciálního prostoru RAM (což je ve skutečnosti patrné). - I/O . K mnoha úzkým místům dochází kvůli omezení vstupního/výstupního systému (rychlost čtení/zápisu z disku je omezená). Pro vaše dokumenty to znamená, že se schématem 2 můžete potenciálně číst/zapisovat
twice as many documents
za 1 sekundu. - síť . V mnoha situacích je síť dokonce mnohem pomalejší než IO, a pokud je váš DB server na jiném stroji, pak se data musí posílat po drátě vašemu aplikačnímu serveru. A také budete moci odeslat dvakrát tolik dat.
Po vyprávění o výhodách vám musím říci nevýhodu malých kláves:
- čitelnost databáze. Když provedete
db.coll.findOne()
a vidí{_id: 1, t: 13423, a: 3, b:0.2}
je docela těžké pochopit, co je zde přesně uloženo. - čitelnost aplikace podobné s databází, ale alespoň zde můžete mít řešení. S mapovací logikou, která transformuje
currentDate
nac
aprice
nap
můžete napsat čistý kód a mít krátké schéma.