dotnet / dotnet/orleans

New query functionality

Open
#4,232 11 comments 11 reactions 0 assignees View on GitHub
enhancement
Dominant language
C#
Stars
10.9k
Forks
2.1k
Avg merge
15h 1m
Merged PRs (30d)
345

Description

@wentaowu and I are planning to add more query functionality beyond what's in http://github.com/OrleansContrib/Orleans.Indexing . We'd welcome recommendations for high-priority additions, e.g., ones you had to implement in your app due to a lack of built-in Orleans support. We have two questions. First, what types of query expressions are most important? For example:

1. Select grains in a grain class satisfying a {<, ≤,>, ≥} predicate on a property. E.g., Employee.Salary < 100K. This requires adding B-trees to Orleans.Indexing, which currently supports only hash indexes.

2. Top-K query over a group of grains in a grain class. E.g., top-10 players in a game, grouped by game type, which is a property of the game grain-type.

3. Aggregate queries, i.e., count, sum, max, min, average over a collection. E.g., number of devices of each device type, where device type is a property of the device grain-type.

4. Path queries. E.g., a list of teams that have a member M with M.Languages containing "F#", where Team is a grain-type that has a collection-valued property called Members, and Member is a grain type with a collection-valued property called Languages.

Second, over which set of grains can a query be executed? For example:

5. Queries over all initialized grains of one or more grain-types, where grains are mapped to persistent storage.

6. Same as (5), but one or more of the grain types is not persisted.

7. Queries over active grains, only.

8. Queries over streams, with a window function. E.g., all devices that reported a failure in the last 5 minutes.

9. Materialized views. For a given query, maintain its result in the face of updates to the underlying grains. E.g., a count of the number of faulty devices of each device type (which is a grain class).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.