General

Recursos

Base de datos

Introducción

El servidor necesita utilizar una base de datos para almacenar la definición de todos sus objetos así como los valores que se recogen desde la instalación.

El servidor viene preparado en su configuración por defecto para trabajar con dos tipos de base de datos, pero es posible incluir soporte para nuevas bases de datos.

Las bases de datos soportadas son Oracle y Apache Derby.

Oracle

Si utilizamos Oracle, significa que estamos utilizando un servidor de base de datos que ya existe en nuestra organización.

Los comandos de los que disponemos nos permitirán proporcionar los parámetros necesarios para establecer una conexión con una base de datos Oracle ya existente.


admin> help oracle

ORACLE cmd

Gestiona el elmacenamiento del SCADA en Oracle.

CHECK               Informa del estado del esquema de datos.
INSTALL             Instala el esquema del modelo de datos necesario para el
                    SCADA.
SET                 Configura los distintos parametros de la conexion con
                    Oracle.
START               Inicia la conexion con Oracle.
STATUS              Informa del estado de la conexion con Oracle.
STOP                Detiene la conexion con Oracle.

admin>

Una vez está establecida la conexión con el servidor Oracle deberemos utilizar el comando ORACLE INSTALL para crear el modelo de datos que necesitará nuestro servidor de adquisición de datos.

Entonces podremos iniciar la conexión con la base de datos con el comando ORACLE START.

En estos momentos nuestro servidor de adquisición de datos ya tiene una base de datos con la que podrá trabajar.

Apache Derby

En aquellas instalaciones que no dispongan de su propia base de datos, se proporciona este servidor de base de datos que está completamente integrado.

Servidor Apache Derby

Disponemos de un conjunto de comandos para configurar el servidor de la base de datos Apache Derby.

admin> help derbyserver

DERBYSERVER cmd

Gestiona servidor Derby.

START               Inicia el servidor Derby.
STATUS              Informa del estado del servidor Derby.
STOP                Detiene el servidor Derby.

admin>

El primer paso es iniciar el servidor.

admin> derbyserver start

derbyserver iniciado.

admin>

Una vez el servidor esta iniciado dispondremos de algunos comandos más para gestionarlo.

Volvamos a ver la lista de comandos.

admin> help derbyserver

DERBYSERVER cmd

Gestiona servidor Derby.

BACKUP              Realiza un backup online de la B.D.
PROPERTIES          Muestra las propiedades del servidor Derby.
RUNTIMEINFO         Muestra informacion del runtime de Derby.
START               Inicia el servidor Derby.
STATUS              Informa del estado del servidor Derby.
STOP                Detiene el servidor Derby.
SYSINFO             Muestra informacion del sistema de Derby.

admin>

La base de datos está disponible tanto para nuestro servidor como para cualquier otra aplicación que desee utilizarla.

Una vez hemos iniciado el servidor de la base de datos Apache Derby, se nos habilitará un cliente que será el encargado de conectar con esta base de datos.

Vemos ahora la lista general de aplicaciones.

admin> help

HELP [APP_NAME [CMD_NAME] ]

HELP
Muestra la lista de aplicaciones disponibles en el sistema.

HELP APP_NAME
Muestra la ayuda de la aplicacion APP_NAME y a continuacion la lista de
comandos que dispone.

HELP APP_NAME CMD_NAME
Muestra la ayuda del comando CMD_NAME de la aplicacion APP_NAME y a
continuacion la lista de parametros soportados.

Las aplicaciones disponibles en este momento son:

DERBYCLIENT         Gestiona la base de datos.
DERBYSERVER         Gestiona el servidor Derby.
FILE                Proporciona los comandos necesarios para poder administrar
                    los ficheros de configuracion del dispositivo.
GATEWAY             Gestiona las pasarelas Modbus.
ORACLE              Gestiona el elmacenamiento del SCADA en Oracle.
PARAMETER           Proporciona los comandos necesarios para poder administrar
                    los parametros de configuracion del dispositivo.
SCADA               Gestiona el modelo de datos.
SERIAL              Proporciona informacion sobre los puertos serie.
SYSTEM              Proporciona los comandos necesarios para poder administrar
                    el sistema.
admin>

Cliente Apache Derby

Veamos las posibilidades que nos ofrece esta nueva aplicación.

admin> HELP DERBYCLIENT

DERBYCLIENT cmd

Gestiona la base de datos.

CHECK               Informa del estado del esquema de datos.
INSTALL             Instala el esquema del modelo de datos necesario para el
                    SCADA.
START               Inicia la base de datos.
STATUS              Informa del estado de la base de datos.
STOP                Detiene la base de datos.

admin>

Ahora utilizaremos DERBYCLIENT para crear el modelo de datos que necesitaremos en el servidor Apache Derby

admin> derbyclient install

