FernUni Hagen
SECONDO

An Extensible Database System

Get Started → View on GitHub

What is Secondo

Secondo is an extensible database system for non-standard applications — an open-source platform for building and experimenting with new data models. New data types, data structures, and operators are added as algebra modules through a well-defined interface.

It is one of the first systems able to store and query complete histories of movement: a vehicle trip is a single value of type mpoint (a moving point) that can be queried in space and time.

Functionality

Objects of an arbitrary type defined in one of the Secondo algebra modules can be stored in a database. The following list shows some of the available algebras:
  • Standard-Algebra provides simple types like integer, real, bool and string and operations on those types.
  • Relational-Algebra contains data types and operations to realize a classical relational database system.
  • Spatial-Algebra represents geometrical objects such as points, lines and regions together with spatial operations.
  • Temporal-Algebra represents moving objects in databases, e.g. people or vehicles and allows one to formulate queries about their movements.

Query Example

To determine which path a subway (represented by an mpoint named train7) took, the trajectory operator can be used. It strips the temporal information and returns the line the train traced, which can be shown on a map:

query trajectory(train7)
The full trajectory of one underground train drawn as a line on a map of Berlin
The route train7 followed, returned by trajectory(train7) and shown in the Secondo GUI. Map data © OpenStreetMap contributors.

Secondo also answers SQL-style queries through its optimizer, including over ordinary spatial data — for example, every Italian restaurant within 2 km of the Brandenburg Gate:

select [r:name, r:strasse, r:geoData]
from   [restaurants as r, sehenswuerdpoi as s]
where  [ s:name="Brandenburger Tor",
         r:art="Italienisch",
         distance(r:geoData, s:geodata) < 2000]
Secondo GUI showing all Italian restaurants near the Brandenburg Gate plotted on a map of Berlin
The restaurants returned by the query above, plotted in the Secondo GUI. Map data © OpenStreetMap contributors.

Ready to run queries like this yourself? Follow the Getting Started guide.

Architecture

The Secondo system is extensible by algebra modules, using a well defined interface. New data models and data structures together with their operations are integrated into the system in this way. The source code is available and enables the user to access and modify every part of the database system.

Architecture

The user interface allows users to interact with the system through queries and commands. A RESTful API is also provided for programmatic access to the system and used by the SECONDO web interface. The architecture is designed to be modular and extensible, allowing for easy integration of new features and data models.

Where to Go Next

Pick the path that matches what you want to do.

Or browse the getting started guide.