Я пишу сервер, который, как я ожидаю, будет управляться многими разными людьми, а не со всеми, с которыми у меня будет прямой контакт. Серверы будут взаимодействовать друг с другом в кластере. Часть функциональности сервера включает в себя выбор небольшого подмножества строк из потенциально очень большой таблицы. Точный выбор того, какие строки выбраны, потребует некоторой настройки, и важно, чтобы человек, выполняющий кластер (например, я), обновил критерии выбора, не получив каждого администратора сервера для развертывания новой версии сервера ,Написание определенного для домена языка для выбора строк из таблицы
Просто написать функцию в Python на самом деле не вариант, так как никто не захочет установить сервер, который загружает и выполняет произвольный код Python во время выполнения.
Что мне нужно, это предложения по простейшему способу внедрения определенного для домена языка для достижения этой цели. Язык должен быть способен к простой оценке выражений, а также к запросам индексов таблиц и итерации по возвращенным строкам. Простота написания и чтения языка является второстепенным по сравнению с простотой ее реализации. Я также предпочел бы не писать полный оптимизатор запросов, поэтому что-то явно указывает, какие индексы для запроса были бы идеальными.
Интерфейс, с которым это придется скомпилировать, будет схожим по возможностям с тем, что экспортирует хранилище данных App Engine: вы можете запрашивать последовательные диапазоны по любому индексу в таблице (например, меньше, больше, чем, диапазон и запросы равенства), затем отфильтруйте возвращаемую строку любым логическим выражением. Вы также можете объединить несколько независимых наборов результатов.
Я понимаю, что этот вопрос звучит так же, как я прошу SQL. Однако я не хочу требовать, чтобы хранилище данных, поддерживающее эти данные, было реляционной базой данных, и я не хочу накладных расходов на попытку переопределить SQL сам. Я также имею дело только с одной таблицей с известной схемой. Наконец, никаких соединений не потребуется. Что-то намного проще было бы намного предпочтительнее.
Редактировать: Расширенное описание, чтобы прояснить некоторые заблуждения.
Это было для реализации GQL в App Engine? : P – wTyeRogers 2018-01-24 19:23:29