Как создается дерево B в БД Монго - PullRequest
4 голосов
/ 01 февраля 2012

Я пытаюсь понять, как создается дерево B.

Допустим, я использую число в качестве индексной переменной. Как дерево будет создано с глубиной = 1 или это будет так - http://bit.ly/ygwlEp Если это так, какова будет глубина дерева и какое будет максимальное количество детей. Для составных ключей (скажем, 2 индексных переменных) будет два дерева. Или это будет одно дерево с первым уровнем в качестве первого ключа и вторым уровнем в качестве второго ключа? Скажем, я беру метку времени в качестве ключа индекса. Могу ли я сделать это как дерево с первым слоем в качестве лет, вторым как месяц и третьим как день. Может ли mongoDB автоматически анализировать эту информацию?

1 Ответ

8 голосов
/ 02 февраля 2012

Как дерево будет создано с глубиной = 1 или будет ли это так - http://bit.ly/ygwlEp

Ваша картинка показывает "двоичное дерево", а не "b-дерево"они различны.

"B-дерево" работает путем создания сегментов заданного размера (, полагают, что MongoDB использует 4k ) и упорядочения элементов в этих сегментах.

Если да, то какова будет глубина дерева и каково максимальное число детей

Пожалуйста, взгляните на запись в Википедии о B-деревьях, она должна дать однозначный ответ дляyou.

Для составных ключей (скажем, 2 индексных переменных) будет два дерева.

Только одно дерево.Однако ключ, хранящийся в дереве, в основном является представлением BSON обоих элементов, «соединенных» вместе.

Скажем, я беру метку времени в качестве ключа индекса.Могу ли я сделать это как дерево с первым слоем в качестве лет, вторым как месяц и третьим как день.Может ли mongoDB автоматически анализировать эту информацию?

Нет, у вас нет контроля над структурой индексации.

Ни один MongoDB не поддерживает какой-либо специальный анализ дат в индексах.

Если вы выполняете операцию сравнения для отметок времени, вам необходимо отправить другую отметку времени.

...