Szukaj…


Uwagi

W MongoDB 3.0 MMAP (domyślnie) i WiredTiger są stabilnymi silnikami pamięci. Zazwyczaj, jeśli Twoja aplikacja jest obciążona odczytem, użyj MMAP. Jeśli jest duży zapis, użyj WiredTiger.

Twoje rozwiązanie może również mieć mieszane elementy zestawu replik, w których możesz skonfigurować jeden węzeł za pomocą MMAP, a drugi za pomocą WiredTiger. Możesz użyć jednego do wstawienia ogromnych danych, a drugiego do odczytu za pomocą narzędzi analitycznych.

Po MongoDB 3.2 WiredTiger staje się domyślnym silnikiem.

MMAP

MMAP to podłączany silnik pamięci, nazwany na cześć polecenia Linux mmap() . Mapuje pliki do pamięci wirtualnej i optymalizuje odczyt połączeń. Jeśli masz duży plik, ale musisz odczytać tylko jego niewielką część, mmap() jest znacznie szybszy niż wywołanie read() , które wprowadziłoby cały plik do pamięci.

Jedną wadą jest to, że nie można przetwarzać dwóch wywołań zapisu równolegle dla tej samej kolekcji. MMAP ma więc blokowanie na poziomie kolekcji (a nie blokowanie na poziomie dokumentu, jak oferuje WiredTiger). Blokowanie kolekcji jest konieczne, ponieważ jeden indeks MMAP może odwoływać się do wielu dokumentów, a jeśli te dokumenty mogłyby być aktualizowane jednocześnie, indeks byłby niespójny.

WiredTiger

WiredTiger obsługuje drzewa LSM do przechowywania indeksów . Drzewa LSM są szybsze w operacjach zapisu, gdy trzeba pisać duże obciążenia losowych wstawek.

W WiredTiger nie ma żadnych aktualizacji w miejscu . Jeśli musisz zaktualizować element dokumentu, nowy dokument zostanie wstawiony, a stary dokument zostanie usunięty.

WiredTiger oferuje również współbieżność na poziomie dokumentu . Zakłada się, że dwie operacje zapisu nie wpłyną na ten sam dokument, ale jeśli tak, jedna operacja zostanie przewinięta do tyłu i wykonana później. To świetny wzrost wydajności, jeśli przewijanie jest rzadkością.

WiredTiger obsługuje algorytmy Snappy i zLib do kompresji danych i indeksów w systemie plików. Snappy jest domyślny. Jest mniej obciążający procesor, ale ma niższy stopień kompresji niż zLib.

Jak korzystać z WiredTiger Engine

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>

Uwaga:

  1. Po mongodb 3.2 domyślnym silnikiem jest WiredTiger.
  2. newWiredTigerDBPath nie powinien zawierać danych innego silnika pamięci. Aby przeprowadzić migrację danych, musisz je zrzucić i ponownie zaimportować w nowym silniku pamięci.
    mongodump --out <exportDataDestination>
    mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
    mongorestore <exportDataDestination>

W pamięci

Wszystkie dane są przechowywane w pamięci (RAM) w celu szybszego odczytu / dostępu.

skały mongo

Silnik o kluczowej wartości stworzony do integracji z RocksDB na Facebooku.

Fusion-io

Silnik pamięci masowej stworzony przez SanDisk, który umożliwia ominięcie warstwy systemu plików OS i zapisywanie bezpośrednio na urządzeniu pamięci masowej.

TokuMX

Silnik pamięci masowej stworzony przez Percona, który korzysta z indeksów drzewa fraktalnego.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow