@junproger

Как при создании отчета объединить данные с нескольких баз данных?

Доброго времени суток!
При разработке сервиса формирования отчетов для системы контроля доступа столкнулся с проблемой.
Суть ее в следующем - есть 2 полностью разделенные БД, расположенные на разных серверах:
- БД-1 содержит личную информацию о пользователях (ФИО, список UID-ов карт и т.п.),
- БД-2 содержит события, связанные с пользователями (привязка идет к UID карты).
БД-2 довольно объемная, в нее ложатся десятки тысяч событий каждый день.

При формировании отчета мне необходимо связать данные с обеих БД, т.е. привязать события к конкретным пользователям (их должностям, организациям и т.п.) на основании UID-а карты, содержащегося в каждом событии.

В результате будут формироваться файлы с различной статистикой по посещаемости, передвижениям и т.п.

Получается что если я, например, хочу получить статистику по "Отделу рекламы" предприятия "Оптсервис", то мне нужно произвести операции на подобии:
- сделать выборку всех пользователей, имеющих отношение к данному предприятию,
- после этого я получу коллекцию чего-то типа {Предприятие, Отдел, ФИО, UID карты},
- далее мне эту коллекцию нужно передать в сервис, который пойдет в БД-2 и извлечет все события для каждого UID-а карты за определенный промежуток времени,
- после этого суммарные данные преобразуются в удобный вид, сохраняться в файл и вернуться пользователю.

Но меня очень смущает та самая операция выборки из БД-2...или очень много запросов или очень большие запросы получаться.

Понимаю что, по всей видимости, более правильным вариантом есть какая-то промежуточная БД, в которую нужно реплицировать обе БД (не знаю возможно ли такое...).
Но здесь есть 2 плохих момента:
- мне крайне нежелательно сводить все эти данные вместе, т.к. есть требования безопасности что данные должны быть разделены на разных серверах...
- и второй момент это размер этой БД.

Прошу совета, т.к. не имел дела с формированиями отчетов и потому понимаю что наверное пытаюсь изобретать велосипед.
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы