![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как строится индекс?
mem © (2010-11-23 11:39:00)Всем привет.
Нужен быстрый поиск в данных.
Сначала я записываю в файл сами данные, затем начинаю строить индексное дерево. Все хранится в одном файле. Так вот, при постройке индексного дерева, каждый узел/лист в конкретный момент времени ссылается на неконечное число эл-тов, поэтому я не могу знать его размер, соответственно, не знаю, где лежат следующие за ним узлы. Можно(наверное и нужно) хранить указатель на массив указателей на данные, соответствующие данному узлу/листу индекса.
Только опять же, на момент постройки дерева я не могу знать его размер, потому и не могу знать, куда записывать массивы указателей. Да и сами массивы непостоянны в размере. Подскажите, как это делается.
mem (2010-11-23 12:11:00) [1]
> Anatoly Podgoretsky © (23.11.10 11:57) [4]
>
> > mem (23.11.2010 11:52:03) [3]
>
> Смещение от начала.
да, действительно.
> 12 © (23.11.10 12:00) [5]
спасибо, попробую.
12 (2010-11-23 12:00:00) [2]
> пропустил х байт, начинаю там записывать массивы ссылок
> на данные, а дерево разрослось до х+1 байт - мне, что, двигать
> массивы
двигать массивы.
Массовый сдвиг будет все же быстрым боле-менее
т.е. как место закончилось, хапаем еще, ну пусть, 10% от уже занятого места.
Anatoly Podgoretsky (2010-11-23 11:57:00) [3]> mem (23.11.2010 11:52:03) [3]
Смещение от начала.
mem (2010-11-23 11:52:00) [4]
> Anatoly Podgoretsky © (23.11.10 11:45) [1]
>
> > mem (23.11.2010 11:39:00) [0]
>
> Вообще то записывать указатели в файл бессмысленно.
в смысле, указатель на данные в файле.
> > каждый узел/лист в конкретный момент времени ссылается
> на
> > неконечное число эл-тов
>
> как это?!
пока строится дерево.
> как в MSSQL - хапать место под данные заранее
а если не хватит? Т.е. начал я записывать дерево после данных, пропустил х байт, начинаю там записывать массивы ссылок на данные, а дерево разрослось до х+1 байт - мне, что, двигать массивы или дерево разбивать на кусочки? То же самое с массивами ссылок.
ссылка=указатель или как там назвать число, указывающее на место в файле, где данные лежат.
12 (2010-11-23 11:47:00) [5]как в MSSQL - хапать место под данные заранее
любая книжка по организации индексов этой БД должна просвятить
> каждый узел/лист в конкретный момент времени ссылается на
> неконечное число эл-тов
как это?!
и
http://www.google.ru/webhp?rls=ig#rls=ig&hl=ru&source=hp&biw=1280&bih=785&q=%D1%81%D0%B1%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F&aq=f&aqi=g1&aql=&oq=&gs_rfai=&fp=6b80d38ad031c95
Anatoly Podgoretsky (2010-11-23 11:45:00) [6]> mem (23.11.2010 11:39:00) [0]
Вообще то записывать указатели в файл бессмысленно.