Re[39]: плохой язык C++ :)
От: Left2 Украина  
Дата: 14.03.06 14:08
Оценка: +1
VD>Вообще-то B+ отличаются очень незначительно. Это небольшое усовершенствование. Просто связали страницы двунаправленным списком и все. Оно и в памяти удобнее.

Да в курсе мы чем B от B+ отличаются
Я пытался сказать что в памяти эти указатели для двунаправленного списка избыточны — найти предыдущую-следующую страницу несложно, благо латентности у памяти небольшие. А вот для диска это уже существенно — лишнее обращение к диску стоит дорого.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[40]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.06 15:56
Оценка:
Здравствуйте, Left2, Вы писали:

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


Ошибашся. Промежуточные страницы они в принципе в память сразу попадают. Тут в другом дело. Вдло в упрощении сканирования. Алгоритм превращается линейный перебор.

L> А вот для диска это уже существенно — лишнее обращение к диску стоит дорого.


Не будет там никаких лишних обращений. Когда ты переходишь к одной из нижних страниц ты обязан поднять в память корневую страницу. Просто при переборе ты не будешь лазить по дереву, сразу начнешь сканирование записей.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.03.06 16:49
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Вообще-то B+ отличаются очень незначительно. Это небольшое усовершенствование. Просто связали страницы двунаправленным списком и все.


Нет, не все. В В+ дереве, кроме того, все элементы храняться в листьях (иначе было бы бессмысленно делать указатели на соседние листья).
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[38]: плохой язык C++ :)
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 14.03.06 17:24
Оценка:
Здравствуйте, Left2, Вы писали:

AVK>>RB деревья как раз используются при необходимости. А вот В+ в реальных проектах я не видел ни разу.


L>Symbian OS — в стандартной библиотеке есть реализация B-деревьев. IMHO, переходить от B к B+ имеет смысл только если они лежат на диске — для работы с памятью B-деревья предпочтительнее B+.


А чем обосновано данное утверждение??? В зависимости от типа КеуValuePair, и количества элементов на странице процент лишней памяти весьма незначителен, а вот выигрыш при чесе по страницам весьма заметен. Да и реализация немного проще.
и солнце б утром не вставало, когда бы не было меня
Re[40]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.06 17:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Нет, не все. В В+ дереве, кроме того, все элементы храняться в листьях (иначе было бы бессмысленно делать указатели на соседние листья).


Ага. Вот только это все равно не влияет на использование их в памяти. Просто более совершенная разновидность алгоритма.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: плохой язык C++ :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.03.06 05:12
Оценка: 4 (1) +1
Здравствуйте, Left2, Вы писали:

L>Сильно сомневаюсь что это хорошая идея — хранить данные на диске через хеш-таблицу. Слишком медленным получится последовательное чтение — поскольку прийдётся скакать случайным образом по всей таблице.

Именно поэтому хеш-индексы сейчас малопопулярны. Дело в том, что редкий оптимизатор в силах угадать способ доступа. Тем не менее, они все же применяются — там, где можно заранее определить назначение некоторого индекса. К примеру, FK-индексы как правило используются только для lookup, а lookup по хеш-таблице имеет более мягкую асимптотику, чем по дереву.
L> Хотя, может для каких-то специфических задач это и прокатит... Впрочем, при добавлении в RB-дерево случайным образом страницы тоже могут перемешаться на диске
Не знаю насчет RB-деревьев; для B/B+/B* деревьев все операции требуют log(N) времени, и с учетом очень вероятного кэширования рута и первого уровня дерева этот логарифм превращается в подкачку ровно 1 страницы в 95% случаев.
L>- но тут по крайней мере можно слегка прогнуться и сделать дефрагментацию, а вот хеш-таблицу ничто не спасёт
Я думаю, тебе стоит почитать учебники по проектированию СУБД. Там описаны алгоритмы хеш-индексов, пригодные для дисковых операций.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[37]: плохой язык C++ :)
От: vdimas Россия  
Дата: 15.03.06 06:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:


C>>Ну да, можно положить Assemblt в GAC и сделать ей ngen'ом

C>>оптимизированое изображение.

AVK>Афигеть. Блин, ну ты и спорщик.

AVK>Для того чтобы обработать ngen'ом сборку не нужно класть ее в GAC. Единственная связь между GAC и ngen это то что каталог ngen'а лежит рядом с каталогом GAC.

еще оба требуют твердого имени
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[38]: плохой язык C++ :)
От: Дарней Россия  
Дата: 15.03.06 06:53
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>еще оба требуют твердого имени


"твердого"? Интересно, что бы сказал про это дедушка Фрейд
... << RSDN@Home 1.1.4 stable rev. 510>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[38]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.03.06 08:19
Оценка:
Здравствуйте, vdimas, Вы писали:

V>еще оба требуют твердого имени


Нет.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[41]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.03.06 08:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ага. Вот только это все равно не влияет на использование их в памяти.


