Bachelorarbeiten

Baqend + Uni Hamburg

Abschlussarbeiten von Baqend und der DBIS Arbeitsgruppe von Prof. Ritter

Offene Bachelorarbeiten

Smart Offline-Caching for React | Angular | Vue (3 Themen)

Ziel dieser Abschlussarbeit sind der Entwurf und die Umsetzung eines Speed Kit "Starter Kits", das für ein modernes Single-Page Application Framework (entweder React, Angular oder Vue) die Speicherung und Synchronisierung von Offline-Daten übernimmt. Technische Basis für die Integration in das Framework ist Speed Kit, welches auf Basis der Service Worker Technologie dynamisches Caching für Webseiten bereitstellt.

Ziele:

  • Analyse des Frameworks und Ökosystems auf Caching- und Offlineansätze
  • Konzeption einer Framework-gerechten API für die Nutzung von Speed Kit für Caching und Offline-Synchronisation
  • Architektur für die Integration von Speed Kit in das Framework unter Beachtung von Konsistenzeigenschaft, Client-Server-Kommunikation
  • Implementierung der Integration
  • Quantitativer und qualitativer Vergleich des Standardverhaltens des Frameworks gegenüber der implementierten Lösung

Literatur:

Dynamic Websites With Real-Time Databases

Ziel dieser Abschlussarbeit sind der Entwurf und die Umsetzung einer Webseite, die dynamische Inhalte mittels Echtzeitanfragen („Real-Time Queries”) laufend aktualisiert. Hierzu müssen ein geeigneter Use Case (beispielsweise „Webshop”) ausgewählt und hierfür Datenmodell, Daten und Lastgenerator erstellt werden. Die Webseite soll auf Basis verschiedener Echtzeitdatenbanken entwickelt werden und soll als vergleichbarer Show Case für deren Echtzeit-Features dienen.

Ziele:

  • Identifikation geeigneter User Cases
  • Datenmodellierung, Datengenerierung und Lastgenerierung für einen konkreten Use Case
  • Vergleich der Echtzeitfähigkeiten mehrerer Echtzeit-Datenbanken (z. B. Baqend, Meteor, Firebase, RethinkDB, Parse, OrientDB)
  • Implementierung eines der fertigen Webseite in mehreren Versionen (für die verschiedenen Kandidaten)

Literatur:

Integrating Server-Side A/B Testing Into Caching Infrastructures

A/B Tests sind eines der wesentlichen Marketing-Instrumente modern Webseiten, um die Effektivität von Maßnahmen zu bewerten. Serverseitiges A/B Testing wird häufig begleitet von Performance-Einbußen, da ein effizientes Caching verhindert wird. Ziel der Arbeit ist, die Caching Methodik von Speed Kit mit der Vielseitigkeit von A/B Testing-Frameworks zu vereinen.

Ziele:

  • Analyse der bestehenden serverseitigen A/B-Testing Tools auf Funktionsweise und ihren Umgang mit Caching
  • Entwurf und Implementierung einer Möglichkeit Speed Kits Caching-Infrastruktur mit einem ausgewählten A/B Testing Tool zu kombinieren
  • Generalisierung des Entwurfs und mögliche Erweiterung zur Bereitstellung von Funktionalitäten wie Gruppenzuweisung, multivariaten Tests, etc.

Literatur:

Scalable & Fault-Tolerant Real-Time Query Change Propagation

Baqend provides a push-based real-time query interface that keeps database query results up-to-date at the client through incremental change deltas. Through a persistent websocket connection between the client and the application server, end users thus receive updates to their database query results whenever relevant changes occur at the backend. To make this possible, Baqend relies on a scalable real-time query engine (InvaliDB) which is decoupled from the main application server through an asynchronous message broker (the event layer). The current event layer implementation (RedisEvents) is based on Redis, a single-node in-memory datastore. The goal of this thesis is to develop a distributed event layer implementation (e.g. KafkaEvents) that is able to retain and replay data, thus facilitating simplified error handling and improved fault transparency.

Ziele:

  • Research/exploration of the Redis-based event layer implementation, its integration into Baqend's system components, and the current technology landscape: What issues does the Redis-based implementation expose? What advantages are to be expected from a distributed/persistent event layer implementation? What are system candidates for the underlying message queue (Kafka? NATS? ...)?
  • Implementation of a distributed and persistent event layer
  • Evaluation (i.e. benchmark) of the current Redis-based implementation against the new event layer implementation (w.r.t. throughput, latency, etc.)

