Динамические запросы с ArangoDB
Я ищу писать динамические запросы для графовой базы данных ArangoDB и мне интересно, есть ли лучшие практики или стандартные подходы к этому.
Под "динамическими запросами" я подразумеваю, что пользователи будут иметь возможность создавать запрос, который затем будет выполняться в наборе данных.
Методы, которые ArangoDB может поддержать, могут включать:
- Динамически генерировать AQL-запросы, вводя bindvars вручную
- Напишите функции Foxx для доставки поддерживаемых запросов и попросите другую функцию Foxx связать их вместе для создания ответа.
- Напишите рабочий процесс, который извлекает данные во временную коллекцию, а затем вызывает функции Foxx для фильтрации / сортировки данных до желаемого результата.
Запросы будут очень открытыми, где кто-то (например):
- Опросите все страны с населением более 10000000
- Сортировать страны по земле в квадратных километрах
- Выберите 10 стран по охвату земель
- Выберите основной язык, на котором говорят в каждой стране
- Посчитайте вхождения каждого языка.
Один этот запрос просто выполнить, но если пользователь смог [x] проверить или выбрать из диапазона поддерживаемых опций запроса, упорядочить их по-своему и получить выходные данные, это немного сложнее.
Есть ли поддерживаемые или рекомендуемые подходы к этому?
Мой текущий подход заключается в написании блоков AQL, которые доставляются в каждую часть, вероятно, в формате LET Q1 = (....), LET Q2 = (...), и, наконец, в нижней части запроса есть универсальный способ обработки запросов для генерации ответа.
Но у меня есть ощущение, что разумное использование функций Foxx может помочь и здесь: кодирование Foxx-Query-Q1 и Foxx-Query-Q2 для поддержки каждого типа запроса, а затем агрегационное приложение Foxx, которое вызывает правильные запросы в правильном порядке. построить правильный ответ.
Если кто-нибудь видел лучшие способы сделать это, было бы здорово получить несколько советов / советов.
Спасибо!