Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.034 c
3-1095829971
RavenD
2004-09-22 09:12
2004.10.17
Почему двойной Last?


14-1096276126
WondeRu
2004-09-27 13:08
2004.10.17
Конец демократии или проблема 2008 года решена!


1-1096535510
Senti
2004-09-30 13:11
2004.10.17
Вопрос по созданию формы...


8-1090686879
fess
2004-07-24 20:34
2004.10.17
Компоненты для работы с графикой


9-1087116065
Жора
2004-06-13 12:41
2004.10.17
Проблемы с клавиатурой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский