Использование таблиц CDC для создания состояния БД по состоянию на предыдущую дату - PullRequest
0 голосов
/ 03 июня 2019

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

Я не нашел никаких онлайн-рецептов или блогов по этому поводу.Мне уже удалось осознать, что для того, чтобы преобразовать обычный запрос SELECT в его эквивалент с CDC, важно учитывать количество элементов JOIN и иметь некоторую логику в выборе значимых транзакций.Но это кажется слишком сложным и подверженным ошибкам, чтобы написать эквивалентный запрос вручную для каждого запроса.Есть ли инструмент, который это делает?или это рыночный разрыв?

1 Ответ

0 голосов
/ 03 июня 2019

Изменение сбора данных в целом позволит вам скопировать изменения в исходных таблицах базы данных в новую целевую таблицу.

Один из подходов состоит в том, что вы можете использовать LiveAudit или аналогичные функции аудита, чтобы получить полный журнал отслеживания изменений в этой таблице.(Вставьте все изменения в таблицу аудита для текущей истории).Вам все равно придется выполнить несколько сложных запросов, чтобы идентифицировать последнюю версию строки на основе первичного ключа до рассматриваемого времени.(https://www.ibm.com/support/knowledgecenter/SSTRGZ_11.4.0/com.ibm.cdcdoc.mcadminguide.doc/concepts/mappingliveaudit.html) ** Продукт IBM, а не MS SQL-CDC.

Временные таблицы могут быть лучшим подходом, но у них есть свои сложности с дизайном.

Оба подхода могут быть ограничены количеством сохраняемой истории.
(https://docs.microsoft.com/en-us/azure/sql-database/sql-database-temporal-tables-retention-policy)

...