Skip to content

Sql 源

扫描表查询表

NeuronEX 数据处理模块通过 SQL 类型的数据源,支持对接sqlserverpostgresmysqlsqlite3oracle等数据库,可以定期查询数据库以获取数据流。

创建流

登录 NeuronEX,点击数据处理 -> 源管理。在流管理页签,点击创建流

在弹出的源管理 / 创建页面,进入如下配置:

  • 流名称:输入流名称

  • 是否为带结构的流:勾选确认是否为带结构的流,如为带结构的流,则需进一步添加流字段。可默认不勾选。

  • 流类型:选择 SQL

  • 配置组:可编辑使用默认配置组,或点击添加配置组,在弹出的对话框中进行如下设置,设置完成后,可点击测试连接进行测试:

    • 名称:输入配置组名称。
    • 数据库地址:数据库的连接地址,各类数据库的详细配置请参考 数据库连接地址
    • 间隔时间:发出查询的时间间隔(毫秒)。
    • TemplateSql:SQL 语句模板,详见SQL 语句模板示例
    • indexField:可选参数,表的哪一列作为索引来记录偏移量。
    • indexValue:可选参数,初始索引值,如果用户指定该字段,查询将使用这个初始值作为查询条件,当获得更大的值时将更新下一个查询。
    • indexFieldType:可选参数,索引字段的列类型,如果是 dateTime 类型,必须将该字段设置为 DATETIME。
    • dateTimeFormat:可选参数,索引字段的时间格式。
  • 流格式:默认 json 格式。

  • 共享:勾选确认是否共享源。

数据库连接地址

数据库连接地址参考:

databaseurl sample
mysqlmysql://username:password@127.0.0.1:3306/testdb?parseTime=true
sql serversqlserver://username:password@127.0.0.1:1433/testdb
postgrespostgres://username:password@127.0.0.1:5432/testdb
oracleoracle://username:password@127.0.0.1:1521/testdb
sqlitesqlite:/tmp/test.db

SQL 语句模板示例

  • 通过单独使用TemplateSql配置项,获取数据库数据。 sql_source

    TemplateSql输入:

    sql
    select top 10 * from Student where id > 1010 order by id ASC

    向数据库执行的输出:

    sql
    select top 10 * from Student where id > 1010 order by id ASC
  • 通过TemplateSql配置项和indexFieldindexFieldTypeindexValue组合使用,获取数据库数据。

    sql_source

    indexField 输入:stun

    indexFieldType 输入:INT

    indexValue 输入:100

    TemplateSql 输入:

    sql
    select * from Student where stun > {{.stun}} limit 10

    向数据库执行的输出:

    sql
    select * from Student where stun > 100 limit 10

    TIP

    该配置方式,支持对数据库中的数据进行增量查询,即每次查询时,会将上次查询的 indexField 最大值作为查询条件,查询出大于该值的数据。

  • 通过TemplateSql配置项和indexFieldindexValueindexFieldTypedateTimeFormat组合使用,获取数据库数据。

    sql_source

    indexField输入:registerTime

    indexValue输入:2022-04-21 10:23:55

    indexFieldType:DATETIME

    dateTimeFormat:YYYY-MM-dd HH:mm:ss

    TemplateSql输入:

    sql
    select * from Student where registerTime > '{{.registerTime}}' order by registerTime ASC limit 10

    向数据库执行的输出:

    sql
    select * from Student where registerTime > '2022-04-21 10:23:55' order by registerTime ASC limit 10

    TIP

    该配置方式,支持对数据库中的数据进行增量查询,即每次查询时,会将上次查询的 indexField 最大值作为查询条件,查询出大于该值的数据。

创建扫描表

请参考创建流部分。

创建查询表

SQL 源支持成为一个查询表。我们可以使用创建表语句来创建一个 SQL 查询表。它将与实体关系数据库绑定并按需查询。

sql_source_lookup

  • cache: bool 值,表示是否启用缓存。
  • cacheMissingKey:是否对空值进行缓存。
  • cacheTtl: 缓存的生存时间,单位是秒。

查询外部数据库比在内存中计算要慢。如果吞吐量很高,可以使用查找缓存来提高性能。如果不启用查找缓存,那么所有的请求都被发送到外部数据库。当启用查找缓存时,每个查找表实例将持有一个缓存。当查询时,我们将首先查询缓存,然后再发送到外部数据库。