AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2009, 18:38   #1  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
всем привет,

пошарился по форуму, но ничего не нашел по такому вопросу: как быстро и хитро сравнить значения двух BLOB-полей? в BLOB-ах хранится текст, можно выгрузить в файл или стрим и сравнивать построчно, но не совсем феншуйно - предполагается работать с большими объемами данных.

если кто сталкивался с подобной дикостью, подскажете решение?
Старый 28.08.2009, 21:49   #2  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
а просто сравнить по размеру?
Старый 31.08.2009, 10:14   #3  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
Цитата:
Сообщение от Sancho Посмотреть сообщение
а просто сравнить по размеру?
для текстовых полей это разве приемлемо? например, в одном поле пробел вначале текста, в другом - пробел в середине: будут ли размеры поля разнится в таком случае? не могу попробовать сам, под рукой нету навижна
Старый 31.08.2009, 14:16   #4  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Храните также хэши файлов (к примеру CRC32) и их сравнивайте между собой
Старый 31.08.2009, 20:10   #5  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Nosta Посмотреть сообщение
для текстовых полей это разве приемлемо?
нет, конечно.
но пока будем придумывать функциональность сравнения BLOB такой параметр как размер автоматом решит 99% проблем сравнения
блобы, как правило, больше текста.
и размер у них больше, кстати, сколько у ваших?
а размер ведется в байтах
так вот в пределе 1 - 100 байт совпадения будут часто
килобайт - мегобайт - гораздо реже
десятки мегабайт - можно говорить об идентификации с большой долей точности.
сотни метров и теробайты - практически однозначная идентификация:
какова вероятность, что 2 разных объекта будут иметь размер, например 254 543 451 байт?
Старый 01.09.2009, 11:26   #6  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
таки да, блобы выносим отдельно, в таблицах храним CRC. и корректно и не в ущерб производительности. спасибо
Старый 01.09.2009, 17:05   #7  
Nosta is offline
Nosta
Участник
 
23 / 10 (1) +
Регистрация: 28.07.2009
Цитата:
Храните также хэши файлов (к примеру CRC32) и их сравнивайте между собой
решение принято, спасибо за направление. вопрос теперь в следующем: как штатными средствами НАВ-а вычислить CRC32 для содержимого BLOB? для тектсовой строки есть STRCHECKSUM, но не для BLOB. писать дополнительную библиотеку с единственной функцией расчета контрольной суммы?
Старый 02.09.2009, 09:16   #8  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Я бы написал доп. внешнюю библиотеку для расчета контрольной суммы файла (не исключено что они уже написаны).
Ну либо в Наве считать БЛОБ в поток и рассчитывать CRC32 кусками по 250 символов.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.