Code
https://github.com/apache/incubator-eagle/tree/master/eagle-core/eagle-query/eagle-storage-jdbc
Configuration
- eagle.storage.type: jdbc
- eagle.storage.adapter: mysql mysql oracle postgres mssql hsqldb derby
- eagle.storage.username
- eagle.storage.password
- eagle.storage.database
- eagle.storage.connection.url
- eagle.storage.connection.props
- eagle.storage.driver.class
- eagle.storage.connection.max
Sample:
eagle.storage.type=jdbc eagle.storage.adapter=mysql eagle.storage.username=eagle eagle.storage.password=eagle eagle.storage.database=eagle eagle.storage.connection.url=jdbc:mysql://localhost:3306/eagle eagle.storage.connection.props=encoding=UTF-8 eagle.storage.driver.class=com.mysql.jdbc.Driver eagle.storage.connection.max=8
Rowkey
We simply use UUID as row key of entities and use the key as the primary key named "uuid" in RDBMS table schema.
Features
- Support basic entity operation like CREATE, READ, UPDATE and DELETE
- Support flatten aggregation query
- Support customized entity field type (JdbcEntityDefinitionManager#registerJdbcSerDeser)
Dependencies
- Apache DB - Torque: http://db.apache.org/torque/torque-4.0/index.html
- Apache DB - DdlUtils: https://db.apache.org/ddlutils/
Table DDL
- alertdatasource
create table alertdatasource_alertdatasource(uuid varchar(100), timestamp bigint, enabled bool, config varchar(100), description varchar(100), site varchar(10),datasource varchar(10));
insert into alertdatasource_alertdatasource (uuid, timestamp, enabled, config, description, site, datasource) values("uuid-1", 0, 1,'testconfig','testdesc','testsite','testsource'); - alertstream
create table alertstream_alertstream(uuid varchar(100), timestamp bigint, datasource varchar(100), streamname varchar(100), description varchar(200));
insert into alertstream_alertstream(uuid, timestamp, datasource, streamname, description) values("uuid-1", 0, 'testsource', "teststream", "testdesc") - alertdef
create table alertdef_alertdef(uuid varchar(100), timestamp bigint, site varchar(100), datasource varchar(100), alertexecutorid varchar(100), policyid varchar(100), policytype varchar(100), description varchar(200), policydef varchar(1000), dedupedef varchar(1000), notificationdef varchar(1000), remediationdef varchar(1000), enabled bool, owner varchar(100), lastmodifieddate bigint, severity bigint, createdtime bigint)
insert into alertdef_alertdef(uuid, timestamp, site, datasource, alertexecutorid, policyid, policytype, description, policydef, dedupedef, notificationdef, remediationdef, enabled, owner, lastmodifieddate, severity, createdtime) values("uuid-1", 0, "testsite", "testsource", "testalertexecutorid", "testpolicyid", "siddhiCEPEngine", "testdescription", "testpolicydef", "","","",true,"testowner", 0, 0, 0); - alertexecutor
create table alertexecutor_alertexecutor(uuid varchar(100), timestamp bigint, datasource varchar(100), alertexecutorid varchar(100), streamname varchar(100), description varchar(100));
insert into alertexecutor_alertexecutor(uuid, timestamp, datasource, alertexecutorid, streamname, description) values (
TO-DO
- Support time-series based aggregation
- Investigate why writing performance becomes slower as records count in table increases
- Implement batch insert in JdbcEntityWriterImpl
- Implement DDL Management to generate default table schema DDL according entity definition