Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для временного хранения данных из бинарного файла (под Delphi). / 25 сообщений из 311, страница 1 из 13
17.04.2012, 22:52
    #37758148
Freimaks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Всем привет!
Суть проблемы - есть куча бинарных файлов, хранящих в себе информацию о результатах лазерного сканирования. Файлов может быть много, файлы могут быть тяжелыми (порядка 10-15 млн записей, но это уже край, обычно 3-5 млн, 50-150 мб).
Программа (пишу на Delphi) должна проанализировать файл на наличие дублирующихся записей и произвести какое-либо действие по выбору пользователя.

Предполагается такой план работы:
1. Чтение и одновременная запись из бинарника в БД;
2. Запрос на поиск дублирующихся данных (совпадение нескольких полей у разных записей);
3. Произведение выбранного действия (либо просто ответ да\нет, сколько и т.п.);
4. Вывод инфы из БД в бинарник (опционально);
5. Очистка временной БД;

Соответственно ищется БД с достаточно большой скоростью записи и поиска дублирующихся значений. Как дополнительно - желательно встраиваемая в исполняемый файл, дабы не смущать пользователей лишними файлами (но это не обязательно).

Ну и желательно (но совсем не обязательно) - описание того как вообще с ней работать (запросы и т.п.).

Кто чего посоветует???
...
Рейтинг: 0 / 0
17.04.2012, 22:59
    #37758158
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Посоветуем не забивать гвозди микроскопом и решить задачу тупо и просто (а заодно намного более эффективно).
...
Рейтинг: 0 / 0
17.04.2012, 23:02
    #37758160
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
softwarerрешить задачу тупо и просто

Ну что ты, он же Кнута не читал, ему для сортировки и поиска дубликатов позарез СУБД
нужна... FvMAS - то, что ему нужно. Как раз на Дельфи...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.04.2012, 23:07
    #37758164
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Dimitry SibiryakovНу что ты, он же Кнута не читал, ему для сортировки и поиска дубликатов позарез СУБД
нужна... Читавший Кнута вряд ли станет решать эту задачу сортировкой.. Разве что если при записи обратно в бинарник она всё равно нужна.
...
Рейтинг: 0 / 0
17.04.2012, 23:11
    #37758166
Freimaks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Понял, что надо почитать Кнута... да его я не читал, скрывать не буду...
...
Рейтинг: 0 / 0
17.04.2012, 23:12
    #37758168
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
softwarerЧитавший Кнута вряд ли станет решать эту задачу сортировкой..

Э? А как?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.04.2012, 23:23
    #37758180
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Freimaks
Кто чего посоветует???

Я так думаю нужно поискать компонет реализующий set , multiset, map, multimap для делфи.
...
Рейтинг: 0 / 0
17.04.2012, 23:36
    #37758190
СУБД для временного хранения данных из бинарного файла (под Delphi).
Dimitry SibiryakovsoftwarerЧитавший Кнута вряд ли станет решать эту задачу сортировкой..

Э? А как?..

Так же как это делают все современные СУБД, без сортировки.
...
Рейтинг: 0 / 0
17.04.2012, 23:58
    #37758206
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
без сортировкиТак же как это делают все современные СУБД, без сортировки.

А конкретнее? Как это делает Оракул, например?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.04.2012, 00:03
    #37758211
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
> Понял, что надо почитать Кнута... да его я не читал, скрывать не буду...

Смотри, пока всего не прочитаешь -- и не думай двигаться дальше !
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.04.2012, 00:57
    #37758234
hash match group by
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Dimitry Sibiryakovбез сортировкиТак же как это делают все современные СУБД, без сортировки.

А конкретнее? Как это делает Оракул, например?

hash match group by
...
Рейтинг: 0 / 0
18.04.2012, 02:07
    #37758275
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
hash match group byhash match group by
А сортировка по хэшу, конечно же, сортировкой не является. Ню-ню...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.04.2012, 02:17
    #37758279
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
"Сортировка по хэшу" - это в анналы. "Автор, пеши исчо" (ц)
...
Рейтинг: 0 / 0
18.04.2012, 02:22
    #37758281
hash match group by
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Dimitry Sibiryakovhash match group byhash match group by
А сортировка по хэшу, конечно же, сортировкой не является. Ню-ню...

А как это происходит и в чем преимущество данной сортировки в двух словах расскажите.
...
Рейтинг: 0 / 0
18.04.2012, 04:05
    #37758318
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
hash match group byА как это происходит и в чем преимущество данной сортировки в двух словах расскажите.
программист должен изучить все виды сортировок, и потом их применять по месту, как из "словаря". Например, я помню, что есть много разных сортировок, и чем они отличаются, но я не помню, как эти сортировки реализованы (код). Но мне это нафиг не надо - открыл любой справочник по программированию, и посмотрел.
...
Рейтинг: 0 / 0
18.04.2012, 09:50
    #37758459
Sergey Orlov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Любая NO-SQL база...
...
Рейтинг: 0 / 0
18.04.2012, 10:01
    #37758486
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Freimaks 2. Запрос на поиск дублирующихся данных (совпадение нескольких полей у разных записей);
softwarerПосоветуем не забивать гвозди микроскопом
ну - если наборы полей разные? почему бы и не БД? Firebird встроенный или Sqlite как мне думается могут подойти.
Изучать Кнута конечно полезно, и сортировки знать надо... Но на готовом движке получить желаемый результат проще, трудозатраты меньше, гибкость приемлимая - а скорость работы программы так ли сильно пострадает?
...
Рейтинг: 0 / 0
18.04.2012, 11:04
    #37758619
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
On 04/18/2012 03:07 AM, Dimitry Sibiryakov wrote:

