Popis a konfigurace
Popis¶
- Založení tabulek do parkoviště a nastavení oprávnění uživatele pro přístup k DB parkoviště je řešeno DB pathem pro GPCash. Pro úplnost uvádíme DDL příkaz pro založení tabulek i pro sybase.
- Pumpy, které posílají data do MQ, jsou v souladu s obrázkem architektury (viz předchozí kapitola) instalovány na server s parkovištěm (windows platforma s Sybase DB), server s běžícím KeyCloak programem (linux s postgre DB), PMC server (linux s postgre DB).
- Pro stažení dat z MQ do BI DB je pumpa, která musí být nainstalována na serveru BI s DB postre.
Založení tabulek pro pumpy¶
-- datova pumpa sybase
CREATE TABLE "DBA"."pump_table" (
"pump_table_id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
"parking_id" INTEGER NOT NULL,
"table_name" VARCHAR(512) NOT NULL,
"last_update" DATE NOT NULL,
"column" VARCHAR(512) NOT NULL,
PRIMARY KEY ( "pump_table_id" ASC )
) IN "system";;
CREATE TABLE "DBA"."pump_table_data" (
"pump_table_data_id" INTEGER NOT NULL DEFAULT AUTOINCREMENT,
"value_column" VARCHAR(128) NULL,
"value_pk" VARCHAR(128) NULL,
"pump_table_id" INTEGER NULL,
PRIMARY KEY ( "pump_table_data_id" ASC )
) IN "system";
-- datova pumpa postgres
CREATE SEQUENCE pump_table_id_seq;
CREATE TABLE public.pump_table (
pump_table_id int8 DEFAULT nextval('pump_table_id_seq'::regclass) NOT NULL,
table_name varchar(512) NOT NULL,
last_update date NOT NULL,
column_name varchar(512) NOT NULL,
CONSTRAINT pump_table_pkey PRIMARY KEY (pump_table_id)
);
CREATE SEQUENCE pump_table_data_id_seq;
CREATE TABLE public.pump_table_data (
pump_table_data_id int8 DEFAULT nextval('pump_table_data_id_seq'::regclass) NOT NULL,
value_column int4 NULL,
value_pk varchar(128) NULL,
pump_table_id int8 NULL,
"row_number" int4 NULL,
value_column_confirmed int4 NULL,
CONSTRAINT pump_table_data_pkey PRIMARY KEY (pump_table_data_id)
);
-- datova pumpa mysql
CREATE TABLE pump_table (
pump_table_id int NOT NULL AUTO_INCREMENT,
table_name VARCHAR(512) NOT NULL,
last_update DATE NOT NULL,
column_name VARCHAR(512) NOT NULL,
PRIMARY KEY ( pump_table_id ASC )
);
CREATE TABLE pump_table_data (
pump_table_data_id int NOT NULL AUTO_INCREMENT,
value_column VARCHAR(128) NULL,
value_pk VARCHAR(128) NULL,
pump_table_id INTEGER NULL,
PRIMARY KEY ( pump_table_data_id ASC )
);
- Tabulka pro ukládání dat na straně BI
CREATE SEQUENCE public.parking_config_id_seq;
ALTER SEQUENCE public.parking_config_id_seq OWNER to "pmc-bi";
CREATE TABLE public.parking_config
(
parking_config_id bigint NOT NULL DEFAULT nextval('parking_config_id_seq'::regclass),
parking_id bigint NOT NULL,
gmtp_id bigint NOT NULL,
subject_id bigint NOT NULL,
CONSTRAINT parking_config_pkey PRIMARY KEY (parking_config_id)
)
WITH (
OIDS = FALSE
)
TABLESPACE pg_default;
ALTER TABLE public.parking_config OWNER to "pmc-bi";
- Do této tabulky je potřeba vložit záznam propojující parking_id a gmtp_id (což je číslo instalace) a subject_id parkoviště.
Konfigurace pumpy¶
Pupmu je možné provozovat ve dvou režimech. Níže je příklad konfigurace obou režimů.
Scheduled tasks¶
#store transfer data
pmc.etlsybase.store = true
#running export schedule
pmc.etlsybase.cron.expression = 2 0,20,40 * * * ?
# (1)!
pmc.etlsybase.cron.repeatedly = false
# (2)!
# DB sybase configuration
spring.datasource.driver-class-name=com.sybase.jdbc4.jdbc.SybDriver
spring.datasource.jdbc-url=jdbc:sybase:Tds:127.0.0.1:2638/greenpro16?SQLINITSTRING=SET TEMPORARY OPTION "connection_authentication"='Company=Green Center s.r.o.;Application=GPP;Signature=000fa55157edb8e14d818eb4fe3db41447146f1571g357e241b4abefe1e00a1075355440585290041de';
# (3)!
spring.datasource.username=pmcbi
spring.datasource.password=xxxx
spring.datasource.idle-timeout=180000
spring.datasource.connection-timeout=30000
spring.datasource.minimum-idle=5
spring.datasource.maximum-pool-size=5
spring.datasource.pool-name=EtlPool
spring.datasource.max-lifetime=1800000
spring.datasource.connection-test-query=SELECT 1
# SQL dialect for generating optimized queries
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=SYBASE
#spring.jpa.show-sql=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# (4)!
# MQ setting
pmc.etlsybase.url = ssl://pmc.parkcloud.cz:61617
pmc.etlsybase.username = pos_broker
pmc.etlsybase.password = xxx
pmc.etlsybase.queuename = etldb
pmc.etlsybase.timeout = 120000
pmc.etlsybase.messageSize = 5000
pmc.etlsybase.batchSize = 30000
pmc.etlsybase.expirationTime = 120000
# (5)!
# export tables
pmc.etlsybase.table = Receipt,ReceiptItem,Station,Revenue,Operator,RevenueItem,Currency,PaymentKind,Card,CardAlias,CardBlockage,CardLicencePlate,Access,Host,Owner,CardJournal,CardJournalEvent,StationEvent,StationJournal,CardPassJournal,CashboxState,CashboxStateItem,ReceiptItemCard,ReceiptItemDiscount,ReceiptItemVoucher,ReceiptStorno,ZonePGS,LengthRule,Rate,RedLetterDays,SaturationRule,ScheduleRule,Season,AccessZoneRate
pmc.etlsybase.columnid = IDReceipt,IDItem,IDStation,IDRevenue,IDOperator,IDRevenueItem,IDCurrency,IDKind,IDCard,IDAlias,IDCard,IDLicencePlate,IDAccess,HAPAddress,IDOwner,IDCardJournal,Action+Language,IDEvent,CreatedWhen+IDStation,IDCard,IDState,IDItem,IDItem,IDItem,IDItem,IDReceipt,IDZone,ScheduleRuleID+fromMinute,IDRate,IDRedLetterDay,ScheduleRuleID+saturationTime,IDRule,IDSeason,IDAccess+Zone
# struktura je Nazev_tabulky=sloupec1,sloupec2|Nazev_tabulky2=sloupec1,sloupec2
pmc.etlsybase.columns =
pmc.etlsybase.whereCondition = ,,,,,,,,,,,,,,,,,,,,,,,,,,,
pmc.etldbsybase.prefix =
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} - %logger{36} - %msg%n
logging.file.name=./logs/GreenPro-ETL.log
logging.file.max-size=100MB
- Tímto nastavením se vypíná opakované spouštění
- Konfigurace připojení do databáze
- Vyměnit za správné uživatelské údaje!
- Nastavení MQ komunikace - je třeba upravit podle prostředí
- Konfigurace tabulek, které se mají přenášet
Service¶
#store transfer data
pmc.etlsybase.store = true
#running export schedule
# every 20 minutes
pmc.etlsybase.cron.expression = 2 0,20,40 * * * ?
# (1)!
pmc.etlsybase.cron.repeatedly = true
# (2)!
# DB sybase configuration
spring.datasource.driver-class-name=com.sybase.jdbc4.jdbc.SybDriver
spring.datasource.jdbc-url=jdbc:sybase:Tds:127.0.0.1:2638/greenpro16?SQLINITSTRING=SET TEMPORARY OPTION "connection_authentication"='Company=Green Center s.r.o.;Application=GPP;Signature=000fa55157edb8e14d818eb4fe3db41447146f1571g357e241b4abefe1e00a1075355440585290041de';
# (3)!
spring.datasource.username=pmcbi
spring.datasource.password=xxx
spring.datasource.idle-timeout=180000
spring.datasource.connection-timeout=30000
spring.datasource.minimum-idle=5
spring.datasource.maximum-pool-size=5
spring.datasource.pool-name=EtlPool
spring.datasource.max-lifetime=1800000
spring.datasource.connection-test-query=SELECT 1
# SQL dialect for generating optimized queries
spring.jpa.hibernate.ddl-auto=none
spring.jpa.database=SYBASE
#spring.jpa.show-sql=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# (4)!
# MQ setting
pmc.etlsybase.url = ssl://pmc.parkcloud.cz:61617
pmc.etlsybase.username = pos_broker
pmc.etlsybase.password = xxx
pmc.etlsybase.queuename = etldb
pmc.etlsybase.timeout = 120000
pmc.etlsybase.messageSize = 5000
pmc.etlsybase.batchSize = 30000
pmc.etlsybase.expirationTime = 120000
# (5)!
# export tables
pmc.etlsybase.table = Receipt,ReceiptItem,Station,Revenue,Operator,RevenueItem,Currency,PaymentKind,Card,CardAlias,CardBlockage,CardLicencePlate,Access,Host,Owner,CardJournal,CardJournalEvent,StationEvent,StationJournal,CardPassJournal,CashboxState,CashboxStateItem,ReceiptItemCard,ReceiptItemDiscount,ReceiptItemVoucher,ReceiptStorno,ZonePGS,LengthRule,Rate,RedLetterDays,SaturationRule,ScheduleRule,Season,AccessZoneRate
pmc.etlsybase.columnid = IDReceipt,IDItem,IDStation,IDRevenue,IDOperator,IDRevenueItem,IDCurrency,IDKind,IDCard,IDAlias,IDCard,IDLicencePlate,IDAccess,HAPAddress,IDOwner,IDCardJournal,Action+Language,IDEvent,CreatedWhen+IDStation,IDCard,IDState,IDItem,IDItem,IDItem,IDItem,IDReceipt,IDZone,ScheduleRuleID+fromMinute,IDRate,IDRedLetterDay,ScheduleRuleID+saturationTime,IDRule,IDSeason,IDAccess+Zone
# struktura je Nazev_tabulky=sloupec1,sloupec2|Nazev_tabulky2=sloupec1,sloupec2
pmc.etlsybase.columns =
pmc.etlsybase.whereCondition = ,,,,,,,,,,,,,,,,,,,,,,,,,,,
pmc.etldbsybase.prefix =
- Tímto nastavením se zapíná opakované spouštění
- Konfigurace připojení do databáze
- Vyměnit za správné uživatelské údaje!
- Nastavení MQ komunikace - je třeba upravit podle prostředí
- Konfigurace tabulek, které se mají přenášet
Instalace služby¶
WINDOWS¶
pro windows je vytvořen instalátor. Instalace probíhá standardně.

Umístění souborů: defaultně se vyplní adresář, ze kterého je instalační soubor spuštěn.
Je možné zadat jinou cestu, například D:\GREENCenter\etl\GreenPro etl-1.0

Dále už není třeba nic měnit. Po instalaci se vytvoří služba GreenPro etl

V adresáři, kam se aplikace nainstalovala je soubor winsw.xml, kde lze upravit konfiguraci služby, přidat flag, upravit parametr prostředí...
<?xml version="1.0" encoding="UTF-8"?>
<service>
<id>GreenPro etl</id>
<name>GreenPro etl</name>
<description>GreenPro etl</description>
<executable>java</executable>
<arguments>-jar ".\pmc-etl-sybase-1.0.1.jar" --spring.profiles.active=dev</arguments>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold>
<keepFiles>100</keepFiles>
</log>
<logpath>%BASE%\log</logpath>
</service>
Po úpravě souboru je nutné službu restartovat.
Vytvoření instalátoru windows¶
Proces je stejný jako pro službu pos. (je třeba mít k dispozici program Inno Setup) v repozitáři je složka script, kde jsou všechny soubory potřebné k vytvoření instalátoru (kromě .jar souboru, který je třeba vytvořit)