Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
sqlman
Member

Откуда: Киев
Сообщений: 272
Добрый день.
Как известно, для достижения инкрементальной загрузки данных CDC (именно логов) нужно изначально выполнить Initial data load в CDC Control Task.
При этом, для получения соответствующего CDC state нужно выполнить переливку самих данных (не логов CDC) в этой самой фазе Initial data load. Не понимаю логики такой работы. Так как стоит задача именно инкрементального переноса лого CDC из одной базы в другую. При чём тут данные?

Не могли бы вы прояснить логику такого подхода?

Спасибо.
12 май 15, 12:28    [17628150]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
sqlman
Добрый день.
Как известно, для достижения инкрементальной загрузки данных CDC (именно логов) нужно изначально выполнить Initial data load в CDC Control Task.
При этом, для получения соответствующего CDC state нужно выполнить переливку самих данных (не логов CDC) в этой самой фазе Initial data load. Не понимаю логики такой работы. Так как стоит задача именно инкрементального переноса лого CDC из одной базы в другую. При чём тут данные?

Не могли бы вы прояснить логику такого подхода?

Спасибо.
Можете по-русски задавать вопросы? Я ничего не понял. Что такое "логи CDC"? Отчет о работе CDC что-ли? Что такое "перенос логов CDC из одной базы в другую"? И зачем вам это нужно?

Так для размышления: в логах SQL Server'а хранятся данные.
12 май 15, 20:48    [17630877]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8488
Имеется в виду SSIS пакет. Полагаю, речь идет о первичной синхронизации и автор не понимает - для чего она требуется.
12 май 15, 21:32    [17631086]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
sqlman
Member

Откуда: Киев
Сообщений: 272
Mind,

Понятно, что "логи CDC" = "Отчет о работе CDC что-ли". Что ещё???

Задача построить аудит с помощью CDC, с хранением данных в отдельной базе.
Всё просто.
13 май 15, 13:48    [17634041]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
sqlman
Member

Откуда: Киев
Сообщений: 272
Владислав Колосов
Имеется в виду SSIS пакет. Полагаю, речь идет о первичной синхронизации и автор не понимает - для чего она требуется.


Автор не понимает зачем первоначально синхронизировать данные исходной таблицы, когда требуется синхронизация только данных CDC.
13 май 15, 13:49    [17634053]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8488
sqlman, чтобы гарантировать целостность данных. Первоначальная заливка + последующая заливка изменений как раз гарантирует идентичность данных на отправителе и получаеле. Получатель изначально может содержать некорректные данные, проще перелить, чем проверять, вероятно.
13 май 15, 15:50    [17635182]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3663
sqlman
При чём тут данные?
Спасибо.

хороший вопрос. CDC это изменения. На что вы собрались накатывать изменения?
Подсказываю - на исходные данные
13 май 15, 16:35    [17635485]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
sqlman
Mind,

Понятно, что "логи CDC" = "Отчет о работе CDC что-ли". Что ещё???
Прочитайте еще раз о CDC. У вас каша в голове. CDC читает логи SQL Server'а и извлекает из них данные.

sqlman
Задача построить аудит с помощью CDC, с хранением данных в отдельной базе.
Всё просто.
CDC это не система аудита, CDC это тул для репликации данных. Использование CDC предполагает, что на получателе данных будет создана точная копия, вы же хотите отслеживать только изменения. Стандартному CDC Control Task нужна точка отсчета, последний загруженный номер транзакции (lsn). Без Initial data load этого lsn у вас не будет, соответственно не понятно с какого момента извлекать данные. CDC Control Task в SSIS работать скорее всего не будет, но вы можете напрямую читать из системных таблиц - cdc.dbo_TableName_CT. Правда в этом случае возможна потеря данных.
13 май 15, 20:05    [17636589]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4822
Выставите в исходной таблице ROWVERSION и отталкивайтесь от неё.
13 май 15, 20:53    [17636740]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4918
Блог
Mind
Прочитайте еще раз о CDC. У вас каша в голове. CDC читает логи SQL Server'а и извлекает из них данные.
А вот мне кажется, что каша у вас в голове. Особенно когда вот это говорите:
Mind
CDC это тул для репликации данных

Change Data Capture - это никакой не тул для репликация (для этого у MSSQL есть другие инструменты) и никуда CDC накатывать данные не обязан. CDC - это захват изменений. Точка. Он регистрирует факт изменения, а что потом с ними делать - это уже другой вопрос. Я не специалист по Microsoft CDC, но давайте расскажу на примере того, что я знаю хорошо - GoldenGate.

GoldenGate - это, в одной стороны, средство для захвата изменений. Он парсит Transaction Log MSSQL и если необходимо лезет в Backup за резервной копией старого лога. Распарсенный лог содержит вектор изменений (для INSERT это новые значения, для UPDATE старые и новые, для DELETE только старые). Этот вектор изменений пишется в специальные файлы на диске, которые потом транслируются на целевые системы.

Дальше эти вектора изменений можно использовать по разному:
1) можно реконструировать исходную команду (UPDATE, DELETE, INSERT) и тогда вы получите репликацию
2) а можно превратить все UPDATE, DELETE, INSERT в INSERT, добавив поля с типом операции, временем commit, пользователем, совершившим изменение, временем захвата и т.д.

Так вот, в первом случае вам действительно нужна начальная копия, чтобы в нее реплицировать, а во втором случае ничего синхронизировать не нужно. Целевая таблица будет изначально пустая, на ней будут отключены первичные и уникальные ключи, да и остальные constraint тоже. И нее будут вставляться все изменения. Получится как раз то, что вы хотите - таблица аудита или истории (кто как называет). Часто делают оба вариант и получают stage область, полезную для загрузки хранилища данных.
14 май 15, 00:41    [17637485]     Ответить | Цитировать Сообщить модератору
 Re: CDC и SSIS. Зачем нужна переливка исходных данных при Initial data load.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Alexander Ryndin
Mind
Прочитайте еще раз о CDC. У вас каша в голове. CDC читает логи SQL Server'а и извлекает из них данные.
А вот мне кажется, что каша у вас в голове. Особенно когда вот это говорите:
Mind
CDC это тул для репликации данных

Change Data Capture - это никакой не тул для репликация (для этого у MSSQL есть другие инструменты) и никуда CDC накатывать данные не обязан. CDC - это захват изменений.
Я говорил про SSIS-овский CDC Control Task, который как раз таки работает только как для репликации. Если нужно что-то другое - писать всю логику придется самому.
14 май 15, 20:11    [17641801]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить