Modern application servers handle large numbers of concurrent requests which have to be scheduled according to complex constraints. Standard database management systems solely offer a limited amount of fixed consistency levels and do not provide sophisticated support for service-level agreements. Thus, they can often not be used to satisfy domain-specific scheduling requirements. Hence, the state of the art is to develop schedulers imperatively for domain-specific applications from scratch. This yields fine-tuned schedulers that satisfy the application-specific constraints. But their implementations can be very complex and difficult to understand which causes reduced developer productivity, great costs and long development times, even though time-to-market is a crucial factor. And this approach is not flexible enough to react to rapidly changing market requirements.
In this project, we aspire to facilitate the problem of determining the execution order of large numbers of concurrent requests. Our idea is to treat request sets as data collections and to employ database query processing techniques to generate high-quality request schedules in an efficient manner. We developed a declarative request scheduling model called Oshiya, in which the scheduler state is modeled as relations and scheduling protocols are realized as a set of declarative rules, formulated as queries. In this scheduling model, scheduling is performed by repeatedly executing the queries implementing the scheduling logic over a relation storing pending requests and a history of previously executed requests, the schedule generated so far. Instead of checking each request individually, as done by traditional database management systems, we use a set-at-a-time approach to schedule multiple requests at once. This approach yields concise protocols that are easy to understand resp. to modify which improves developer productivity and flexibility.