如何确定Spring Data Gemfire查询是否使用Gemfire索引



我正在尝试确定我的所有Spring Data Gemfire查询是否都在使用Gemfire服务器上定义的索引。

使用OQL,我知道我可以添加"<trace>",并且在gemfire日志中,它将显示是否正在使用索引:

@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);

但是,我们没有定义OQL的方法呢?(假设用户名不是客户区域的密钥):

CustomerEntity findByUsername(String username);

好问题。不幸的是,基于名称中使用的方法名称和约定生成GemFire OQL查询的Repository方法不支持TRACE或IMPORT等其他OQL语句。

您可能知道,Spring Data GemFire的Repository支持构建在Spring Data Commons Repository基础设施之上,该基础设施为最广泛的数据存储支持(关系型、键值、文档等)维护了最低的公分母。

不过,您可以通过设置GemFire System属性来启用所有GemFireOQL查询的调试。。。

-Dgemfire.Query.VERBOSE=true

启动应用程序时。有关更多详细信息,请参阅GemFire的查询调试用户指南。

不幸的是,如果您只想跟踪一个OQL查询,但会实现您想要的,那么这会有点冗长。

在基于Repository方法的单个OQL查询中进行TRACE的唯一其他方法是使用@query注释,如上图所示。

@Query("<trace> SELECT c FROM /customer c, c.emailAddresses email WHERE email.emailAddress = $1")
CustomerEntity findByEmailAddress(String emailAddress);

不过,你的问题确实给了我一些想法。我正在考虑通过这样的注释提供IMPORT和TRACE支持…

@Trace
@Import("example.app.domain.CustomerEntity")
CustomerEntity findByUsername(String username);

这将是非常优雅和有用的。

请参阅我提交的新JIRA票证(SGF-392),以添加对该功能的支持。

谢谢!

相关内容

  • 没有找到相关文章

最新更新