Используйте Sha vs md5 или Hash в Snowflake-db

Позвольте мне в предисловии сказать, что я не использую это для хранения паролей или любой другой конфиденциальной информации — мне просто нужен sha/хеш на уровне строк, который я могу использовать позже или для быстрой проверки уникальных записей. Мои таблицы будут длинными, в диапазоне от 0,1 до 10 триллионов строк.

Я использую хранилище данных Snowflake, поэтому мои варианты SHA1, SHA2, MD5 (каждый с бинарными опциями) и HASH.

Думаю, я хотел бы свести к минимуму вероятность коллизий (учитывая длинные таблицы), но при этом не сжигать свои вычислительные кредиты без необходимости.

Какой из них является лучшим вариантом, учитывая мой вариант использования?


person Serban Tanasa    schedule 19.12.2017    source источник
comment
Любая хорошая хэш-функция (а это все) равномерно распределяет хэши, так что это не имеет значения.   -  person jhpratt    schedule 19.12.2017


Ответы (1)


Встроенная функция hash должна быть достаточно хороша, если вы согласны с некоторыми конфликтами. Он может быть намного быстрее, чем функции MD5/SHA, и он производит хорошие хэши, учитывая его вывод, но он создает меньший диапазон хэшей (64-битный вывод) и, как таковой, с большей вероятностью вызовет больше конфликтов.

Если вам не нужны конфликты, никакая хеш-функция не гарантирует этого, очевидно.

Функции MD5/SHA в основном полезны, когда вы хотите вычислить хэш строки в форме, совместимой с другими системами, вычисляющими хеш, используя один из этих алгоритмов.

person Marcin Zukowski    schedule 20.12.2017