Влияет на использование на диске. В+ дерево в реальности стараются хранить так, чтобы соседние страницы лежали последовательно друг за другом. Это минимизирует количество перемещений головки при выборе диапазона. Для вариантов в памяти это, естественно, никто не делает.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[38]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.06 08:21
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я думаю, тебе стоит почитать учебники по проектированию СУБД. Там описаны алгоритмы хеш-индексов, пригодные для дисковых операций.


А такой есть?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: плохой язык C++ :)
От: Left2 Украина  
Дата: 15.03.06 08:34
Оценка:
L>>- но тут по крайней мере можно слегка прогнуться и сделать дефрагментацию, а вот хеш-таблицу ничто не спасёт
S>Я думаю, тебе стоит почитать учебники по проектированию СУБД. Там описаны алгоритмы хеш-индексов, пригодные для дисковых операций.

Хай Бог Мылуе В ближайшее время проектированием СУБД заниматься не собираюсь Их вроде бы и так выше крыши на рынке — выбирай любую по вкусу и цене
Я уже пытался обьяснить — изначально-то разговор шёл не о написании более-менее честной СУБД а о подтачивании стандартных (ну, или околостандартных ) контейнеров C++ для хранения данных на диске.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[42]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.06 08:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Влияет на использование на диске. В+ дерево в реальности стараются хранить так, чтобы соседние страницы лежали последовательно друг за другом.


Стараться конечно можно. Вот только по жизни это может вызвать копирование всего содержимого индекса.

И В-дерево тут ничем не отличается. Еше раз повторяю, что В+-дерево — это всего лишь небольшая оптимизация В-дерева. В основном характеристики у них одинаковые. Приемущество В+-дерева проявляется только при последовательном сканировании. Причем это приемущество остается независимо от того где распологается индекс.

AVK> Это минимизирует количество перемещений головки при выборе диапазона. Для вариантов в памяти это, естественно, никто не делает.


И что мешат распологать страницы В-дерева последовательно?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[43]: плохой язык C++ :)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.03.06 08:50
Оценка: +2
Здравствуйте, VladD2, Вы писали:

AVK>>Влияет на использование на диске. В+ дерево в реальности стараются хранить так, чтобы соседние страницы лежали последовательно друг за другом.


VD>Стараться конечно можно. Вот только по жизни это может вызвать копирование всего содержимого индекса.


Может. Техника борьбы стандартная — оставлять запас для роста.

VD>И В-дерево тут ничем не отличается.


Отчасти отличается. Там понятие соседняя страница не так очевидно (потому как данные не только в листьях). Ну и главное — в тех деревьях, которые храняться в памяти, В или В+ не важно, такая оптимизация отсутствует.

VD>Приемущество В+-дерева проявляется только при последовательном сканировании.


Я про последовательное сканирование и говорю.

VD> Причем это приемущество остается независимо от того где распологается индекс.


На диске зависит.

VD>И что мешат распологать страницы В-дерева последовательно?


Как ты расположишь страницы В дерева последовательно, если данные есть и в родительской странице и в дочерних?
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[39]: плохой язык C++ :)
От: vdimas Россия  
Дата: 15.03.06 09:02
Оценка: :)
Здравствуйте, Дарней, Вы писали:

Д>"твердого"? Интересно, что бы сказал про это дедушка Фрейд


Кто такие фрейды и при чем тут их дедушка?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[44]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.06 10:01
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Как ты расположишь страницы В дерева последовательно, если данные есть и в родительской странице и в дочерних?


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

В общем, ты не прав. В-деревья изначально разрабатывались для хнанения на дисках. B+ конечно лучше. Но это не более чем оптимизация исходного алгоритма.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.06 10:10
Оценка:
Здравствуйте, Left2, Вы писали:

L>Я уже пытался обьяснить — изначально-то разговор шёл не о написании более-менее честной СУБД а о подтачивании стандартных (ну, или околостандартных ) контейнеров C++ для хранения данных на диске.


Ну, вот тебе и посоветовали не маяться дурью. Но ты похоже это не осознал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[39]: плохой язык C++ :)
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.03.06 10:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А такой есть?

Учебник-то? Конечно. Тот же Гарсиа-Молина со товарищи. Попроси у Мерля почитать
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[40]: плохой язык C++ :)
От: igna Россия  
Дата: 15.03.06 13:11
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Я уже пытался обьяснить — изначально-то разговор шёл не о написании более-менее честной СУБД а о подтачивании стандартных (ну, или околостандартных ) контейнеров C++ для хранения данных на диске.


VD>Ну, вот тебе и посоветовали не маяться дурью.



Посоветовали не использовать Hashtable и подобные Hashtable контейнеры для хранения на диске. Ну и ладно, в boost'е уже есть File-Mapping-аллокатор (Shmem), появится и boost::btree.
Re[40]: плохой язык C++ :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.06 14:59
Оценка:
Здравствуйте, Sinclair, Вы писали:

VD>>А такой есть?

S>Учебник-то? Конечно. Тот же Гарсиа-Молина со товарищи. Попроси у Мерля почитать

Мне то зачем? Просто интересно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.