Написание предметно-ориентированного языка для выбора строк из таблицы

Я пишу сервер, который, как я ожидаю, будет запущен многими разными людьми, не со всеми, с кем я буду иметь прямой контакт. Серверы будут связываться друг с другом в кластере. Часть сервераФункциональность s включает в себя выбор небольшого подмножества строк из потенциально очень большой таблицы. Точный выбор выбранных строк потребует некоторой настройки, и этоважно что этоЧеловек, управляющий кластером (например, я), может обновить критерии выбора, не заставляя каждого администратора сервера развертывать новую версию сервера.

Просто написать функцию в Python неЭто действительно вариант, так как никто не захочет устанавливать сервер, который загружает и выполняет произвольный код Python во время выполнения.

Что мне нужно, так это предложения по простейшему способу реализации языка, специфичного для предметной области, для достижения этой цели. Язык должен быть способен к простой оценке выражений, а также к запросам индексов таблиц и итерации по возвращаемым строкам. Легкость написания и чтения языка вторична по отношению к легкости его реализации. Я'Я также предпочел бы не писать целый оптимизатор запросов, поэтому то, что явно указывает, какие индексы запрашивать, будет идеальным.

Интерфейс, с которым это нужно будет скомпилировать, будет аналогичен по возможностям тому, что экспортирует хранилище данных App Engine: вы можете запрашивать последовательные диапазоны для любого индекса в таблице (например, запросы меньше, больше, диапазона и равенства) , затем отфильтруйте возвращенную строку по любому логическому выражению. Вы также можете объединить несколько независимых наборов результатов вместе.

Я понимаю, что этот вопрос звучит так же, как яЯ прошу SQL. Тем не менее, я нене хочу требовать, чтобы хранилище данных, поддерживающее эти данные, было реляционной базой данных, и я нене нужно накладывать на себя попытки переопределить SQL сам. Я'Я также имею дело только с одной таблицей с известной схемой. Наконец, никаких объединений не потребуется. Что-то намного проще было бы гораздо предпочтительнее.

Изменить: Расширенное описание, чтобы устранить некоторые заблуждения.

Ответы на вопрос(9)

Ваш ответ на вопрос