Привет всем.
И этим, которые пишут код программ прямо в блокноте, особенно :-)
---
Решил, вот, закрыть белые пятна в своем моске по поводу B+ деревьев.
Я вот все никак до конца не могу догнать (чисто теоритически) - как наш
любимый сервер может параллельно удалять элементы из этого дерева.
Со вставкой все понятно - при спуске вниз выполняется расшепление
заполненных до упора элементов дерева, поэтому обратно по дереву подниматься
не надо.
А вот с удалением - не догоняю. Балансировка при спуске, вроде делается без
проблем. Но после достижения нижнего уровня дерева (где собственно и
хранятся указатели на индексируемые данные) возможен случай когда надо
двигаться назад к корню дерева для обновления ключей. Я про случай, когда
удаляется первый слот на странице значений (ключ этого слота используется
выше по дереву).
По идее, можно забить на это обновление. Но я пока не догнал окончательно...
Либо начинать блокировать на запись ноды, которые потом будут
обновляться...?
Или я все конкретно напутал?
Спасите, памагите :)
Коваленко Дмитрий.