Det du henviser til kaldes ofte "nøglekomprimering"*. Der er flere grunde til, at det ikke er blevet implementeret:
- Hvis du vil have det gjort, kan du i øjeblikket gøre det på applikations-/ORM-/ODM-niveau ret nemt.
- Det er ikke nødvendigvis en præstationsfordel** i alle tilfælde – tænk på samlinger med mange nøglenavne og/eller nøglenavne, der varierer meget mellem dokumenter.
- Det giver måske slet ikke en målbar ydeevne**fordel, før du har millioner af dokumenter.
- Hvis serveren gør det, skal de fulde nøglenavne stadig overføres over netværket.
- Hvis komprimerede nøglenavne overføres over netværket, er læsbarheden virkelig lider ved at bruge javascript-konsollen.
- Komprimering af hele JSON-dokumentet
kan tilbydegiver en endnu bedre ydeevnefordel.
Som alle funktioner er der en cost-benefit-analyse for at implementere den, og (i hvert fald indtil videre) har andre funktioner tilbudt mere "bang for the buck".
Fuld dokumentkomprimering [overvejes][1] for en fremtidig MongoDB-version. tilgængelig fra version 3.0 (se nedenfor)
* En opslagstabel i hukommelsen for nøglenavne er dybest set et specialtilfælde af komprimering i LZW-stil — det er mere eller mindre, hvad de fleste komprimeringsalgoritmer gør.
** Kompression giver både en pladsfordel og en ydeevnefordel. Mindre dokumenter betyder, at flere dokumenter kan læses pr. IO, hvilket betyder, at der i et system med fast IO kan læses flere dokumenter pr. sekund.
Opdater
MongoDB versioner 3.0 og nyere har nu fuld dokumentkomprimeringsfunktion med WiredTiger lagermotor.
To komprimeringsalgoritmer er tilgængelige:snappy , og zlib . Hensigten er, at snappy skal være det bedste valg til all-around ydeevne, og at zlib skal være det bedste valg for maksimal lagerkapacitet.
I mit personlige (ikke-videnskabelige, men relateret til et kommercielt projekt) eksperimenter tilbød hurtig komprimering (vi evaluerede ikke zlib) væsentligt forbedret lagertæthed uden mærkbare nettoydelsesomkostninger. Faktisk var der lidt bedre ydeevne i nogle tilfælde, nogenlunde på linje med mine tidligere kommentarer/forudsigelser.