|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
любая операция - сортировка А хэш-индексы существуют специально для того, чтобы хранить данные упорядоченными и обращаться к ним по диапазону range scan :) С этого места будьте добры попподробнее , а то чуствую нужно сверить конспект и расставить заметки на полях ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 20:04 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
ДохтаРлюбая операция - сортировкаА хэш-индексы существуют специально для того, чтобы хранить данные упорядоченными и обращаться к ним по диапазону range scan :) С этого места будьте добры попподробнее , а то чуствую нужно сверить конспект и расставить заметки на полях Ну вы же не будете спорить, что range scan легко провести по отсортированному массиву/таблице? (даже без индексов range-границы быстро находятся бинарным поиском) А как нам в этой сортировке поможет "сортировка по хэшу" сейчас нам расскажет Dimitry Sibiryakov :) Dimitry Sibiryakovhash match group byhash match group by А сортировка по хэшу, конечно же, сортировкой не является. Ню-ню... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 21:19 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
любая операция - сортировкаА как нам в этой сортировке поможет "сортировка по хэшу" сейчас нам расскажет Dimitry Sibiryakov :) Легко: никак не поможет. Не делается по хэш-индексу range scan. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 21:52 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
любая операция - сортировкаДохтаРпропущено... С этого места будьте добры попподробнее , а то чуствую нужно сверить конспект и расставить заметки на полях Ну вы же не будете спорить, что range scan легко провести по отсортированному массиву/таблице? (даже без индексов range-границы быстро находятся бинарным поиском) А как нам в этой сортировке поможет "сортировка по хэшу" сейчас нам расскажет Dimitry Sibiryakov :) Давайте не будем подглядывать в конспект Дмитрия. С первой частью вопросов нет. А вот с сортировкой по хешу есть, не могу найти у себя в конспекте гарантированной корреляции между возрастанием значения хеш функции в зависимостси от возростания ее агрумента. Может лекцию проспал, напомните будьте добры пруф, если вас не затруднит. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 22:06 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
ДохтаРлюбая операция - сортировкапропущено... Ну вы же не будете спорить, что range scan легко провести по отсортированному массиву/таблице? (даже без индексов range-границы быстро находятся бинарным поиском) А как нам в этой сортировке поможет "сортировка по хэшу" сейчас нам расскажет Dimitry Sibiryakov :) Давайте не будем подглядывать в конспект Дмитрия. С первой частью вопросов нет. А вот с сортировкой по хешу есть, не могу найти у себя в конспекте гарантированной корреляции между возрастанием значения хеш функции в зависимостси от возростания ее агрумента. Может лекцию проспал, напомните будьте добры пруф, если вас не затруднит. :) Сортировка по хэшу? Ну как же, вот она ссылка сортировка по хэшу Только вот не надо, что я снова к Дмитрию подглядываю, Дмитрий не может ошибаться :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 22:33 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Сейчас тестеров на FVMas катастрофически не хватает. Поэтому буду предлагать именно его, продукцию новокузнецкого баянолитейного завода. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 00:31 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Кстате в вашем случае у Юры есть интерфейс DeleteDublikaty_u. Если вы ее вызовите и она вывалится с эксепшином то дубликаты определенно есть, без вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 00:39 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> И этим ты пытаешься доказать мысль, что упорядочивание хэшей не является > сортировкой?.. Во-первых, хэш-коды не упорядочиваются, они просто адреса для доступа к записям. Это грубо говоря адрес дупла, куда ты положил эту запись. Номер коробки. во-вторых ничего доказывать и не надо -- есть факт, хэш-таблица не сортирует записи. Если ты считаешь, что это не так -- доказывай ты, что она сортирует. Также ещё можешь доказать, что земля плоская, солнце вращается вокруг земли, а по небу ездит Зевс в колеснице. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 12:59 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZivТакже ещё можешь доказать, что земля плоская, Всем чмоки в этом чате. Под сортировкой можно подразумевать получение из неупорядоченного (произвольного) множества упорядочного. Делается это методом изменения физического расположения элементов в множестве или созданием упорядоченного массива ссылок и есть суть вашей дисскуссии. То что ключ сортировки может не очнь коррелировать с любой другой функцией от элемента множества к сути сортировки отношения не имеет. Но это ни коем образом не имеет отношение ни к вопросу ТС, ни к вопросу Дмитрия о том, как проверить то, что множество A является подмножеством B без сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 13:48 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
ТС, IMHO. Собственно можно взять любую, какая больше нравится (по цене, легкости администрирования, пониманию как с ней работать и т.п.). Можно хоть embeded хоть отдельную. Если процесс разовый (т.е. дали множество файлов и надо из них составить один без дублей), то можно посмотреть в сторону in memory database, если периодический (подкидывают новые файлы к старому множеству), то в сторону клаcсических БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 13:58 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZivхэш-коды не упорядочиваются, они просто адреса для доступа к записям. Это грубо говоря адрес дупла, куда ты положил эту запись. Номер коробки. И эти номера у вас таки не упорядоченны. Ню-ню. Покажите своё определение упорядоченности, а то я чувствую, что оно расходится с моим... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:07 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> Всем чмоки в этом чате. Взаимно. > > Под сортировкой можно подразумевать получение из неупорядоченного > (произвольного) множества упорядочного. > Делается это методом изменения физического расположения элементов в множестве или > созданием упорядоченного массива ссылок и есть суть вашей дисскуссии. А теперь объясни, после заполнения хэш-таблицы, где ты там возмёшь одно или другое. > Но это ни коем образом не имеет отношение ни к вопросу ТС, ни к вопросу Дмитрия > о том, как проверить то, что множество A является подмножеством B без сортировки. Вообще-то топик в общем-то делится на два лагеря: есть те, кто понимает, что такое хэш-таблица, и те, кто не понимает, вот и всё. Те, кто не понимает, почему-то никак не хотят пойти поучиться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:09 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> И эти номера у вас таки не упорядоченны. Ню-ню. Покажите своё определение > упорядоченности, Вообще говоря, они не обязаны быть упорядоченными. Примером из жизни может служить адрес дома в городе. Петровка, 38. и Божидовка 7 -- упорядочено ? Что чего меньше ? > а то я чувствую, что оно расходится с моим... Этот супер-мега прикол подзатянулся. Кончай придуриваться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:13 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Смотрю проблема вызвала нехилый спор. Я пока сделал не с СУБД. Пошел по пути хранения всего в памяти. Сделал свой класс (TBinPoints), в котором описал все возможные поля, которые могут встретится в файлах разного строения (специфика работы требует этого). Далее создал 3 конструктора, каждый соответствует одной из возможных версий файла. Далее создал процедуру чтения с использованием TBinaryReader. Для того, чтобы это вообще работало создал три записи (packed record), которые также соответствуют версиям файлов. В процедуре создается поток BaseStream.Read в параметрах которого вписывается нужная запись (например, BaseStream.Read(RPointsTimeColor, SizeOf(RPointsTimeColor));). Далее в переменную (BinPoints: TBinPoints) пишется вся инфа. Потом в действие вступает TDictionary из Generics.Collections. В ней есть специальная функция Dictionary1.AddOrSetValue (ключ, значение), которая при загрузке в нее данных уничтожает дубликаты (т.е. записи с одинаковым ключом). В качестве ключа я попытался использовать MD5, которая считается для строки X+Y+Z+Time. Что в итоге: все работает, но долго (даже читает медленно, по сравнению с родной программой) и занимает кучу оперативки (для файла примерно 120 Мб, заняло около 800 Мб) - все из-за MD5, но как еще считать уникальный ключ я пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:13 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> В качестве ключа я попытался использовать MD5, которая считается для строки > X+Y+Z+Time. А на кой ? Тебе дубликаты надо удалять, или ты так, побаловаться с данными ? > Что в итоге: все работает, но долго (даже читает медленно, по сравнению с родной > программой) и занимает кучу оперативки (для файла примерно 120 Мб, заняло около > 800 Мб) - все из-за MD5, но как еще считать уникальный ключ я пока не понял. Тебе нужно всять за ключ набор уникальных полей из твоего файла (которые должны быть уникальны, т.е. по которым ты отсеивать дубликаты будешь). Т.е. ключём должен быть массив пар "название поля"-"значение поля". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:17 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZivЭтот супер-мега прикол подзатянулся. Кончай придуриваться. Придуриваешься тут только ты, растекаясь мыслью по древу вместо использования точных определений. Лично я называю упорядоченным множеством такое, в котором для любого j > i выполняется условие Xj > Xi. Соответственно сортировкой я называю процесс приведения произвольного множества к упорядоченному. В случае хэш-таблицы для любого j > i выполняется условие f(Xj) > f(Xi), где f - хэш функция. Таким образом хэш-таблица удовлетворяет определению упорядоченного множества. И процесс построения хэш-таблицы соответствует алгоритму сортировки вставками, описанной тем же Кнутом, которого таки кое-кому полезно перечитать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:22 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZiv > В качестве ключа я попытался использовать MD5, которая считается для строки > X+Y+Z+Time. А на кой ? Тебе дубликаты надо удалять, или ты так, побаловаться с данными ? > Что в итоге: все работает, но долго (даже читает медленно, по сравнению с родной > программой) и занимает кучу оперативки (для файла примерно 120 Мб, заняло около > 800 Мб) - все из-за MD5, но как еще считать уникальный ключ я пока не понял. Тебе нужно всять за ключ набор уникальных полей из твоего файла (которые должны быть уникальны, т.е. по которым ты отсеивать дубликаты будешь). Т.е. ключём должен быть массив пар "название поля"-"значение поля". MD5 взял просто ради проверки того, что в файле с известным мне кол-вом дубликатов этот инструмент корректно их найдет. А щас как раз работаю над следующим шагом - созданием нормального ключа (вообще ключей, т.к. параметры разные). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:23 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
FreimaksMD5 взял просто ради проверки того, что в файле с известным мне кол-вом дубликатов этот инструмент корректно их найдет. А вероятность коллизий ты учитываешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:25 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovFreimaksMD5 взял просто ради проверки того, что в файле с известным мне кол-вом дубликатов этот инструмент корректно их найдет. А вероятность коллизий ты учитываешь? Нет. Пока данных мало (в одном куске всего 16 точек, в другом около 500 000) я думаю коллизий не возникнет. С MD5 покончено - тест то показал, что инструмент работает :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:29 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMasterZivЭтот супер-мега прикол подзатянулся. Кончай придуриваться. Придуриваешься тут только ты, растекаясь мыслью по древу вместо использования точных определений. Лично я называю упорядоченным множеством такое, в котором для любого j > i выполняется условие Xj > Xi. Соответственно сортировкой я называю процесс приведения произвольного множества к упорядоченному. В случае хэш-таблицы для любого j > i выполняется условие f(Xj) > f(Xi), где f - хэш функция. Таким образом хэш-таблица удовлетворяет определению упорядоченного множества. И процесс построения хэш-таблицы соответствует алгоритму сортировки вставками, описанной тем же Кнутом, которого таки кое-кому полезно перечитать. Сортировку тут упоминали в контексте задачи, нужно ТСу миллионы записей сортировать перед тем чтобы искать дубли или не нужно. Пришли к выводу что не нужно сортировать, хештаблица и фулскан несортированых записей. Внутренние алгоритмы хештаблицы/мапы/сета чего угодно, как вас не касаются алгоритмы работы драйверов в Виндовс при кликаньи мышкой, ТСа не должни касаться. Сортировать ему ничего не нужно, ему нужно сканировать неупорядоченые файлы и добавлять ключи в хештаблицу. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:31 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> В случае хэш-таблицы для любого j > i выполняется условие f(Xj) > f(Xi), где f - > хэш > функция. Это неверное утверждение. > И процесс построения хэш-таблицы соответствует алгоритму сортировки вставками, > описанной > тем же Кнутом, которого таки кое-кому полезно перечитать Мне не нужно, я своей головой думать умею. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:38 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
> MD5 взял просто ради проверки того, что в файле с известным мне кол-вом > дубликатов этот инструмент корректно их найдет. > А щас как раз работаю над следующим шагом - созданием нормального ключа (вообще > ключей, т.к. параметры разные). MD5 -- это хэш. Им нельзя идентифицировать запись. Поэтому оно именно НЕ НАЙДЁТ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:39 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov В случае хэш-таблицы для любого j > i выполняется условие f(Xj) > f(Xi), где f - хэш функция. Таким образом хэш-таблица удовлетворяет определению упорядоченного множества. Блин , это же научное открытие :) Предлагаю срочно внести в аналы , что бы не потерялось не дай Бог. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:41 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZivЭто неверное утверждение. Да неужели?.. И в чём же ты видишь его неверность? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:41 |
|
СУБД для временного хранения данных из бинарного файла (под Delphi).
|
|||
---|---|---|---|
#18+
MasterZivТ.е. ключём должен быть массив пар "название поля"-"значение поля". А не подскажите как этот массив сформировать? Учитывая, что совпадающими могут быть 4 поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:43 |
|
|
start [/forum/topic.php?fid=35&msg=37761010&tid=1552562]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 247ms |
total: | 397ms |
0 / 0 |