EnglishУкраїнськаmRussian
Login/New
Unanswered topic

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


Author Message
Written on: 20. 11. 2015 [20:40]
punk
Василий Петров
registered since: 09.05.2011
Posts: 57
Добрый день, Роман.

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

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

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

[This article was edited 1 times, at last 20.11.2015 at 20:44.]



10925