Literatur:

Distributed & Scalable SQL Real-Time Queries

Baqend relies on a dual query execution strategy: Normal pull-based database queries are evaluated in a common database, whereas push-based real-time queries leverage a distributed & highly scalable query execution framework. Baqend currently supports MongoDB query semantics through a custom-built real-time query engine. The goal of this thesis is to employ an existing continuous query engine to enable SQL-based real-time queries in Baqend.

Ziele:

  • Research: What kind of continuous and pluggable query engine's are there? Are they distributed? Do they support ad hoc queries (or for example only parameterizable templates)? How could each of them be integrated into Baqend to provide collection-based real-time queries?
  • Implementation of a new database language for real-time queries in Baqend using an existing continuous query engine
  • Evaluation (i.e. benchmark) of change notification latency under different workloads, read scalabilitybility.

Literatur:

  • Ressourcensammlung zu unseren Veröffentlichungen, Talks, etc.
  • Baqend real-time query docs: interface description & usage examples
  • Wolle's PhD thesis, in particular:
    • Intro to real-time databases (Chapter 1)
    • Real-time queries in Baqend: concept (Chapter 3) & implementation/benchmark (Chapter 4)
  • DBToaster: an open-source tool to generate continuous query engines for SQL query templates
  • Apache Calcite: an open-source streaming sql engine

Continuous Query Evaluation with Non-Streaming Query Engines

To support push-based real-time queries, Baqend currently relies on a custom-built real-time query engine that matches ongoing write operations against currently active real-time queries. To guarantee correct query results, the real-time query engine needs to follow the exact same semantics as the underlying database. In consequence, developing a real-time query engine for a new database language (e.g. SQL) requires meticulous testing and is complex and cumbersome. The goal of this thesis is to devise a method for real-time query evaluation that only uses an existing pull-based query engine.

Ziele:

  • Research: How is real-time query processing distributed in Baqend? What mechanisms are available to observe result changes in today's databases?
  • Implementation of a new database language for real-time queries in Baqend using an existing continuous query engine
  • Evaluation (i.e. benchmark) of change notification latency under different workloads, read scalabilitybility.

Literatur:

  • Ressourcensammlung zu unseren Veröffentlichungen, Talks, etc.
  • Baqend real-time query docs: interface description & usage examples
  • Wolle's PhD thesis, in particular:
    • Intro to real-time databases (Chapter 1)
    • Real-time queries in Baqend: concept (Chapter 3) & implementation/benchmark (Chapter 4)
  • DBToaster: an open-source tool to generate continuous query engines for SQL query templates
  • Apache Calcite: an open-source streaming sql engine

Hybrid and Cross-Platform Development with Titanium/NativeScript and Backend-as-a-Service Systems (2 Themen)

Cross-Platform Appentwicklungs-Frameworks haben das Ziel, die Entwicklung nativer mobiler Apps durch Betriebssystem-übergreifende Schnittstellen zu vereinfachen. In dieser Arbeit soll untersucht werden, wie durch das Backend-as-a-Service Paradigma (am Beispiel Orestes) in Kombination mit Cross-Platform-Frameworks darüber hinaus die Backend-Entwicklung standardisiert und vereinfacht werden kann. Dazu soll eine Integration der Orestes REST bzw. JavaScript API in das jeweilige Framework erfolgen, um eine direkte Ansteuerung von Datenspeicherung, File-Management, User-Authentifizierung etc. zu ermöglichen.

Ziele:

  • Recherche der Funktionsweise des jeweiligen Cross-Plattform-Frameworks: kann dort nativ JavaScript ausgeführt werden und ggf. mit welchen Einschränkungen? Wie lässt sich die HTTP/REST Kommunikation realisieren? Welche Abstraktionen zur lokalen Speicherung stehen zur Verfügung?
  • Entwurf und Implementierung eines Orestes-SDKs für die jeweilige Plattform. Minimalumfang: CRUD-Operationen & Queries, Login und Registrierung, Ausführen von Backend-Code. Sammeln der Ergebnisse in einem SDK-Shim-Layer für die Zielplattform, mit dem das JavaScript-SDK von Orestes auf der Plattform läuffähig wird.
  • Evaluation der Implementation durch eine prototypische App, die das SDK verwendet.

Literatur: