Стандартное решение для этого - хеш-функции.У вас есть возможность взять каждую строку и вычислить идентификатор + хэш ее содержимого.Теперь вы сравниваете хэши, и если они одинаковы, то вы предполагаете, что строка одинакова.Это несовершенно - теоретически возможно, что разные значения будут давать одно и то же значение хеш-функции.Но на практике вам нужно больше беспокоиться о том, что космические лучи вызывают случайные перевороты в вашем компьютере, чем о хэш-функциях, которые не работают, как обещано.
Обе rsync
и git
являются примерами широко используемыхпрограммное обеспечение, которое использует хэши таким образом.
В общем случае вычисление хэша перед его помещением в базу данных выполняется быстрее, чем выполнение серии сравнений внутри базы данных.Кроме того, это позволяет распределять обработку по нескольким машинам, а не ограничивать ее в базе данных.А сравнение хешей - это меньше работы, чем сравнение многих полей, вне зависимости от того, делаете ли вы это в базе данных или нет.
Существует множество хеш-функций , которые вы можете использовать.В зависимости от вашего приложения вы можете использовать криптографический хеш, хотя вам, вероятно, и не нужно.Больше битов лучше, чем меньше, но 64-битный хэш должен подойти для приложения, которое вы описываете.После обработки триллиона дельт у вас все равно будет меньше 1 шанса на 10 миллионов, если вы допустили случайную ошибку.