To, o czym mówisz, jest często nazywane „kompresjami klawiszy”*. Istnieje kilka powodów, dla których nie został on zaimplementowany:
- Jeżeli chcesz to zrobić, obecnie możesz to zrobić dość łatwo na poziomie aplikacji/ORM/ODM.
- Nie we wszystkich przypadkach jest to przewaga wydajności** — pomyśl o kolekcjach z wieloma nazwami kluczy i/lub nazwami kluczy, które bardzo różnią się między dokumentami.
- Może nie zapewnić wymiernej przewagi wydajności**, dopóki nie będziesz mieć milionów dokumentów.
- Jeśli serwer to zrobi, pełne nazwy kluczy nadal muszą być przesyłane przez sieć.
- Jeśli skompresowane nazwy kluczy są przesyłane przez sieć, czytelność naprawdę cierpi przy użyciu konsoli javascript.
- Skompresowanie całego dokumentu JSON
może zaoferowaćoferuje jeszcze lepszą przewagę wydajności.
Podobnie jak w przypadku wszystkich funkcji, istnieje analiza kosztów i korzyści wdrożenia, a (przynajmniej do tej pory) inne funkcje oferują więcej „opłaty za grosze”.
Pełna kompresja dokumentu jest [rozważana][1] dla przyszłej wersji MongoDB. dostępne od wersji 3.0 (patrz poniżej)
* Tablica wyszukiwania nazw kluczy w pamięci jest w zasadzie szczególnym przypadkiem kompresji w stylu LZW — to mniej więcej to, co robi większość algorytmów kompresji.
** Kompresja zapewnia zarówno przewagę przestrzeni, jak i wydajność. Mniejsze dokumenty oznaczają, że na IO można odczytać więcej dokumentów, co oznacza, że w systemie ze stałym IO można odczytać więcej dokumentów na sekundę.
Aktualizacja
MongoDB w wersjach 3.0 i nowszych ma teraz pełną funkcję kompresji dokumentów dzięki WiredTiger silnik pamięci masowej.
Dostępne są dwa algorytmy kompresji:snappy i zlib . Intencją jest, aby zgrabny był najlepszym wyborem dla wszechstronnej wydajności, a zlib był najlepszym wyborem dla maksymalnej pojemności pamięci masowej.
W moich osobistych (nienaukowych, ale związanych z projektem komercyjnym) eksperymentach, szybka kompresja (nie ocenialiśmy zlib) oferowała znacznie lepszą gęstość pamięci masowej bez zauważalnych kosztów wydajności netto. W rzeczywistości w niektórych przypadkach wydajność była nieco lepsza, mniej więcej zgodnie z moimi wcześniejszymi komentarzami/prognozami.