Нужен совет по проверке массива на предмет изменений - PullRequest
0 голосов
/ 05 марта 2019

Я работаю над проектом, который сохраняет информацию в базу данных из внешнего API.Этот API-интерфейс отображает только самую последнюю доступную информацию, поэтому мне нужно проверить этот API-интерфейс и сравнить его со своей собственной базой данных, чтобы узнать, есть ли новые изменения.

Ранее я делал это, сравнивая каждое отдельное значение вручную:

if($externalapi['item'] !== $mydatabase['item']) {
    // changes detected!
}

Теперь, когда я делаю V2 этого проекта, я чувствую, что это неправильный подход, и я должен сделать это по-другому.

Я думал о MD5 'вывод внешнего API и вывод моей собственной базы данных, и сравните эти два.

if(md5($externalapi) !== md5($mydatabase)) {
    // changes detected!
}

, но я не уверен, насколько это надежно.

Каков наилучший подход кэто? * * 1013

1 Ответ

0 голосов
/ 05 марта 2019

При определении надежности хеш-функции для такого рода использования вас заинтересует вероятность коллизии имен «проблема дня рождения» для криптографического хеша. Например, я полагаю, что типичный хэш MD5 будет иметь 50% -ную вероятность возникновения коллизии имен, если вы хэшируете несколько миллиардов различных списков каждую секунду в течение 100 лет.

Поиск криптографических хешей для «проблемы дня рождения» или «вероятности столкновения имен» даст вам всю математику, которую вы могли бы хотеть для понимания надежности.

...