New query functionality
- 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
Assessment
This issue has not been assessed yet.