Таким образом, в настоящее время у нас есть требование извлекать данные из 3 отдельных систем в 3 «промежуточные базы данных».Эти промежуточные базы данных используют один и тот же макет таблицы.
После того, как все 3 промежуточные базы данных заполнены, инструмент извлечения берет данные, проверяет их и перемещает в «окончательную» базу данных с сохраненными связями.
В настоящее время существует около 8 таблиц, каждая из которых содержит ~ 100 тыс. Строк.Так что не очень много данных.Однако для передачи требуется довольно много времени.
Примером данных могут быть сообщения в блоге в тегах с такими таблицами:
- Blog Post
-- ID
- Tags
-- ID
- Blog Post Tags
-- Blog ID
-- Tag ID
Так что при извлечении данных нам нужносохранить отношения, даже если ID изменится.поэтому Insert (if not exists) Post, Get ID
, Insert (if not exists) Tag, Get ID
, Insert Blog Post Tag, with ID's
.
В настоящее время я использую объекты LLBLGen и выбираю лот из 10000 Blog Post Tags
, проверяя, существует ли Post
, если нет insert
и то же самое с tag
.Но из-за огромного количества запросов на Blog Post Tag
это занимает довольно много времени.
Другой способ, который я пробовал, это Do all Blog Posts
, Do All Tags
, тогда делайте все Blog Post Tags
.Однако это не позволяет повторно запускать задачу в случае сбоя (так как предыдущий метод будет удалять каждые Blog Post Tags
при передаче.
Мы используем C # 3.5, SQL 2008, LLBLGen 2.6 (однакоможет изменить это).
Как лучше всего это сделать?