Цитата:
Сообщение от
fed
Появилась идея сделать отдельную табличку, где у меня только два поля - RecId и Hash. Смысл таблички - отдельная уникальная комбинация аттрибутов и их значений. Все остальные таблицы на нее ссылаются по RecId. (То есть - примерно как это со стандартной таблицей DimensionAttributeSet работает).
На одном проекте мои коллеги делали функционал с хэш
нужно было в некой таблице сделать ссылку на разные источники данных с разным набором уникальных полей + возможность восстановления, если вдруг данные пересоздадут.
Решали так же через общую табличку с
+ поле hash
+ дополнительное поле (соль).
Цитата:
Сообщение от
fed
[*]Какой способ хэширования лучше всего использовать ? Из тех, которые в D365FO поддерживаются, я думал о SpookyHash, SHA1 и SHA256.
Обсуждали для 12 может полезно покажется
Хэш функции Why?
Они использовали md5(возвращает guid) из соображений удобства не более на сколько знаю
Цитата:
Сообщение от
fed
Судя по тому что в интернетах пишут, SpookyHash должно хватать, но меня в моем Химикотехнологическом институте вопросам хэширования не учили и я не уверен

Приму в дар советы от людей с более программистским образованием

.[*]Какова вероятность hash collision, когда для разных message генерируются одинаковые hash ?
Низкая (скорее RecId пересекутся имхо), но для надежности коллеги сделали так:
- генерили hash на основе текстового набора имени таблицы + упорядоченных значений полей(это позволяло при необходимости без проблем добавить новое поле) + соль (изначально пустое значение)
- hash был указан как уникальный ключ
- при возникновении ситуации нарушения уникальности ( try catch с исключением duplicateKey) значение соли меняли (банальный счетчик вроде) и повторяли.
Как то так