Apache Ignite SQL 和扫描查询之间的区别?
Difference between Apache Ignite SQL and Scan Query?
我想知道Ignite SQL和Scan Query有什么区别,包括但不限于:
- 他们的优点和缺点是什么?
- 扫描查询是否支持像SQL这样的索引?
- 有没有专门针对SQL/Scan查询的查询优化?
- 它们之间的性能比较?
- Ignite SQL利用H2数据库查询缓存,Scan Query也是这样做的吗?如果没有,扫描查询的方式是什么?
谢谢
SqlQuery
- (+) 可以通过适当的索引提供更好的性能
- (+) SQL 的全部功能:联接、聚合、分组
- (-) 需要
QueryEntity
配置
- (-) 为索引和内部数据结构消耗更多内存
ScanQuery
- (+) 在某些情况下,更灵活,因为过滤器和转换器可以包含任意代码
- (-) 始终执行完整缓存扫描(不以任何方式使用索引)
- (-) 需要将过滤器和转换器代码 (类) 部署到服务器节点
我会说 SQL 是大多数用例的默认选择。当 filter/transformer 逻辑无法表达为 SQL and/or 需要自定义方法调用时,ScanQuery 很有用。
我想知道Ignite SQL和Scan Query有什么区别,包括但不限于:
- 他们的优点和缺点是什么?
- 扫描查询是否支持像SQL这样的索引?
- 有没有专门针对SQL/Scan查询的查询优化?
- 它们之间的性能比较?
- Ignite SQL利用H2数据库查询缓存,Scan Query也是这样做的吗?如果没有,扫描查询的方式是什么?
谢谢
SqlQuery
- (+) 可以通过适当的索引提供更好的性能
- (+) SQL 的全部功能:联接、聚合、分组
- (-) 需要
QueryEntity
配置 - (-) 为索引和内部数据结构消耗更多内存
ScanQuery
- (+) 在某些情况下,更灵活,因为过滤器和转换器可以包含任意代码
- (-) 始终执行完整缓存扫描(不以任何方式使用索引)
- (-) 需要将过滤器和转换器代码 (类) 部署到服务器节点
我会说 SQL 是大多数用例的默认选择。当 filter/transformer 逻辑无法表达为 SQL and/or 需要自定义方法调用时,ScanQuery 很有用。