2013-04-29 5 views
2

Я пытаюсь найти решение для своей проблемы. Заявление о проблемахКак сравнить данные из двух разных баз данных?

  1. У меня есть два разных БД Oracle и AS400. Обе базы данных имеют одинаковую структуру и одни и те же таблицы (но, очевидно, разные имена таблиц).
  2. AS400 обновляется через Интернет, а Oracle обновляется через магазин или со склада.
  3. Оба БД синхронизируются ежедневно, после синхронизации нам нужен отчет, который будет генерироваться ежедневно, чтобы узнать, есть ли какая-либо разница в данных.
  4. Сравнение должно выполняться с обеих сторон, сначала получить данные от AS400 и сравнить с Oracle DB и наоборот.
  5. Мы говорим о 10 миллионах записей здесь. В первый раз это был бы весь анализ БД, и последующий отчет был бы только по записям, которые были изменены или недавно добавлены в БД (это довольно просто и легко позаботиться), но первый раз сравнить то, что мы пытаемся достичь ,

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

Спасибо заранее.

+0

1) использовать библиотеку Joda в Java, а арифметика даты будет для вас вежливостью на Java. 2) Используйте партии для извлечения записей, а хиты будут минимальными для БД. – Satya

+0

@BBBZone ** Оба БД синхронизируются ежедневно, после синхронизации нам нужен отчет, который будет генерироваться ежедневно, чтобы узнать, есть ли какая-либо разница в данных. ** - Небольшая потребность в разъяснении для этого утверждения. После синхронизации оба db будут иметь одинаковые данные.Данные AS400 будут обновляться в оракуле, а данные оракула будут обновляться в AS400. Тогда в чем же необходимость сравнения. – VKPRO

ответ

0

Простой подход к настройке двух источников данных, возьмите данные из каждого магазина и сравнить его.

Конечно ваша память будет дуть с 10 миллионов записей, так что, возможно попробовать захват и сравнение данных в пакетах (остерегайтесь обновления происходит, делая это)

Дальнейшего повышения производительности может быть достигнуто, если вы используете несколько нити

0

Если вы беспокоитесь о потреблении памяти для первоначального сравнения, почему бы не изучить какую-либо форму хэширования данных записи. Предполагая достойный первичный ключ (длинный пример) и дайджест SHA-1, это будет означать 4 + 20 = 24 байта на запись или примерно 200 МБ на базу данных.

0

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

В зависимости от того, как выполняется синхронизация, вы можете получить доступ к ежедневным транзакциям для базы данных Oracle и базы данных AS400. Было бы намного быстрее обрабатывать эти ежедневные файлы транзакций, чем обрабатывать обе все базы данных.

Если ежедневных файлов транзакций нет, это будет вашим первым шагом. Создавайте ежедневные файлы транзакций.

Смежные вопросы