私が書いているサーバーは、すべての人と直接接触するわけではありませんが、さまざまな人によって実行されると予想されます。サーバーはクラスター内で相互に通信します。サーバーの機能の一部には、潜在的に非常に大きなテーブルから行の小さなサブセットを選択することが含まれます。どの行を選択するかを正確に選択するには、ある程度の調整が必要です。また、クラスターを実行している人 (例えば、私自身) が選択基準を更新できることが重要であり、すべてのサーバー管理者に新しいバージョンのサーバーをデプロイしてもらう必要はありません。 .
実行時に任意の Python コードをダウンロードして実行するサーバーをインストールしたいと思う人はいないため、単純に Python で関数を記述することは実際には選択肢ではありません。
私が必要としているのは、この目標を達成するためにドメイン固有言語を実装する最も簡単な方法に関する提案です。この言語は、単純な式の評価だけでなく、テーブル インデックスのクエリと返された行の反復処理も実行できる必要があります。言語の書きやすさと読みやすさは、実装のしやすさに次ぐものです。また、クエリ オプティマイザー全体を作成する必要がないことも望んでいるため、クエリするインデックスを明示的に指定するものが理想的です。
これをコンパイルする必要があるインターフェースは、App Engine データストアがエクスポートするものと同様の機能を備えています。テーブルの任意のインデックスで連続した範囲を照会できます (たとえば、より小さい、より大きい、範囲、等値のクエリ)。 、次に、返された行をブール式でフィルタリングします。複数の独立した結果セットを連結することもできます。
この質問は、私が SQL を求めているように聞こえると思います。ただし、このデータを支えるデータストアがリレーショナル データベースであることを要求したくはありません。また、SQL を自分で再実装しようとするオーバーヘッドも必要ありません。また、既知のスキーマを持つ単一のテーブルのみを扱っています。最後に、結合は必要ありません。はるかに単純なものがはるかに望ましいでしょう。
編集:いくつかの誤解を解消するために説明を拡張しました。