2010-07-22 2 views
0

Например. 2 Источники данных, 1 база данных, с которой вам разрешено вмешиваться, а другая нет. 2 источника данных содержат записи Person, и вам необходимо выполнить следующие функции.Как бы вы сравнили большие объемы данных из базы данных?

  1. Найти соответствующие лица из обоих источников данных
  2. Run бизнес-правил на этих соответствующих лиц (это может быть, чтобы проверить, был ли человек получил повышение заработной платы и так далее
  3. Все сирота лица и сохраняться человек к базе данных.

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

Примечание: Может быть 40k человек, чтобы управлять бизнес-правилами.

+0

Как на Oracle, так и на SQL Server вы можете ссылаться на внешний сервер базы данных и использовать его таблицы, как если бы они были собственными (с ограничениями) - то есть, если они дают вам доступ. Вы можете взаимодействовать с данными на уровне базы данных и на уровне приложений, это всего лишь обычная логика бизнеса. Если нет прямого доступа, вам необходимо работать со всеми данными. Если две базы данных не совпадают (например, у вас есть обновленные данные с D1 по D2), используйте дату изменения D1 для учета только тех записей, которые были изменены (если они есть). –

ответ

0

Я работаю над приложением, которое выполняет очень похожие действия. Единственное, что мое не делает, это манипулировать информацией (она просто считывает данные).

Что я сделал, это импортировать данные из 1 источника в DataSet, а затем, когда пришло время сравнить с базой данных, я просто выбираю из таблицы базы данных, где уникальный идентификатор совпадает с значением из мой набор данных (вы можете использовать LIKE в SQL в качестве альтернативы), и если что-то найдено, оно возвращает значения из базы данных.

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

Надеюсь, что это поможет.

0

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

Он также помогает в системах, которые пытаются сопоставить с таблицей, в которой хранится уникальный идентификатор записи из каждой системы, так что при внесении изменений они все равно могут оставаться согласованными. o Когда Мэри Смит выходит замуж за Джонни Джонса, и в одной системе она превращается в Мэри Джонс, ее информация все еще может быть матче Мэри Смит в другой.