2021-09-20 08:00:10
Сравнение данных по контрольной сумме [No1C]
Моя деятельность сейчас связана не только с 1С, а потому рубрика No1C (= Not only 1C).
Сравнить два набора данных (если это набор, а не пара реквизитов) быстрее, если сравнивать их контрольные суммы (далее - КС). Например, когда нужно сравнить состав документа с составами всех документов в базе. Да, есть накладные расходы на расчёт КС, да, все зависит от ситуации и архитектуры, КС можно хранить, производительность мерить и т.д.
Как правильно сравнивать наборы данных (или объекты) на равенство по КС независимо от архитектуры и способа реализации:
1. КС должна покрывать все значащие поля и только их. Не нужно включать служебные поля, но нужно все поля данных.
2. Если у наборов не совпали КС - данные точно отличаются (см п.1).
3. Если КС наборов совпали, необходимо проверять каждое поле данных на равенство. Есть вероятность, что они отличаются.
ДанныеА=ДанныеБ == КСа=КСб
КСа=КСб <> ДанныеА=ДанныеБ
PS Если ваша собственная реализация КС всегда уникальна и не может выдать одинаковое значение для разных данных, значит она как минимум ничем не отличается от полного сравнения всех полей.
@yellow_pad | #1С #No1C #КонтрольнаяСумма
853 viewsЕвгений Буйлин блог: @yellow_pad, 05:00