|
Btree значения
|
|||
---|---|---|---|
#18+
Здравствуйте. Возможно ответ на вопрос прост как три копейки. Пните) Перечитал про деревья в индексах. Везде написано, что во всех типах нод хранятся ключи . Что логично. Но везде же вроде как написано , что значения хранятся только в листьях. Применительно к базам данных значение это rowid. И их может быть много. А как же те ключи , которые находятся не в листовых нодах? Как быть в данном случае со значениями ? И такого момента применительно к хранению индексов в базах данных недопонимают . Практически везде принято, что одна нода дерева равна одной странице. За пределы страницы нода не выходит. Количество ключей уровня дерева равно максимальному количеству , которое влезет на страницу с учётом служебной информации. Тогда слегка непонятно где ж в данной схеме хранятся значения ключей . Те самые rowid ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2019, 22:08 |
|
Btree значения
|
|||
---|---|---|---|
#18+
sergq, судя по терминологии (rowid) это вопрос по Ораклу. Имеет смысл его перенести в профильный форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 08:49 |
|
Btree значения
|
|||
---|---|---|---|
#18+
sergqЗдравствуйте. Возможно ответ на вопрос прост как три копейки. Пните) Перечитал про деревья в индексах. Везде написано, что во всех типах нод хранятся ключи . Что логично. Но везде же вроде как написано , что значения хранятся только в листьях. Применительно к базам данных значение это rowid. И их может быть много. А как же те ключи , которые находятся не в листовых нодах? Как быть в данном случае со значениями ? И такого момента применительно к хранению индексов в базах данных недопонимают . Практически везде принято, что одна нода дерева равна одной странице. За пределы страницы нода не выходит. Количество ключей уровня дерева равно максимальному количеству , которое влезет на страницу с учётом служебной информации. Тогда слегка непонятно где ж в данной схеме хранятся значения ключей . Те самые rowid Я думаю тебе стоит почитать про btree . ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 11:13 |
|
Btree значения
|
|||
---|---|---|---|
#18+
sergqА как же те ключи , которые находятся не в листовых нодах? Как быть в данном случае со значениями ? Гугли про двоичные деревья, для начала. В узлах производится сравнение на больше/меньше, и в результате получается направление "углубления в дерево", поэтому в узлах не ключи, а информация для принятия решения при поиске. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 11:14 |
|
Btree значения
|
|||
---|---|---|---|
#18+
alex55555sergqА как же те ключи , которые находятся не в листовых нодах? Как быть в данном случае со значениями ? Гугли про двоичные деревья, для начала. В узлах производится сравнение на больше/меньше, и в результате получается направление "углубления в дерево", поэтому в узлах не ключи, а информация для принятия решения при поиске. Это то я понимаю . Непонимаю одного. Допустим страница вмещает 500 ключей . А у одного из ключей допустим 20 тысяч значений. Ключ то поместится на странице. Но куда значения складываются в самой базе. Надо ж куда то положить 20 тысяч значений rowid по данному ключу ) Вот соответственно и хочется понять где что postgre что другие базы будут хранить эти 20 тысяч значений ключа . Вопрос да, не по программированию как таковому. Вопрос скорее по либо postgre либо по fb ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 13:50 |
|
Btree значения
|
|||
---|---|---|---|
#18+
Значения хранятся в таблице. В индексе (оно-же B+Tree) хранятся только пары (key,rowid). Для Оракла существует дополнительная опция т.н. Index Organized Table (IOT), там в листовых вершинах лежат значения но подобная реализация накладывает сходу ограничания на макс. длину строки такой таблицы. Технически точно я не помню надо смотреть доки. Как в Postgres - я не знаю т.к. не специалист но 99% что индексная структура будет подобной. Она вообще почти во всех DBMS не сильно отличается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 14:01 |
|
Btree значения
|
|||
---|---|---|---|
#18+
sergqalex55555пропущено... Гугли про двоичные деревья, для начала. В узлах производится сравнение на больше/меньше, и в результате получается направление "углубления в дерево", поэтому в узлах не ключи, а информация для принятия решения при поиске. Это то я понимаю . Непонимаю одного. Допустим страница вмещает 500 ключей . А у одного из ключей допустим 20 тысяч значений. Ключ то поместится на странице. Но куда значения складываются в самой базе. Надо ж куда то положить 20 тысяч значений rowid по данному ключу ) Вот соответственно и хочется понять где что postgre что другие базы будут хранить эти 20 тысяч значений ключа . Вопрос да, не по программированию как таковому. Вопрос скорее по либо postgre либо по fb цепочка страничек. так же как и если бы одно значение не помешалось на страничку. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2019, 14:05 |
|
Btree значения
|
|||
---|---|---|---|
#18+
sergqДопустим страница вмещает 500 ключей Если всё множество rowid для одного ключа не умещается на одну страницу - его хвост выпихнут на другие страницы с этим же ключом. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 13:48 |
|
Btree значения
|
|||
---|---|---|---|
#18+
alex55555Гугли про двоичные деревья, для начала. btree не является двоичным деревом. Неохота комментировать всё, что тут понаписали. Но автору вопроса действительно быстрее было бы найти описание структуры btree поиском в google. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:17 |
|
Btree значения
|
|||
---|---|---|---|
#18+
Вы оба правы. В данном случае автор спрашивает по блочно-организованной структуре данных https://en.wikipedia.org/wiki/B _tree которая используется в БД. В качестве пруфа, он указывает rowid. Это чисто базячная терминология. Но бинарное дерево https://en.wikipedia.org/wiki/Binary_tree это теоретический прародитель Дерева с плюсом+ N-го порядка если соптимизировать хранение бинарных нод в блок но при этом сохранить исходящие связи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2019, 15:54 |
|
Btree значения
|
|||
---|---|---|---|
#18+
Partisan Mbtree не является двоичным деревом. Двоичное есть частный случай b. Ну и принцип идентичный. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 15:55 |
|
Btree значения
|
|||
---|---|---|---|
#18+
Мне кажется идея смешивать в одну кучу бинарные деревьев и b-tree - не из лучших Больше путаницы, чем смысла Дополнительную и большую путаницу вносить сокрашение. Т.к. предполагаешь, что b-tree это сокрашение от binary, а на самом деле, это _отдельная_ структура. Т.ч. проще считать, что B-Tree это - B-Tree, а бинарное дерево - это бинарное дерево. А совпадение в первой буквы - это происки врагов человечества, что бы всех запутать. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 16:04 |
|
|
start [/forum/topic.php?fid=16&msg=39815859&tid=1339938]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
136ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 237ms |
total: | 465ms |
0 / 0 |