Сравнение и сопоставление сбора данных об изменениях и уведомлений об изменениях в базе данных - PullRequest
4 голосов
/ 16 октября 2008

Oracle имеет две, казалось бы, конкурирующие технологии. CDC и DCN.

Каковы сильные стороны каждого?

Когда бы вы использовали один, а не другой?

Ответы [ 2 ]

4 голосов
/ 16 октября 2008

Как правило, вы будете использовать DCN для уведомления клиентского приложения о том, что клиентское приложение должно очистить / обновить кэш приложения. Вы бы использовали CDC для обработки ETL.

DCN обычно предпочтительнее, если у вас есть приложение OLTP, которое необходимо немедленно уведомить об изменениях данных в базе данных. Поскольку цель здесь состоит в том, чтобы минимизировать количество сетевых обращений и количество обращений к базе данных, вы, как правило, хотите, чтобы приложение использовало DCN для запросов, которые либо являются в основном статическими. Если большая часть запроса регулярно меняется, вам может быть лучше просто обновить кэш приложения на заданной частоте, чем постоянно выполнять запросы для получения измененных данных (DCN не содержит измененных данных, только ROWID строки (ы), которые изменились). Если приложение закрывается, я считаю, что DCN позволяет потерять изменения.

CDC, как правило, предпочтительнее, если у вас есть приложение DSS, которое должно периодически проверять все данные, которые изменились в ряде таблиц. CDC может гарантировать, что подписчик получал каждое изменение базовой таблицы (таблиц), что может быть важно, если вы пытаетесь реплицировать изменения в другую базу данных. CDC позволяет подписчику извлекать изменения по своему усмотрению, а не пытаться уведомить подписчика о наличии изменений, поэтому вы определенно захотите CDC, если хотите, чтобы подписчик обрабатывал новые данные каждый час или каждый день, а не почти в реальном времени. , (примечание: DCN также имеет гарантированный режим доставки, см. Комментарии ниже. - Марк Харрисон)

1 голос
/ 16 октября 2008

CDC, кажется, гораздо сложнее настроить, чем DCN.

Я имею в виду настройку DCN. Я заключаю выбор в начальный и конечный блок DCN, а затем пишу процедуру, которая будет вызвана с набором изменений. Вот и все.

CDC требует издателей и подписчиков и в любом случае, похоже, больше работы.

...