Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 13   вперед  Ctrl
 СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
Всем привет!
Суть проблемы - есть куча бинарных файлов, хранящих в себе информацию о результатах лазерного сканирования. Файлов может быть много, файлы могут быть тяжелыми (порядка 10-15 млн записей, но это уже край, обычно 3-5 млн, 50-150 мб).
Программа (пишу на Delphi) должна проанализировать файл на наличие дублирующихся записей и произвести какое-либо действие по выбору пользователя.

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

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

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

Кто чего посоветует???
17 апр 12, 22:52    [12430266]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Посоветуем не забивать гвозди микроскопом и решить задачу тупо и просто (а заодно намного более эффективно).
17 апр 12, 22:59    [12430298]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

softwarer
решить задачу тупо и просто

Ну что ты, он же Кнута не читал, ему для сортировки и поиска дубликатов позарез СУБД
нужна... FvMAS - то, что ему нужно. Как раз на Дельфи...

Posted via ActualForum NNTP Server 1.5

17 апр 12, 23:02    [12430306]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Dimitry Sibiryakov
Ну что ты, он же Кнута не читал, ему для сортировки и поиска дубликатов позарез СУБД
нужна...
Читавший Кнута вряд ли станет решать эту задачу сортировкой.. Разве что если при записи обратно в бинарник она всё равно нужна.
17 апр 12, 23:07    [12430318]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
Понял, что надо почитать Кнута... да его я не читал, скрывать не буду...
17 апр 12, 23:11    [12430327]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

softwarer
Читавший Кнута вряд ли станет решать эту задачу сортировкой..

Э? А как?..

Posted via ActualForum NNTP Server 1.5

17 апр 12, 23:12    [12430331]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
ДохтаР
Member [заблокирован]

Откуда: Новоукраинск
Сообщений: 16864
Freimaks

Кто чего посоветует???


Я так думаю нужно поискать компонет реализующий set , multiset, map, multimap для делфи.
17 апр 12, 23:23    [12430384]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
без сортировки
Guest
Dimitry Sibiryakov
softwarer
Читавший Кнута вряд ли станет решать эту задачу сортировкой..

Э? А как?..

Так же как это делают все современные СУБД, без сортировки.
17 апр 12, 23:36    [12430424]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

без сортировки
Так же как это делают все современные СУБД, без сортировки.

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

Posted via ActualForum NNTP Server 1.5

17 апр 12, 23:58    [12430480]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709



> Понял, что надо почитать Кнута... да его я не читал, скрывать не буду...

Смотри, пока всего не прочитаешь -- и не думай двигаться дальше !

Posted via ActualForum NNTP Server 1.5

18 апр 12, 00:03    [12430489]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
hash match group by
Guest
Dimitry Sibiryakov
без сортировки
Так же как это делают все современные СУБД, без сортировки.

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

hash match group by
18 апр 12, 00:57    [12430546]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54791

hash match group by
hash match group by

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

Posted via ActualForum NNTP Server 1.5

18 апр 12, 02:07    [12430648]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
"Сортировка по хэшу" - это в анналы. "Автор, пеши исчо" (ц)
18 апр 12, 02:17    [12430652]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
hash match group by
Guest
Dimitry Sibiryakov
hash match group by
hash match group by

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

А как это происходит и в чем преимущество данной сортировки в двух словах расскажите.
18 апр 12, 02:22    [12430654]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
hash match group by
А как это происходит и в чем преимущество данной сортировки в двух словах расскажите.

программист должен изучить все виды сортировок, и потом их применять по месту, как из "словаря". Например, я помню, что есть много разных сортировок, и чем они отличаются, но я не помню, как эти сортировки реализованы (код). Но мне это нафиг не надо - открыл любой справочник по программированию, и посмотрел.
18 апр 12, 04:05    [12430704]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Sergey Orlov
Member

Откуда: СПб
Сообщений: 4508
Любая NO-SQL база...
18 апр 12, 09:50    [12431089]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 2006
Freimaks
2. Запрос на поиск дублирующихся данных (совпадение нескольких полей у разных записей);