Count  Operation
====== ======================================================================
     1 CREATE TABLE APP.ALARMS (ID BIGINT NOT NULL GENERATED BY DEFAULT AS
       IDENTITY (START WITH 1, INCREMENT BY 1),OBJECTTYPE INTEGER NOT
       NULL,OBJECTID INTEGER NOT NULL,ACTIVETS TIMESTAMP NOT NULL,INACTIVETS
       TIMESTAMP,ALARMFAMILY INTEGER NOT NULL,ALARMTYPE INTEGER NOT
       NULL,MESSAGE VARCHAR(1024) NOT NULL)
     2 ALTER TABLE APP.ALARMS ADD CONSTRAINT ALARMS_PK PRIMARY KEY (ID)
     3 CREATE TABLE APP.NODES (ID BIGINT NOT NULL GENERATED ALWAYS AS
       IDENTITY (START WITH 1, INCREMENT BY 1),GATEWAY VARCHAR(20) NOT
       NULL,SLEEP INT NOT NULL,ENABLED SMALLINT NOT NULL)
     4 ALTER TABLE APP.NODES ADD CONSTRAINT NODES_PK PRIMARY KEY (ID)
     5 ALTER TABLE APP.NODES ADD CONSTRAINT GATEWAY_UK UNIQUE (GATEWAY)
     6 CREATE TABLE APP.GROUPS (ID BIGINT NOT NULL GENERATED BY DEFAULT AS
       IDENTITY (START WITH 1, INCREMENT BY 1),PARENTID BIGINT,NAME
       VARCHAR(20) NOT NULL)
     7 ALTER TABLE APP.GROUPS ADD CONSTRAINT GROUPS_PK PRIMARY KEY (ID)
     8 ALTER TABLE APP.GROUPS ADD CONSTRAINT GROUPS_GROUPS_FK FOREIGN KEY
       (PARENTID) REFERENCES APP.GROUPS (ID)
     9 INSERT INTO APP.GROUPS (ID, PARENTID, NAME) VALUES (0, NULL, '/')
    10 CREATE TABLE APP.POINTS (ID BIGINT NOT NULL GENERATED ALWAYS AS
       IDENTITY (START WITH 1, INCREMENT BY 1),NODEID BIGINT NOT NULL,GROUPID
       BIGINT NOT NULL,NAME VARCHAR(20) NOT NULL,PLCTYPE INT NOT
       NULL,POINTTYPE INT NOT NULL,SCALE DOUBLE PRECISION NOT
       NULL,INITIALVALUE DOUBLE PRECISION NOT NULL,BITNUMBER INT NOT
       NULL,LOGGINGMODE INT NOT NULL,READSYNC INT NOT NULL,PERIODUNIT INT NOT
       NULL,READPERIOD BIGINT NOT NULL,LOGATPERIOD INT NOT NULL,DEVICE INT
       NOT NULL,ADDRESS INT NOT NULL,BANK INT NOT NULL,ENABLED SMALLINT NOT
       NULL)
    11 ALTER TABLE APP.POINTS ADD CONSTRAINT POINTS_PK PRIMARY KEY (ID)
    12 ALTER TABLE APP.POINTS ADD CONSTRAINT POINTS_UK UNIQUE (GROUPID,NAME)
    13 ALTER TABLE APP.POINTS ADD CONSTRAINT POINTS_NODES_FK FOREIGN KEY
       (NODEID) REFERENCES APP.NODES (ID)
    14 ALTER TABLE APP.POINTS ADD CONSTRAINT POINTS_GROUPS_FK FOREIGN KEY
       (GROUPID) REFERENCES APP.GROUPS (ID)
    15 CREATE TABLE APP.POINTVALUES (ID BIGINT NOT NULL GENERATED ALWAYS AS
       IDENTITY (START WITH 1, INCREMENT BY 1),POINTID BIGINT NOT NULL,TS
       TIMESTAMP NOT NULL,QUALITY INT NOT NULL,VALUE FLOAT NOT NULL,POINTTYPE
       INT NOT NULL)
    16 ALTER TABLE APP.POINTVALUES ADD CONSTRAINT POINTVALUES_PK PRIMARY KEY
       (ID)
    17 ALTER TABLE APP.POINTVALUES ADD CONSTRAINT POINTVALUES_POINTS_FK
       FOREIGN KEY (POINTID) REFERENCES APP.POINTS (ID)
    18 CREATE TABLE VERSION (MAJOR BIGINT NOT NULL,MINOR BIGINT NOT NULL)

admin>

Finalmente activaremos el cliente.

admin> derbyclient start

derbyclient iniciado.

admin>
admin> derbyclient status

derbyclient.................: Iniciado
Inicio......................: Mon Apr 18 17:47:16 CEST 2011

admin>

En estos momentos nuestro servidor de adquisición de datos ya tiene una base de datos con la que podrá trabajar.