An Extensible Database System
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
- 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)
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]
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.
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.
- Install and run it Installation instructions, sources and downloads, and release notes.
- Learn the language A hands-on guide to writing queries in Secondo's executable language.
- Extend it Read the programmers guide and write an algebra module.
Or browse the getting started guide.