Форум: "Основная";
Текущий архив: 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