Главная страница
    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.032 c
1-1096541680
DenKov
2004-09-30 14:54
2004.10.17
UnRar.dll and TFileStream


1-1096482823
diabolik
2004-09-29 22:33
2004.10.17
Обработка событий в TListView


3-1095327636
kurilka
2004-09-16 13:40
2004.10.17
DBGRID


3-1095541416
Distortion
2004-09-19 01:03
2004.10.17
Работа с базами данных, как?


8-1090602215
zlo_inside
2004-07-23 21:03
2004.10.17
Загрузить и нарисовать изображение в PNG





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский