CHECK_SUM
Запрос позволяет проверить равенство контрольных сумм для указанной дельты в различных СУБД хранилища и, тем самым, проверить идентичность данных в этих СУБД.
Доступны следующие области проверки:
- все логические таблицы логической базы данных,
- все столбцы логической таблицы,
- отдельные столбцы логической таблицы.
Проверка контрольной суммы данных каждой логической таблицы производится сравнением контрольных сумм, вычисленных по соответствующим данным, содержащимся в каждой из целевых СУБД.
Контрольная сумма данных формируется по хеш-функции от символьной контрольной строки для этих данных. Контрольная строка для данных всех логических таблиц формируется конкатенацией контрольных строк для данных каждой таблицы. Контрольная строка для данных таблицы формируется конкатенацией контрольных сумм для данных в столбцах из указанного списка. Контрольные суммы для данных в столбцах сопоставляются между целевыми СУБД.
В ответе возвращается:
- 64-битное неотрицательное целочисленное значение совпадающих контрольных сумм указанных данных в разных СУБД, при успешном выполнении запроса;
- сообщение о несовпадении контрольных сумм указанных данных в разных СУБД при успешном выполнении запроса или сообщение о неуспешном выполнении запроса.
Синтаксис
CHECK_SUM(delta_num[, [db_name.]table_name[, square-bracketed_column_list]])
Параметры
delta_num— номер горячей или закрытой дельты, в рамках которой вычисляется контрольная сумма. Если других аргументов не указано, контрольная сумма вычисляется для данных, хранимых во всех логических таблицах логической БД, используемой по умолчанию;table_name— опционально указываемое имя логической таблицы, для данных которой вычисляется контрольная сумма;square-bracketed_column_list— опциональный список имён столбцов указанной логической таблицы, для данных которых вычисляется контрольная сумма. Элементы списка перечисляются внутри квадратных скобок через запятую. Если список столбцов не указан, контрольная сумма вычисляется по всем столбцам логической таблицы.
Ограничения
- Не предоставляется строгой гарантии отсутствия ложноположительных результатов проверки контрольной суммы.
Примеры
Проверка контрольной суммы логической базы данных sales в рамках нулевой дельты:
USE sales
CHECK_SUM(0)
Проверка контрольной суммы столбцов логической таблицы stores в рамках нулевой дельты:
CHECK_SUM(0,sales.stores,[region, address])