Skip to content

Custom a sql executor which supports multiple datasources, like dynamodb、csv、http.

Notifications You must be signed in to change notification settings

SoulSong/calcite-sql-executor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Description

基于Apache calcite构建多数据源联合查询适配器,当前已支持:

  • CSV
    • 支持投影下推
  • DynamoDb
    • 支持无模式定义:动态表名,其映射至一个json文本,json中描述具体的查询目标table、hashKey等信息;
    • 支持模式定义:通过读取被@DynamoDBTable注解的Entity类,注册Table信息;
    • 支持投影下推
    • 支持过滤下推
  • HTTP
    • TODO

Constraint

所有的查询适配器当前仅验证了Varchar和Integer类型,其他处于Todo验证状态。

CSV

  • 数据行head需要包含SqlTypeName定义,其格式如下
ID:VARCHAR,NAME1:VARCHAR,NAME2:VARCHAR

DynamoDb

无模式

  • 待查询目标表需要通过script定义,否则无法获取完整的AttributeDefinition, 其应用于DynamoDbTable
  • 有别于有模式注册,每个查询均会动态注册一个新的DynamoDbTable实例。而getTableMap仅仅返回一个占位表信息作为标识。

有模式

  • 实体定义中字段schema定义全部小写,便于与sql文对应匹配;
  • 实体定义中表名、索引连接符采用_
  • 通过-实现tableName-indexName的连接操作,其作为索引表的注册表名;
  • 目前仅支持所有query filter的AND连接语义操作;
  • 目前仅支持等值过滤,若需要添加其他类型,则需要更多判断,如dynamoDb中hashKey仅支持等值;
  • 当前支持的数据类型有限;

Test

CSV

DynamoDb

Load sample dynamoDb data with AbstractDynamoDbTest

无模式

有模式

MultipleDatasource

组合DynamoDb和CSV两个数据源的联合查询

Reference

官方示例,可参考example中实现,包含UDF和Rule示例。
一个支持HTTP的示例。
以CSV适配器实现,介绍SQL的parse和validate,以及RBO和CBO的使用。
基于blog介绍的一个示例项目。

About

Custom a sql executor which supports multiple datasources, like dynamodb、csv、http.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages