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), desc varchar(200));
insert into alertstream_alertstream(uuid, timestamp, datasource, streamname, desc) values("uuid-1", 0, 'testsource', "teststream", "testdesc")
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