ノードページの構造
ページバッファに整列済みのデータを配置
{ 40 } { 40, 63 } { 24, 40, 63 } { 24, 40, 58, 63 }
ページの分割
バッファが溢れた時、ページの分割を行う。
{ 24, (+ 31), 40, 58, 63 }
┏ {40} ┓ { 24, 31} {58, 63 }
さらにデータを追加
B木では常に下のページから挿入を行う。
┏ {40} ┓ <- 8, 72 { 24, 31} {58, 63 }
┏ {40} ┓ { 8, 24, 31} {58, 63, 72 }
最下層ページを再び分割
┏ {40} ┓<- 42 { 8, 24, 31} {58, 63, 72, 80}
┏ {40} ┓ { 8, 24, 31} {(42), 58, 63, 72, 80}
{40, 63} { 8, 24, 31} {42, 58}, {72, 80}
親ページを分割
親、子共にページのバッファが溢れた場合、子->親の順で分割する。
{ 40,63, 80, 105} <- 45 ┗ { 8, 24, 31} ┗ {42, 47, 50 58}, ┗ {72, 79}, ┗ {91, 97, 103}, ┗ {113, 122}
子ページも満杯
{ 40, 63, 80, 105} ┗ { 8, 24, 31} , ┗ {42, 47, 50 58}, <- 45 ┗ {72, 79}, ┗ {91, 97, 103}, ┗ {113, 122}
子ページを分割
{ 40, (47), 63, 80, 105} ┗ { 8, 24, 31} , ┗ {42, 45}, ┗ {50, 58}, ┗ {72, 79}, ┗ {91, 97, 103}, ┗ {113, 122}
親ページを分割
{63} ┗ {40, 47}, ┗ { 8, 24, 31} , ┗ {42, 45}, ┗ {50 58} ┗ {80, 105} ┗ {72, 79}, ┗ {91, 97, 103}, ┗ {113, 122}
B+木について
B+木はすべてのデータが最下層のデータに格納されているようにする。
リンク
リンク