Для B-дерева порядка m каждый узел, кроме корня, должен содержать элементы от m-1 до 2m-1, где каждый элемент является, по меньшей мере, ключом и, возможно, также некоторыми дополнительными данными (например, значением). Однако каждый узел должен иметь определенный постоянный общий размер, чтобы обеспечить хорошую производительность на базовом блочном устройстве. Итак, что происходит, если ваши элементы имеют переменный размер?Как сохранить инварианты B-дерева, когда элементы меняются по размеру?
SQLite3, похоже, имеет схему для прикрепления дополнительных узлов размера блока к своим узлам, а MySQL позволяет объявлять размер ваших записей (например, вы можете вводить свои поля не просто как строки, а строки под некоторым размером) , Какие существуют другие решения? И о чем люди думают, когда выбирают друг друга?
редактировать: И в предыдущем предложении, я имею в виду, что же разработчики баз данных думать о том, когда решив реализовать свои B-деревья один путь над другим?
(я в курсе баз данных прямо сейчас, так что я больше заинтересован в теории и конструкции угол, чем в деталях конкретных систем.)
А, я имею в виду, «что думают разработчики баз данных при реализации своих B-деревьев так или иначе?» Отредактировано для ясности сейчас, спасибо! – Wang
B-tree связаны с созданием индексов. Необходимость разработчика понять концепцию кластеризованных и некластеризованных индексов для T-SQL, хеш-кластеров и хеш-кластеров для Oracle. Индексы важны для понимания, и я рекомендую вам найти книгу, которая включает главы по этому вопросу. –