Как определить наилучшие значения Max_bucket и Seed_value для функции Oracle ORA_Ha sh? - PullRequest
1 голос
/ 24 февраля 2020

Я новичок в Oracle Ха sh функция. Я знаю, что эта функция предназначена для шифрования. Это на самом деле конвертирует очень большой абзац в одно значение ha sh.

Функция Ora_ha sh имеет три различных параметра:

  • Выражение
  • Max_bucket
  • Seed_value

Для значения Max_bucket и seed в документе говорится, что я могу указать от 0 до 429496725. Max_bucket по умолчанию равно 429496725, а Seed_Value по умолчанию равно 0.

Однако кто-нибудь знает, в чем разница между 0 и 429496725 для этих значений?

На самом деле я планирую использовать его для сравнения двух столбцов из двух разных таблиц, каждая строка в каждом столбце которых близка к 3000 символов, и в одной таблице будет около 1 миллиона записей, а в другой - около миллиардов записей. Конечно, обе таблицы можно объединить с помощью столбцов идентификаторов.

В результате я думаю, что использование значения ha sh будет лучшим вариантом, чем простое использование A = B.

Однако, кто-нибудь может научить меня, как определить лучший Max_bucket и Seed_value для функции Oracle ORA_Ha sh?

Заранее спасибо!

1 Ответ

1 голос
/ 24 февраля 2020

ORA_HASH не предназначен для генерации уникальных значений га sh. Вы, вероятно, захотите использовать функцию типа STANDARD_HASH.

ORA_HASH предназначена для ситуаций, когда вы хотите быстро выбросить группу значений в группу сегментов, и sh столкновения полезны. ORA_HASH полезно для ха sh разбиения; например, вам может потребоваться разбить таблицу на 64 сегмента для улучшения управляемости.

STANDARD_HASH можно использовать для создания практически уникальных хэшей с использованием таких алгоритмов, как MD5 или SHA. Эти алгоритмы ha sh полезны для целей криптографии c, тогда как ORA_HASH не подходит. Например:

select standard_hash('asdf') the_hash from dual;

THE_HASH
--------
3DA541559918A808C2402BBA5012F6C60B27661C
...