Activiteit: Talk or presentation at a workshop/seminar
Software development is currently one of the most active and changing fields in computer science. Especially in the modern I/O hardware, systems need to be highly responsive and support an effective way for real-time interactions with their users . In this context, Reactive Programming (RP)  has emerged as a promising avenue to solve the increasing requirements for interactive and real-time systems. RP incorporates abstractions for expressing time-varying (or event streams) values and automatically managing dependencies between such values using a dependency graph. At the same time, new databases have emerged to mitigate some problems of the traditional relational model such as scalability and availability of their data. In a BigData setup, NoSQL databases  are one of these new technologies that provide a diverse landscape of solutions for enterprises that look for storing large volumes of changing structured, semi-structured and unstructured data. Despite the fact that these technologies have been used in diverse reactive domains (gaming, advertising, messaging, etc.), most of them follow the traditional “pull-based” model of conventional relational databases, where users/developers have the responsibility of pulling the relevant data from the database. In literature, approaches like Continuous Queries or RethinkDB  offer solutions for building real-time applications based on a push notification model. For example, RethinkDB follows the same spirit as the aforementioned reactive programming model, but its reactive capabilities, called “changefeeds” are limited to a single table and/or a single document. This means that complex reactive queries like reactive joins are no supported. Furthermore, developers have to handle manually (using callbacks) all the notifications to update the application layer. In this context, we envision that new needs require “Full Reactive Databases”. We propose adding reactive behavior to databases for supporting complex reactive queries (e.g. involving joins). The higher-level complex queries are represented by directed acyclic graphs, and they share intermediate results to obtain better performance. Furthermore, we propose an integration of reactive database and a reactive language to query and receive notifications from the database. The goal is to strive for a flat technology stack to avoid issues such as “object-relational impedance mismatch”  or “object-event impedance mismatch” . The main results of this research are:
• A reactive extension of the NoSQL Database Riak KV1 with supports for complex reactive queries.
• A composable-reactive query language that is seamlessly integrated into a reactive language/middleware.