Привет всем.

И этим, которые пишут код программ прямо в блокноте, особенно :-)

---
Решил, вот, закрыть белые пятна в своем моске по поводу B+ деревьев.

Я вот все никак до конца не могу догнать (чисто теоритически) - как наш любимый сервер может параллельно удалять элементы из этого дерева.

Со вставкой все понятно - при спуске вниз выполняется расшепление заполненных до упора элементов дерева, поэтому обратно по дереву подниматься не надо.

А вот с удалением - не догоняю. Балансировка при спуске, вроде делается без проблем. Но после достижения нижнего уровня дерева (где собственно и хранятся указатели на индексируемые данные) возможен случай когда надо двигаться назад к корню дерева для обновления ключей. Я про случай, когда удаляется первый слот на странице значений (ключ этого слота используется выше по дереву).

По идее, можно забить на это обновление. Но я пока не догнал окончательно...

Либо начинать блокировать на запись ноды, которые потом будут обновляться...?

Или я все конкретно напутал?

Спасите, памагите :)

Коваленко Дмитрий.

Ответить