softwarer
Посоветуем не забивать гвозди микроскопом

ну - если наборы полей разные? почему бы и не БД? Firebird встроенный или Sqlite как мне думается могут подойти.
Изучать Кнута конечно полезно, и сортировки знать надо... Но на готовом движке получить желаемый результат проще, трудозатраты меньше, гибкость приемлимая - а скорость работы программы так ли сильно пострадает?
18 апр 12, 10:01    [12431161]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

On 04/18/2012 03:07 AM, Dimitry Sibiryakov wrote:

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

Хэш не сортирует. Хэш группирует как максимум.

Posted via ActualForum NNTP Server 1.5

18 апр 12, 11:04    [12431620]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Vladimir Baskakov
ну - если наборы полей разные? почему бы и не БД?

Потому что писать загрузку в БД, выгрузку из БД и решать попутные проблемы будет дольше, чем идти прямым путём, и даст куда худший результат.

Vladimir Baskakov
Но на готовом движке получить желаемый результат проще, трудозатраты меньше,

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

Vladimir Baskakov
- а скорость работы программы так ли сильно пострадает?

Весьма и весьма. Нормальная программа для этой задачи представляет собой трубу ввод-вывод с фильтром и эффективно параллелится, а с БД придётся сначала всё загрузить, потом обрабатывать (и небось сортировкой - судя по Дмитрию ФБ другого не умеет, лайт тоже вряд ли кто оптимизировал), потом выгружать, и всё это с приседаниями и ненужными проблемами (скажем, конвертацией чисел в какой-нибудь BCD-шный decimal).
18 апр 12, 11:06    [12431630]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
P.S. Не говоря уже о том, что БД будет склонна ещё раз записать эти данные на диск, особенно если они не будут влезать в объём оперативки.
18 апр 12, 11:07    [12431637]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 2006
я боюсь, что если не хватит объема оперативки - своп тоже что-то запишет на диск))))). В индексах БД те-же деревья..... которые используются для удаления дублей из множеств? если совсем грубо? анализ содержимого реляционной БД - запросы с груп-баями. насколько они разнообразны, и насколько просто писать их аналог над самопальными структурами данных? Будет ли эта самопальщина в итоге быстрее?

Стебелек дарит надежду!
https://www.sql.ru/forum/actualthread.aspx?tid=863510 - фтристарас.... Я ничего не путаю?
18 апр 12, 11:27    [12431837]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 2006
ну и уж если самому....
то может книжка подскажет....

Бакнелл. "Фундаментальные алгоритмы с структуры данных в Delphi"
18 апр 12, 11:32    [12431921]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
Я уже совсем запутался.
Запихал все в динамический массив, по крайней мере все влазит в оперативу, и теперь надо это все обрабатывать.
Если с субд мне было более ли менее ясно что и как - есть физическая база, к которой я делаю запрос, то с массивом в оперативке мне вообще ничего не ясно. Я к сожалению просто любитель в программировании.
Массив делаю так:
1. Объявляю тип record, в котором описываю свои данные

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. Объявляю переменные каждой записи и массива записей (может и не прав, но другого не пришло)

var
Form1: TForm1;
i:integer;
PTime:TBinPoints_time;
PTimeArray:array of TBinPoints_time;
3. Ну и далее процедура чтения

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% что читает правильно - проверял по отдельным частям записи. А чего там в итоге в массиве я пока не знаю... не знаю как проверить если честно.
18 апр 12, 12:39    [12432433]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Freimaks,

СУБД с данными работает, а не с файлами и записями...
18 апр 12, 12:42    [12432453]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
SergSuper
Freimaks,

СУБД с данными работает, а не с файлами и записями...

Ну это понятно... я вроде и не говорил, что я субд хочу целый файл запихать. Я хотел туда писать данные из файла.
18 апр 12, 12:49    [12432485]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8 9 10 .. 13   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить