Динамические запросы с ArangoDB

Я ищу писать динамические запросы для графовой базы данных ArangoDB и мне интересно, есть ли лучшие практики или стандартные подходы к этому.

Под "динамическими запросами" я подразумеваю, что пользователи будут иметь возможность создавать запрос, который затем будет выполняться в наборе данных.

Методы, которые ArangoDB может поддержать, могут включать:

  • Динамически генерировать AQL-запросы, вводя bindvars вручную
  • Напишите функции Foxx для доставки поддерживаемых запросов и попросите другую функцию Foxx связать их вместе для создания ответа.
  • Напишите рабочий процесс, который извлекает данные во временную коллекцию, а затем вызывает функции Foxx для фильтрации / сортировки данных до желаемого результата.

Запросы будут очень открытыми, где кто-то (например):

  • Опросите все страны с населением более 10000000
  • Сортировать страны по земле в квадратных километрах
  • Выберите 10 стран по охвату земель
  • Выберите основной язык, на котором говорят в каждой стране
  • Посчитайте вхождения каждого языка.

Один этот запрос просто выполнить, но если пользователь смог [x] проверить или выбрать из диапазона поддерживаемых опций запроса, упорядочить их по-своему и получить выходные данные, это немного сложнее.

Есть ли поддерживаемые или рекомендуемые подходы к этому?

Мой текущий подход заключается в написании блоков AQL, которые доставляются в каждую часть, вероятно, в формате LET Q1 = (....), LET Q2 = (...), и, наконец, в нижней части запроса есть универсальный способ обработки запросов для генерации ответа.

Но у меня есть ощущение, что разумное использование функций Foxx может помочь и здесь: кодирование Foxx-Query-Q1 и Foxx-Query-Q2 для поддержки каждого типа запроса, а затем агрегационное приложение Foxx, которое вызывает правильные запросы в правильном порядке. построить правильный ответ.

Если кто-нибудь видел лучшие способы сделать это, было бы здорово получить несколько советов / советов.

Спасибо!

0 ответов

Другие вопросы по тегам