Источник один, слоев порядка 10 (суммарный размер шейпов не более 50 мб). Да, актуализация каждые 3 часа, чаще вряд ли.
Можно сделать так.
Вариант "сельский":
Фоновая служба которая сканирует входной каталог.
По приходу файлов - загрузка через sdeimpot в соответствующие таблицы определение куда грузить - по названию входных файлов. При успешной загрузке - удаляем файлы. При неуспехе - попытка номер 2, неуспех - переносим файлы в папку "брак".
Плюсы:
Простота реализации.
Не нужно ничего оптимизировать - скорость псевдомаксимальная.
Минусы:
Никакой дополнительной обработки входящих данных.
Количество типов данных и их имена жёстко прописано в фоновой службе, добавление нового типа.
Останов/фейл фоновой службы - кто-то страдает.
Всё происходит в одном потоке (количество ядер и процессоров не влияет на скорость, фактически влияет только скорость одного, используемого ядра).
Вариант "сельский +":
Тоже самое, но имена и типы хранятся в ini файле, и считываются перед сканированием директории.
Плюсы:
Простота реализации.
Не нужно ничего оптимизировать - скорость загрузки из одного шейпа в одну таблицу - псевдомаксимальная.
Минусы:
Никакой дополнительной обработки входящих данных.
Останов/фейл фоновой службы - кто-то страдает.
Всё происходит в одном потоке.
Вариант "для пацанофф":
Фоновая служба берёт настройки из ini файла, если в директории есть какие-либо файлы она объявляет COM+ событие на которое реагируют загрузчики. Которые тоже сканируют директорию и ищут необходимый (прописаный в ини) файл. Читают его и записывают в ГБД.
Плюсы:
- Модульность - фейл одного загрузчика или фоновой службы ни на что не влияет. При фейле службы система сама в состоянии её перезапустить.
- Ресурсы системы используються максимально, чем больше ядер и процессоров - тем больше может быть загрузчиков.
- При загрузке данные можно обрабатывать - высчитывать поля, геометрию, и вообще извращаться как угодно.
- Система масштабируеться без остановок фоновой службы (и тем более её перекомпиляции), и вообще чего либо. Каждый модуль подключается отдельно, независимо от других.
Минусы:
- Скорость во многом зависит от кривости рук написавших код загрузчика.
- немного сложновато.
Вариант "для продвинутых пацанофф":
Тоже самое что и предыдущий вариант, только при загрузке используеться режим "только загрузка", и эксклюзивная схема доступа. Плюс ко всему есть возможность хранить ГИУД загрузчика и машину исполнения для вызова DCOM подписчиков и подписчиков "вне очереди исполнения".
Плюсы:
- всё выше перечисленное.
- Максимальная скорость загрузки (на уровне обычного SQL insert'a), возможность постройки систем загрузки на базе Блейд-систем (за счёт распределённых DCOM загрузчиков).
Минусы:
-Ну чтож, довольно сложная система =)))