Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Способ хранения информации   Найти похожие ветки 

 
QuestionX   (2004-09-29 04:46) [0]

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

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

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


 
Defunct ©   (2004-09-29 05:40) [1]

FireBird Embedded


 
Defunct ©   (2004-09-29 05:44) [2]

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

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

http://delphimaster.net/view/1-1096054352/


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

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


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

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


 
Sandman25 ©   (2004-09-29 10:07) [5]

[4] QuestionX   (29.09.04 10:03)

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


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


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

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


 
Sandman25 ©   (2004-09-29 16:49) [7]

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

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

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

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

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


 
TUser ©   (2004-09-29 16:54) [8]

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


 
Sandman25 ©   (2004-09-29 16:57) [9]

[8] TUser ©   (29.09.04 16:54)

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


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

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


 
Defunct ©   (2004-09-29 18:25) [11]

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

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


 
Romkin ©   (2004-09-29 18:25) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
4-1095084845
Relaxxx
2004-09-13 18:14
2004.10.17
Как мне инициализировать сразу два порта(СОМ1 и СОМ2)


9-1087138876
Жора
2004-06-13 19:01
2004.10.17
Перемещние по карте


14-1096548475
Guest
2004-09-30 16:47
2004.10.17
Срочно нужен совет


1-1096958807
СержК
2004-10-05 10:46
2004.10.17
Номера цветов


3-1095754396
kj
2004-09-21 12:13
2004.10.17
Запрос в InterBase