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

Откуда:
Сообщений: 51
softwarer
Кроме того, судя по описанию, работа не разовая, а очень даже регулярная и с суммарно приличными объёмами данных.

Да, программа не для разовой работы. И объемы приличные.
Щас вот вроде разобрался с динамическим массивом, в который пишутся данные из файла.

Теперь буду читать как хотя бы быстро проанализировать массив на одинаковые элементы и просто выдать инфу о том что они есть или их нет.

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

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

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

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

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Vladimir Baskakov
я боюсь, что если не хватит объема оперативки - своп тоже что-то запишет на диск

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

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Freimaks
Теперь буду читать как хотя бы быстро проанализировать массив на одинаковые элементы и просто выдать инфу о том что они есть или их нет.

Вам не нужно этого делать. Вам нужно сделать один проход по массиву, заполняя по пути вспомогательную структуру ключами записей. Соответственно логика очень простая:

Берём очередную запись
Определяем её ключ
Если он уже есть в множестве ключей - игнорируем
Если его нет - добавляем и скидываем запись в выходной файл


Ключевой вопрос здесь - эффективно осуществлять операцию "проверили - добавили". В общем случае для этого наилучшим образом подходит структура данных hash set. Хорошие реализации хэшей для дельфи - погуглите, ибо те, что стандартно в VCL, никуда не годятся.
18 апр 12, 13:05    [12432575]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
softwarer
Vladimir Baskakov
я боюсь, что если не хватит объема оперативки - своп тоже что-то запишет на диск

А Вы не бойтесь :) Ещё раз: программа представляет собой трубу ввод-вывод. Она прочитала кусок входного файла, проверила на дубли, скинула в выходной - и этот кусок ей больше не нужен, она может писать в это место другие данные. Если средняя длина записи в данном случае 30 байт, а ключ дедубликации, допустим, 6 байт - значит своп в самом худшем случае наступит ку-у-уда как позже.

Я извиняюсь за тупой вопрос, но мне вот что не понятно - т.е. можно проводить поиск дубликатов (даже не 100%-ых, а только по нескольким полям записи) не загружая весь файл???
Можете дать ссылочку на то как это все хотя бы примерно выглядит????

P.S. Длина записи 20 байт (9 полей) + 4 байта на дополнительное поле времени+ 4 байта на поле цвета(просто время и цвет являются необязательными полями и могут как присутствовать так и нет). B 48 байт на заголовок файла. В терминологии могу путаться ибо не спец.
18 апр 12, 13:08    [12432592]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Freimaks
Member

Откуда:
Сообщений: 51
softwarer
Freimaks
Теперь буду читать как хотя бы быстро проанализировать массив на одинаковые элементы и просто выдать инфу о том что они есть или их нет.

Вам не нужно этого делать. Вам нужно сделать один проход по массиву, заполняя по пути вспомогательную структуру ключами записей. Соответственно логика очень простая:

Берём очередную запись
Определяем её ключ
Если он уже есть в множестве ключей - игнорируем
Если его нет - добавляем и скидываем запись в выходной файл


Ключевой вопрос здесь - эффективно осуществлять операцию "проверили - добавили". В общем случае для этого наилучшим образом подходит структура данных hash set. Хорошие реализации хэшей для дельфи - погуглите, ибо те, что стандартно в VCL, никуда не годятся.


Логика работы очень понятна!! Буду искать!!! Спасибо за то, что направили на путь истинный :-)
18 апр 12, 13:10    [12432611]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
MasterZiv
Member

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


> Я извиняюсь за тупой вопрос, но мне вот что не понятно - т.е. можно проводить
> поиск дубликатов (даже не 100%-ых, а только по нескольким полям записи) не
> загружая весь файл???

Один раз надо будет файл прочитать.


Posted via ActualForum NNTP Server 1.5

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

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

softwarer
В общем случае для этого наилучшим образом подходит структура данных hash set.

Не подходит, поскольку совпадение хэшей не означает совпадения данных.

Posted via ActualForum NNTP Server 1.5

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

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Dimitry Sibiryakov
softwarer
В общем случае для этого наилучшим образом подходит структура данных hash set.

Не подходит, поскольку совпадение хэшей не означает совпадения данных.

