28.08.2009, 18:38 | #1 |
Участник
|
всем привет,
пошарился по форуму, но ничего не нашел по такому вопросу: как быстро и хитро сравнить значения двух BLOB-полей? в BLOB-ах хранится текст, можно выгрузить в файл или стрим и сравнивать построчно, но не совсем феншуйно - предполагается работать с большими объемами данных. если кто сталкивался с подобной дикостью, подскажете решение? |
|
28.08.2009, 21:49 | #2 |
Administrator
|
а просто сравнить по размеру?
|
|
31.08.2009, 10:14 | #3 |
Участник
|
|
|
31.08.2009, 14:16 | #4 |
Участник
|
Храните также хэши файлов (к примеру CRC32) и их сравнивайте между собой
|
|
31.08.2009, 20:10 | #5 |
Administrator
|
нет, конечно.
но пока будем придумывать функциональность сравнения BLOB такой параметр как размер автоматом решит 99% проблем сравнения блобы, как правило, больше текста. и размер у них больше, кстати, сколько у ваших? а размер ведется в байтах так вот в пределе 1 - 100 байт совпадения будут часто килобайт - мегобайт - гораздо реже десятки мегабайт - можно говорить об идентификации с большой долей точности. сотни метров и теробайты - практически однозначная идентификация: какова вероятность, что 2 разных объекта будут иметь размер, например 254 543 451 байт? |
|
01.09.2009, 11:26 | #6 |
Участник
|
таки да, блобы выносим отдельно, в таблицах храним CRC. и корректно и не в ущерб производительности. спасибо
|
|
01.09.2009, 17:05 | #7 |
Участник
|
Цитата:
Храните также хэши файлов (к примеру CRC32) и их сравнивайте между собой
|
|
02.09.2009, 09:16 | #8 |
Участник
|
Я бы написал доп. внешнюю библиотеку для расчета контрольной суммы файла (не исключено что они уже написаны).
Ну либо в Наве считать БЛОБ в поток и рассчитывать CRC32 кусками по 250 символов. |
|