> А сортировка по хэшу, конечно же, сортировкой не является. Ню-ню...

Хэш не сортирует. Хэш группирует как максимум.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.04.2012, 11:06
    #37758624
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Vladimir Baskakovну - если наборы полей разные? почему бы и не БД?
Потому что писать загрузку в БД, выгрузку из БД и решать попутные проблемы будет дольше, чем идти прямым путём, и даст куда худший результат.

Vladimir BaskakovНо на готовом движке получить желаемый результат проще, трудозатраты меньше,
Не в этом случае. Кроме того, судя по описанию, работа не разовая, а очень даже регулярная и с суммарно приличными объёмами данных.

Vladimir Baskakov - а скорость работы программы так ли сильно пострадает?
Весьма и весьма. Нормальная программа для этой задачи представляет собой трубу ввод-вывод с фильтром и эффективно параллелится, а с БД придётся сначала всё загрузить, потом обрабатывать (и небось сортировкой - судя по Дмитрию ФБ другого не умеет, лайт тоже вряд ли кто оптимизировал), потом выгружать, и всё это с приседаниями и ненужными проблемами (скажем, конвертацией чисел в какой-нибудь BCD-шный decimal).
...
Рейтинг: 0 / 0
18.04.2012, 11:07
    #37758627
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
P.S. Не говоря уже о том, что БД будет склонна ещё раз записать эти данные на диск, особенно если они не будут влезать в объём оперативки.
...
Рейтинг: 0 / 0
18.04.2012, 11:27
    #37758678
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
я боюсь, что если не хватит объема оперативки - своп тоже что-то запишет на диск))))). В индексах БД те-же деревья..... которые используются для удаления дублей из множеств? если совсем грубо? анализ содержимого реляционной БД - запросы с груп-баями. насколько они разнообразны, и насколько просто писать их аналог над самопальными структурами данных? Будет ли эта самопальщина в итоге быстрее?

Стебелек дарит надежду!
http://www.sql.ru/forum/actualthread.aspx?tid=863510 - фтристарас.... Я ничего не путаю?
...
Рейтинг: 0 / 0
18.04.2012, 11:32
    #37758697
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
ну и уж если самому....
то может книжка подскажет....

Бакнелл. "Фундаментальные алгоритмы с структуры данных в Delphi"
...
Рейтинг: 0 / 0
18.04.2012, 12:39
    #37758866
Freimaks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Я уже совсем запутался.
Запихал все в динамический массив, по крайней мере все влазит в оперативу, и теперь надо это все обрабатывать.
Если с субд мне было более ли менее ясно что и как - есть физическая база, к которой я делаю запрос, то с массивом в оперативке мне вообще ничего не ясно. Я к сожалению просто любитель в программировании.
Массив делаю так:
1. Объявляю тип record, в котором описываю свои данные
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
TBinPoints_time = packed record //стандартный bin без цвета
PointCoordX: integer;
PointCoordY: integer;
PointCoordZ: integer;
PointCode: byte;
PointEcho: byte;
PointFlag: byte;
PointMark: byte;
PointLine: word;
PointInt:  word;
PointTime: cardinal;
end;
2. Объявляю переменные каждой записи и массива записей (может и не прав, но другого не пришло)
Код: plaintext
1.
2.
3.
4.
5.
var
  Form1: TForm1;
  i:integer;
  PTime:TBinPoints_time;
  PTimeArray:array of TBinPoints_time;
3. Ну и далее процедура чтения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure ReadBinPointsWithRecord(const FileName: String; Output: TStrings);
begin
i:=0;
with TBinaryReader.Create(FileName) do
try
BaseStream.Read(BinHeader, SizeOf(BinHeader));
SetLength(PTimeArray, BinHeader.PntCnt);
while basestream.Position<>basestream.Size do
begin
if (BinHeader.Time>0) and (BinHeader.Color=0) then
begin
BaseStream.Read(PTime, SizeOf(PTime));
PTimeArray[i]:= PTime;
Output.Append('Echo '+inttostr(BinPoints_20020715.PointEcho)+#13);
i:=i+1;
end
Вот так. Ошибок не выдает. 100% что читает правильно - проверял по отдельным частям записи. А чего там в итоге в массиве я пока не знаю... не знаю как проверить если честно.
...
Рейтинг: 0 / 0
18.04.2012, 12:42
    #37758875
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
Freimaks,

СУБД с данными работает, а не с файлами и записями...
...
Рейтинг: 0 / 0
18.04.2012, 12:49
    #37758889
Freimaks
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СУБД для временного хранения данных из бинарного файла (под Delphi).
SergSuperFreimaks,

СУБД с данными работает, а не с файлами и записями...
Ну это понятно... я вроде и не говорил, что я субд хочу целый файл запихать. Я хотел туда писать данные из файла.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для временного хранения данных из бинарного файла (под Delphi). / 25 сообщений из 311, страница 1 из 13
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]