Как мы можем реализовать b-tree или b + tree на диске, чтобы обеспечить индексацию для базы данных? - PullRequest
0 голосов
/ 29 октября 2018

Сначала я хотел бы, чтобы вы знали, что я прочитал все ответы такого рода, которые существуют в Stackoverflow или на любом другом веб-сайте. Я также прошел через этот ответ . Хотя ответ был довольно информативным, но не отвечал на вопрос, который у меня есть.

Я знаю, что мне нужно будет создать файл фиксированного размера для реализации дерева b + на диске. Я понимаю, что дерево b + работает с блоком фиксированного размера и хранит данные только на узле листьев, но я не мог понять, как я буду указывать / ссылаться на фактические данные (данные, присутствующие в базе данных) в листьях?

Вот еще один ответ, который я нашел полезным.

В памяти каждый узел указывает на память, содержащую дочерние узлы - очевидно, узлы на диске не могут указывать на ОЗУ, поэтому вам нужно какое-то отображение из указателей на адреса дисков. Это довольно просто - запишите узлы так, чтобы они были смежными на диске, сохраняя адрес, по которому вы сохранили каждый узел. Затем просмотрите и для каждого указателя в каждом узле найдите в своем указателе-> отображение диска, которое вы только что создали.

ссылка на оригинальный вопрос и ответ.

Что я не мог понять, так это как я буду отображать указатели на адреса дисков. Как я могу получить расположение в памяти любой записи базы данных с диска?

И как я смогу обеспечить индексацию, если в моей базе данных есть записи различного размера. Какие дополнительные шаги я должен предпринять для обеспечения индексации в этом случае?

Прошу вас проявить определенную чувствительность и не отмечать мой вопрос как дублирующую запись. Мне известно, что на этой платформе существует еще один вопрос с таким же названием, но ответ на этот вопрос мне не очень помог.

Если у вас есть ссылка или ссылка на какую-либо книгу, в которой показано, как выполнить индексацию с использованием дерева b + на диске, укажите это в своем ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...