Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Способ хранения информации


QuestionX ©   (2004-09-29 04:46:00) 

Необходимо хранить базу данных, содержащую следующую информацию

Имя: string;
Опция1: Integer;
Опция2: Integer;
Описание: string;

Программа для которой это нужно представляет собой небольшую утилиту, поэтому использование BDE и т.п. не представляется целесообразным, поэтому возникает вопрос как хранить данную структуру, и при этом обеспечивать максимально быстрый поиск по полю "Имя", при этом не загружая всю базу в память и учитывая то, что длина полей "Имя" и "Описание" - произвольно.


Defunct   (2004-09-29 18:25:00) [1]

> Во что превратиться небольшая утилитка, использующая FireBird ?

в ту же самую утилитку, только + 1 FB DDLка (~400k) пара файлов настройки и файл БД.


Romkin   (2004-09-29 18:25:00) [2]

Вах! COM storage однако. Все предусмотрено


TUser   (2004-09-29 18:08:00) [3]

Я все-таки за то, чтобы в простых задачах обходиться без БД. Может быть потом изменю свое мнение.


Sandman25   (2004-09-29 16:57:00) [4]

[8] TUser ©   (29.09.04 16:54)

2 путь - усложнение алгоритма и структур :)


TUser   (2004-09-29 16:54:00) [5]

Если требуется только хранение и поиск, то базы здесь вообще ни при чем. Самому можно реализовать хеширование нужной тебе информации и поиск. Будет довольно быстро.
Как думаете, Lingvo использует FireBird? А ищет быстро, и записей там много.


Sandman25   (2004-09-29 16:49:00) [6]

>Во что превратиться небольшая утилитка, использующая FireBird ?

Если Вы хотите написать маленькую программу, реализующую большую функциональность, то ничего не получится. Иначе бы Windows не занимала столько места :)

>Не могли бы вы привести одну структуру из миллиона которая отвечала бы изначальным требованиям ?

Вопрос не понят. Если нужно найти 20-30 структур по именииз миллиона, то:
1)либо придется тупо сканировать весь миллион структур и проверять имя (неприемлемое решение из-за скорости, насколько я понимаю);
2)либо заводить что-нибудь типа индекса или хотя бы сортировки с умным поиском (неприемлемое решение из-за усложнения алгоритма и структур данных, насколько я понимаю);
3)либо использовать встроенную СУБД, которая увеличит размер утилитка до примерно 1Мб (неприемлемое решение из-за размера, насколько я понимаю).

Выбирайте либо медленное, либо сложное, либо "большое"...
Быстро, просто и с минимальным размером не получится :)


QuestionX   (2004-09-29 16:32:00) [7]


> [4] QuestionX   (29.09.04 10:03)
>
> Если миллион структур, то все-таки рекомендую воспользоваться
> советом [1] Defunct ©   (29.09.04 05:40)
> А то сейчас Вы пытаетесь разработать свою СУБД...

Во что превратиться небольшая утилитка, использующая FireBird ?
Не могли бы вы привести одну структуру из миллиона которая отвечала бы изначальным требованиям ?


Sandman25   (2004-09-29 10:07:00) [8]

[4] QuestionX   (29.09.04 10:03)

Если миллион структур, то все-таки рекомендую воспользоваться советом [1] Defunct ©   (29.09.04 05:40)
А то сейчас Вы пытаетесь разработать свою СУБД...


QuestionX   (2004-09-29 10:03:00) [9]

Хорошо, с поиском вроде проясняется, но вот как хранить - то ? Представте что там порядка миллиона таких структур а при загрузке программу нужно считать по имени скажем штук 20-30. Не грузить же весь файл в память ?


TUser   (2004-09-29 08:00:00) [10]

Хеши. Есть THashedStringList, туда через указатель втулить все остальное. Только с ним осторожнее - при добавлении каждой новой строки н все хеши забывает.
Есть еще нагруженные деревья, например.


Defunct   (2004-09-29 05:44:00) [11]

> и при этом обеспечивать максимально быстрый поиск по полю "Имя", при этом не загружая всю базу в память и учитывая то, что длина полей "Имя" и "Описание" - произвольно.

если уж совсем лениво в базами разбираться, вон 4 дня поиском маялись:

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1096054352&n=0


Defunct   (2004-09-29 05:40:00) [12]

FireBird Embedded


Наверх

Титульная страница Поиск, карта сайта Написать письмо