Как MongoDB WiredTiger хранит файлы
MongoDB WiredTiger предлагает LSMT для хранения. Отлично, поэтому в памяти поддерживается сбалансированное дерево поиска, которое сбрасывается на диск в зависимости от конфигурации (времени или размера). Но вопрос в том, как данные хранятся на диске? LSMT в Cassandra/HBase хранятся как неизменяемые файлы. Их время от времени уплотняют. Данные вставляются/обновляются/удаляются как ячейки, являющиеся частью логического распределенного словаря. Таким образом, каждая ячейка идентифицируется по ключу, имени столбца и версии.
Но MongoDB использует BSON. Это единственный документ, поэтому возникает q:
- Разбивает ли MongoDB BSON на ячейки и обновляет/версирует ли их? Маловероятно, поскольку BSON был разработан для дискового хранилища.
- В таком случае, как memtable (сбалансированное дерево поиска) обновляет файл BSON? Является ли файл BSON изменяемым? LSMT использует неизменяемые файлы в Cassandra/HBase.
- В общем, как MongoDB WT делает обновления? Изменяемые файлы на диске или неизменяемые, и усилия по управлению индексами? Поскольку MongoDB предлагает множество типов индексации.
Спасибо