УкраїнськаEnglishmRussian
Вхід/Новий
Тема без відповіді

Прочитать (записать) данные из удалённой БД


Автор Повідомлення
Повідомлення створено: 20. 11. 2015 [20:40]
punk
Василий Петров
Зареєстрован(а) с: 09.05.2011
Повідомлення: 57
Добрый день, Роман.

Есть небольшой проект, которому нужны несколько сотен наборов параметров (рецептов). Рецепты нужны как в "движке" (набор "контроллеров" в LogicLev) так и в визуализаторе. Было решено хранить эти рецепты в БД, чтение и запись из которой проводится SQL запросами. Для упрощения чтения/записи были написаны процедуры на JavaLikeCalc. Через некоторое время, для повышения надёжности и возможности выноса визуализатора на другую машину, "движок" и визуализатор были разбиты на 2 проекта. Все данные (кроме рецептов) из "движка" попадают на визуализатор по DAQGate. И вот, осталась неясная проблема с рецептами - из нужно как-то запрашивать/писать в БД, движка. БД эта SQLite. Я вижу следующие варианты решения:
1. Сделать БД сетевой - MySQL/PostgreSQL. Минус у такого решения только один - нужно держать ещё один сервис на машине с "движком", что во первых, усложняет администрирование, а во вторых не позволяет просто перекинуть каталог с файлами .openscada (придётся еще обновлять БД).
2. Сделать в проекте "движка" входной, а в проекте визуализатора выходной транспорт (+userProtocol) и написать ещё один набор процедур, которые будут считывать/записывать данные через транспорт (а в "движке" принимать/отдавать данные из БД по такому запросу)
3. Отобразить все данные на какой-то LogicLev-контроллер в виде объектов-массивов, пробросить по DAQGate и читать/писать их как угодно, а в "движке" периодически синхронизировать с данными из БД. Оба последних варианта кажутся переусложнёнными и несут риски внесения неявных ошибок.

Собственно, вопрос - а как лучше и есть ли более простое решение?

PS: вариант4. Как-то через SYS.XMLNode из визуализатора вызвать процедуру на удалённой станции, но таких примеров я не нашел.

[Повідомлення редагувалось 1 раз(ів), останній раз 20.11.2015 в 20:44.]



0128