An Extensible Database System
What is Secondo
Secondo is one of the first database system prototypes that can handle moving objects, that is, continuously changing time-dependent geometries. More precisely, complete histories of movement can be represented in a database and queried.
Secondo can be used by groups at universities to pursue and prototype their research ideas for database systems. It can be used in teaching to show students in detail the architecture and implementation of database systems. Additionally, Secondo may be interesting for users in need of a database system able to handle non-standard data types usually not supported by standard systems.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.
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.
Query Example
Using these algebras, one can determine the names and addresses of all Italian restaurants in Berlin within 2 km of the Brandenburg Gate. Then, the result is presented graphically.
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.