WiredTiger — это движок хранения по умолчанию в MongoDB, пришедший на смену устаревшему MMAPv1. Он предоставляет несколько критически важных технических улучшений.
WiredTiger использует конкурентный доступ на уровне документа, что означает, что несколько операций записи могут выполняться одновременно на разных документах. MMAPv1 использовал блокировку на уровне коллекции, которая заставляла операции записи встать в очередь — значительно ограничивая пропускную способность под высокой нагрузкой.
WiredTiger поддерживает нативное сжатие данных как для коллекций, так и для индексов, используя алгоритмы вроде:
snappy (по умолчанию — быстро, среднее сжатие)zlib (более высокий коэффициент сжатия)zstd (лучший коэффициент, доступен в новых версиях)MMAPv1 не поддерживал сжатие, что приводило к значительно большему использованию диска.
Благодаря блокировке на уровне документа и оптимизированному журналу упреждающей записи (WAL), WiredTiger намного лучше справляется с высококонкурентными нагрузками на запись. Данные сначала записываются в журнал перед применением, обеспечивая целостность данных даже в случае сбоя.
WiredTiger использует собственный внутренний кэш, который можно настроить через:
wiredTigerCacheSizeGB
Это даёт разработчикам точный контроль над использованием памяти. MMAPv1 полагался на файлы с отображением в память на уровне ОС, не предлагая тонкой настройки.
| Feature | WiredTiger | MMAPv1 |
|---|---|---|
| Locking | Document-level | Collection-level |
| Compression | Yes | No |
| Cache control | Configurable | OS-managed |
| Active development | Yes | Removed in MongoDB 4.2 |
WiredTiger обеспечивает превосходный параллелизм, эффективность хранилища и целостность данных. MMAPv1 был полностью удалён в MongoDB 4.2, что делает знание WiredTiger необходимым для любого production-окружения MongoDB.
Блокировка на уровне документа в WiredTiger позволяет нескольким операциям записи выполняться одновременно на разных документах, тогда как блокировка на уровне коллекции в MMAPv1 сериализовала все записи внутри коллекции.
Новый — ещё не проверен сообществом
Вы