SQL для проверки / согласования данных между двумя таблицами, когда каждая является копией другой

Я ищу для проверки данных по 2 таблицам, где TableA (в исходной базе данных пользователей - DB2) является копией TableB (в хранилище данных - DB2/Netezza).

Из-за того, что процесс копирования данных нестабилен и выполняется ежедневно, а не в реальном времени, в целевой БД есть расхождения, которые мне нужно выяснить и найти. Кроме того, не нужно создавать большую нагрузку на сервер, что может нарушить нормальную работу организации.

В настоящее время я делаю следующее:

a) SUM checks on all numeric fields 
b) MAX / MIN checks
c) Row Count checks (COUNT(*))
d) Checking the Data Types on both the DB's to be equal
e) Checking the DISTINCT count of the PRIMARY fields
f) Check MAX of Date on which the row was copied over (we put a new column to specify when that row was copied over)

Помимо вышесказанного, есть ли другой простой способ сделать это в одном запросе SQL, который не использует слишком много ресурсов на серверах баз данных?

Кроме того, кто-нибудь знает способ сопоставления строки с строкой в ​​таблицах DB2-DB2 и DB2-Netezza, как можно сделать с таблицей SAS?

Замечания:

a) Netezza does not have the concept of UNIQUE or PRIMARY, so Referential Integrity and UNIQUE checking is not valid.
b) All the tables have > 100M rows, so running a simple RowCount on each table can sometimes take upto 30-45 mins

1 ответ

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

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

Возможно, запрос, который вы ищете, существует, но в системе, которую вы описываете с>100M строк и 45 минутами RowCounts, может быть, просто может быть, это может занять вечность и день.

Суть в том, что при всем уважении вы можете смотреть не в ту сторону.

Другие вопросы по тегам