Дим, объясняю простым русским языком: тебе стоило бы слазить в гугль, прочитать о чём идёт речь и не позориться так откровенно, ориентируясь исключительно по тому, что произносимое слово звучит похоже на то, что он когда-то в другом контексте вроде как слышал. Твои выступления в этой теме звучат очень похоже на то, как если бы ты спутал hash с cash и пытался выяснить, при чём тут деньги и почему нельзя использовать бесплатный ФБ.
18 апр 12, 14:04    [12432924]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Freimaks
Я извиняюсь за тупой вопрос, но мне вот что не понятно - т.е. можно проводить поиск дубликатов (даже не 100%-ых, а только по нескольким полям записи) не загружая весь файл???

Можно делать это, не держа весь файл единомоментно в памяти, а читая его кусками. Что даёт возможность эффективно работать с файлами, не влезающими в доступную оперативку.
18 апр 12, 14:11    [12432962]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

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

softwarer
тебе стоило бы слазить в гугль, прочитать о чём идёт речь и не позориться так откровенно,
ориентируясь исключительно по тому, что произносимое слово звучит похоже на то, что он
когда-то в другом контексте вроде как слышал.

Ну слазил я в гугль. Ничего нового для себя не нашёл. Вопреки утверждениям о "трубе" выше,
данные всё-таки накапливаются в памяти и располагаются в массиве по порядку возрастания
хэшей. Если "упорядоченное по возрастанию расположение" нынче не считается сортировкой - я
пас, поскольку старомодно его таковой считаю.

Posted via ActualForum NNTP Server 1.5

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

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

On 04/18/2012 02:52 PM, Dimitry Sibiryakov wrote:

> Не подходит, поскольку совпадение хэшей не означает совпадения данных.

Ты прикалываешься ? Не может быть, чтобы ты был бы таким глупым и неучем.



Posted via ActualForum NNTP Server 1.5

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

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


> Ну слазил я в гугль. Ничего нового для себя не нашёл. Вопреки утверждениям о
> "трубе" выше,

Ну да, те же буквы ... A...Z, а...я ...

> данные всё-таки накапливаются в памяти и располагаются в массиве по порядку
> возрастания
> хэшей. Если "упорядоченное по возрастанию расположение" нынче не считается
> сортировкой - я
> пас, поскольку старомодно его таковой считаю.

Упорядочение хэшей не означает упорядочение записей по ключу, даже если оно
есть. Возрастающие ключи могут давать убывающие хэши, или перемежающиеся
любым образом.

Короче, не лазь больше в интернет -- я тебе всё скажу:
Если B+ tree или map, или красно-чёрное дерево -- это означает, что данные
отсортированы по ключу. Если хэш-таблица -- это означает, что данные по ключу не
отсортированы.

Posted via ActualForum NNTP Server 1.5

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

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

MasterZiv
Упорядочение хэшей не означает упорядочение записей по ключу, даже если оно
есть. Возрастающие ключи могут давать убывающие хэши, или перемежающиеся
любым образом.

А дальше? Что же ты не продолжаешь эту мысль: "упорядочение по ключу не означает
упорядочивание данных, поскольку возрастающие данные могут давать убывающие ключи". Что же
нам теперь, case-insensitive сортировку не считать сортировкой прикажешь?..

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 2006
softwarer
Она прочитала кусок входного файла, проверила на дубли

а если дубль первой записи в хвосте?

допустим запись из 10 полей.
и другая запись - тоже из 10.
когда надо свистеть о совпадении - когда значение некоторого поле 1-ой записи совпало со значением 2-ой? или когда вообще все совпало?

Если совпадение - это когда комбинация первых пяти полей одного равна комбинации пяти полей другого - ага - в мясорубку их, и циферки - в кучку. Была такая циферка в кучке - надо проверять детально. Да? трубообразно. а вот если совпадение - это совпадение по 2-ум произвольным полям? все таки иметь движок, который делает груп бай - хэвинг коунт звездочка больше 1....

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

Откуда: 127.0.0.1
Сообщений: 67534
Блог
MasterZiv
Ты прикалываешься ?

Да нет. Просто изо всех сил старается сделать вид, что хоть в чём-то хоть на сколько-то прав. Некоторым людям с ранимой самооценкой и без фундамента достижений это очень важно. Не было бы этого - сказал бы, например, что последовательное чтение файла есть сортировка, поскольку читает по порядку записей в файле.

Vladimir Baskakov
а если дубль первой записи в хвосте?

То нам как правило не нужна вся первая запись для того, чтобы свистнуть о совпадении.

Vladimir Baskakov
Была такая циферка в кучке - надо проверять детально.

Незачем в данном случае.

