Для попереднього порівняння даних таблиць на різних серверах у старій нотатці запропоновано обчислити MD5 від двійкового подання масиву:
Запит для контрольної суми вибірки
select md5(array_send(array(select B from A order by 1))) as md5;Приклад охоплює значення стовпця B таблиці A, а не всю базу даних. Для зіставлення потрібно виконувати однаково визначений запит на обох серверах і враховувати типи даних, порядок, NULL та узгоджений стан даних. Сумісність двійкового подання між різними типами або версіями не слід припускати автоматично.
Межі такого порівняння
Однакова контрольна сума є попереднім сигналом, а не безумовним доказом тотожності: колізії можливі. Для відповідальної перевірки потрібне безпосереднє зіставлення даних, а великі вибірки не варто без оцінки пам’яті збирати в один масив.
Опис md5(bytea): документація PostgreSQL. Цей прийом не порівнює схеми, індекси, права або інші об’єкти бази.
Немає коментарів:
Дописати коментар