Как определить, использует ли запрос 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);

person GeekChick    schedule 02.04.2015    source источник


Ответы (1)


Отличный вопрос. К сожалению, метод репозитория для генерации запросов GemFire ​​OQL на основе имен методов и соглашений, используемых в названии, не поддерживает TRACE или другие операторы OQL, такие как ИМПОРТ.

Как вы, вероятно, знаете, Поддержка Spring Data GemFire ​​Repository основана на Инфраструктура репозитория Spring Data Commons, которая поддерживает наименьший общий знаменатель для самого широкого диапазона поддержки хранилищ данных (реляционная, ключ-значение, документ и т. Д.).

Тем не менее, вы можете включить отладку для всех запросов GemFire ​​OQL, установив свойство GemFire ​​System ...

-Dgemfire.Query.VERBOSE=true

при запуске вашего приложения. См.

Однако ваш вопрос дал мне некоторые идеи. Я думаю предоставить поддержку IMPORT и TRACE с помощью таких аннотаций ...

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

Это было бы очень элегантно и полезно.

См. Новый билет JIRA (SGF-392), который я подал, чтобы добавить поддержку этой функции .

Спасибо!

person John Blum    schedule 03.04.2015
comment
Спасибо! Это было очень полезно, и добавление этих аннотаций было бы отличной идеей! - person GeekChick; 07.04.2015