Vladimir Baskakov
а вот если совпадение - это совпадение по 2-ум произвольным полям?

Не вижу смысла фантазировать. Автору всё равно лучше знать.
18 апр 12, 16:05    [12434022]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

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

softwarer
нам как правило не нужна вся первая запись для того, чтобы свистнуть о совпадении.

С этого места подробнее, пожалуйста. В каких случаях для сигнализации полного
совпадения вся запись не нужна?

Posted via ActualForum NNTP Server 1.5

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

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

softwarer
сказал бы, например, что последовательное чтение файла есть сортировка, поскольку читает
по порядку записей в файле.

Нет, я бы сказал, что записи в файле хранятся упорядоченными по номеру записи. А ячейки
ОЗУ - упорядочены по адресу. Есть возражения?

Posted via ActualForum NNTP Server 1.5

18 апр 12, 16:20    [12434185]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
любая операция - сортировка
Guest
Dimitry Sibiryakov
MasterZiv
Упорядочение хэшей не означает упорядочение записей по ключу, даже если оно
есть. Возрастающие ключи могут давать убывающие хэши, или перемежающиеся
любым образом.

А дальше? Что же ты не продолжаешь эту мысль: "упорядочение по ключу не означает
упорядочивание данных, поскольку возрастающие данные могут давать убывающие ключи". Что же
нам теперь, case-insensitive сортировку не считать сортировкой прикажешь?..

Ну в таком случае данные вообще везде всегда отсортированы, ведь данные располагаются в порядке адресации которая всегда идет по возрастанию, что в RAM, что в HDD :)
И любая IO-операция есть сортировка :)

Но адресацией нельзя пользоваться, т.к. совпадение адресов не означает совпадение данных.

А хэш-индексы существуют специально для того, чтобы хранить данные упорядоченными и обращаться к ним по диапазону range scan :)
18 апр 12, 16:44    [12434409]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
hash match group by
Guest
kdv
hash match group by
А как это происходит и в чем преимущество данной сортировки в двух словах расскажите.

программист должен изучить все виды сортировок, и потом их применять по месту, как из "словаря". Например, я помню, что есть много разных сортировок, и чем они отличаются, но я не помню, как эти сортировки реализованы (код). Но мне это нафиг не надо - открыл любой справочник по программированию, и посмотрел.

Ну хотя бы плюсы и минусы той или иной сортировки нужно помнить, чтобы применять их к месту?
Или киньте линк на описание хэш-сортировки :)
18 апр 12, 16:48    [12434459]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
Dimitry Sibiryakov
Member

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

любая операция - сортировка
адресацией нельзя пользоваться, т.к. совпадение адресов не означает совпадение данных.

Да? А хэш-таблицы-то и не знают...

Posted via ActualForum NNTP Server 1.5

18 апр 12, 16:58    [12434533]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
любая операция - сортировка
Guest
Dimitry Sibiryakov
любая операция - сортировка
адресацией нельзя пользоваться, т.к. совпадение адресов не означает совпадение данных.

Да? А хэш-таблицы-то и не знают...

Не подходит, поскольку совпадение хэшей не означает совпадения данных.
18 апр 12, 17:03    [12434570]     Ответить | Цитировать Сообщить модератору
 Re: СУБД для временного хранения данных из бинарного файла (под Delphi).  [new]
MasterZiv
Member

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


> А дальше? Что же ты не продолжаешь эту мысль: "упорядочение по ключу не означает
> упорядочивание данных, поскольку возрастающие данные могут давать убывающие
> ключи".

Я писал:
Возрастающие ключи могут давать убывающие хэши, или перемежающиеся
любым образом.

Что же
> нам теперь, case-insensitive сортировку не считать сортировкой прикажешь?..

Дальше пошла клиника -- иди, читай интернет, и попытайся вникнуть в СМЫСЛ букв.

Posted via ActualForum NNTP Server 1.5

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

Откуда: 127.0.0.1
Сообщений: 67534
Блог
Dimitry Sibiryakov
softwarer
нам как правило не нужна вся первая запись для того, чтобы свистнуть о совпадении.

С этого места подробнее, пожалуйста. В каких случаях для сигнализации полного
совпадения вся запись не нужна?

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

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

MasterZiv
Я писал:
Возрастающие ключи могут давать убывающие хэши, или перемежающиеся любым образом.

И этим ты пытаешься доказать мысль, что упорядочивание хэшей не является сортировкой?..

Posted via ActualForum NNTP Server 1.5

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