Schreiben einer domänenspezifischen Sprache zum Auswählen von Zeilen aus einer Tabelle

Ich schreibe einen Server, von dem ich erwarte, dass er von vielen verschiedenen Leuten betrieben wird, mit denen ich nicht alle direkten Kontakt haben werde. Die Server kommunizieren miteinander in einem Cluster. Zum Funktionsumfang des Servers gehört die Auswahl einer kleinen Teilmenge von Zeilen aus einer möglicherweise sehr großen Tabelle. Die genaue Auswahl der ausgewählten Zeilen erfordert einige Anpassungen, und es ist wichtig, dass die Person, die den Cluster ausführt (z. B. ich), die Auswahlkriterien aktualisieren kann, ohne dass jeder Serveradministrator eine neue Version des Servers bereitstellen muss .

Das einfache Schreiben der Funktion in Python ist keine Option, da niemand einen Server installieren möchte, der zur Laufzeit beliebigen Python-Code herunterlädt und ausführt.

Was ich brauche, sind Vorschläge zur einfachsten Implementierung einer domänenspezifischen Sprache, um dieses Ziel zu erreichen. Die Sprache muss in der Lage sein, einfache Ausdrücke auszuwerten, Tabellenindizes abzufragen und die zurückgegebenen Zeilen zu durchlaufen. Das einfache Schreiben und Lesen der Sprache ist von untergeordneter Bedeutung für die einfache Implementierung. Ich würde es auch vorziehen, nicht ein vollständiges Abfrageoptimierungsprogramm schreiben zu müssen, daher wäre etwas, das explizit angibt, welche Indizes abgefragt werden sollen, ideal.

Die Schnittstelle, mit der dies kompiliert werden muss, weist ähnliche Funktionen wie der App Engine-Datenspeicher auf: Sie können für jeden Index in der Tabelle sequentielle Bereiche abfragen (z. B. Abfragen für Bereiche kleiner als, größer als und Gleichheit). Filtern Sie dann die zurückgegebene Zeile nach einem booleschen Ausdruck. Sie können auch mehrere unabhängige Ergebnismengen zusammenfassen.

Mir ist klar, dass sich diese Frage sehr nach SQL anhört. Ich möchte jedoch nicht, dass der Datenspeicher, der diese Daten sichert, eine relationale Datenbank ist, und ich möchte nicht, dass der Aufwand für den Versuch, SQL selbst neu zu implementieren, hoch ist. Ich habe es auch nur mit einer einzelnen Tabelle mit einem bekannten Schema zu tun. Schließlich sind keine Verknüpfungen erforderlich. Etwas viel Einfacheres wäre bei weitem vorzuziehen.

Bearbeiten: Erweiterte Beschreibung, um einige Missverständnisse auszuräumen.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage