在微服务和云原生愈发流行的今天,数据的分布也愈发脱离单库单机而更加复杂,使用的数据库类型也会更多,但业务的复杂依然会带来了大量的数据查询和导出需求,而很多时候我们很难为数据量的大部分系统创建完整的BI数仓系统,这时候你是不是觉得为这些需求查询和导出数据就会是一个十分困难且耗时的工作?Syncany-SQL就是这样一个工具,来在不依赖数据库的情况下完成不同库表、不同机器和不同数据库类型间直接关联查询和聚合计算后直接导出到常用文件的工具。
直接在本地运行MySQL语法结构的SQL的执行引擎,只使用检查查询从常用MySQL、MongoDB、PostgreSQL、sqlserver、elasticsearch、influxdb、clickhouse、sqlite数据库加载数据及读取execl、csv、json和普通文本文件后,在内存中完成join和聚合运算,单条SQL的执行结果可以临时保存在内存中以便作为后续SQL的输入表继续处理,并且INSERT INTO语句执行指定”仅插入 I“、”存在更新否则插入 UI“、”存在更新否则插入其余删除 UDI“、”删除后插入 DI“四种合并数据模式,针对大数据量也可以分批执行。
整个程序共有两个项目组成,其中
https://github.com/snower/syncany-sql 负责解析SQL
https://github.com/snower/syncany 负责执行
特性
- Join关联查询,支持在不同库表、不同机器和不同数据库类型之间Join查询
- Having在内存中执行,支持复杂条件过滤,只包含聚合计算字段过滤时运行在聚合运算之前,否则在聚合计算之后