Мне необходимо настроить веб-приложение, которое будет взаимодействовать с существующей системой ERP (WinMagi). ERP - это в основном интерфейс для базы данных xBase (FoxPro). База данных находится на внутреннем сервере. Насколько мне известно, ERP не имеет API, но может принимать заказы на покупку и т. Д. Через модуль EDI. Веб-приложение должно иметь возможность принимать онлайн-заказы и запрашивать данные для отчетов.
Мой план на данный момент:
- Синхронизируйте базу данных xBase с экземпляром сервера SQL на виртуальной машине, размещенной в облаке.
- (в одну сторону от ERP -> SQL Server)
- Используйте этот процесс синхронизации как интерфейс между ERP и веб-приложением.
- Отправка заказов на поставку обратно в ERP с использованием EDI.
- Здесь я думаю, что с точки зрения параллелизма данных было бы безопаснее создавать или обновлять данные в ERP через контролируемый и принятый (через ERP) интерфейс.
Вопросы / проблемы:
- Каков наилучший способ обновления базы данных SQL из базы данных xBase? Существуют ли уже существующие библиотеки, которые могут это сделать, чтобы мне не пришлось изобретать велосипед?
- Не блокируется ли база данных xBase во время синхронизации? Или иначе вызвать проблемы для живого ERP?
- Как избежать проблем с параллелизмом / целостностью данных во время синхронизации?
- Эта система не будет передавать живые данные в веб-приложение. Какие проблемы можно ожидать из-за этого?
- Должен ли я предпочесть один язык другому для такого проекта? Я планировал использовать Java / Hibernate MVC.
Возможно, я поступаю неправильно? Могу ли я лучше связать свое веб-приложение напрямую с базой данных xBase? Некоторые проблемы, которые сразу приходят на ум при таком подходе, - это проблемы с сетью между офисом и облачной виртуальной машиной и потенциальные уязвимости безопасности, связанные с открытием ERP непосредственно в Интернет.
Буду очень признателен за любые советы или предложения, которые вы можете дать! Заранее спасибо.
ОБНОВЛЕНИЕ - 3 сентября 2012
Как я сейчас делаю копию данных (это не синхронизация) - запускается ночью:
- Линукс-офис в офисе копирует необходимые DBF из общей папки «только для чтения» на сервере ERP в локальное хранилище.
- DBF конвертируются в CSV с помощью фантастического сценария Дэйва Бертона dbf2csv perl
- Полученные CSV-файлы rsync'd для удаленной виртуальной машины. В данных есть только небольшие изменения, так что это довольно быстро.
- После завершения rsync удаленная виртуальная машина выполняет mysqlimport для производственной БД.
Преимущества этого подхода
- ERP никак не может быть повреждена, так как доступ к сети только для чтения.
- Для синхронизации данных не нужно реализовывать пользовательскую логику, и поэтому нет опасений, что данные могут быть неверными на удаленной виртуальной машине.
- Поскольку копирование данных выполняется ночью, время выполнения не слишком важно.
- Текущее время выполнения составляет около 7 минут для более 1 миллиона записей с примерно 20-30 полями на запись.
- Самые длинные фазы - копирование DBF и преобразование в CSV.
Недостатки
- DBF должны копироваться каждый раз полностью.
- DBF должны быть преобразованы полностью каждый раз.
- Копируемые таблицы блокируются во время mysqlimport. Это на самом деле не слишком большая проблема, поскольку импорт выполняется ночью, а mysqlimport занимает всего около 20 секунд.