-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
177 lines (154 loc) · 6.41 KB
/
Copy pathindex.html
File metadata and controls
177 lines (154 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
---
title: SECONDO - An Extensible Database System
description: Secondo is an extensible, open-source database system for moving objects and other non-standard applications.
hide_logo: true
last_changed: 2026-08-23
---
<div class="center">
<img alt="FernUni Hagen" src="/images/feulogo.gif" width="363" height="78">
<br>
<img alt="SECONDO" width="598" height="96" src="/images/secondo.svg">
</div>
<h1> An Extensible Database System </h1>
<div class="btn-row">
<a class="btn" href="content_getting_started.html">Get Started →</a>
<a class="btn btn-outline" href="https://github.com/secondo-database/secondo" target="_blank" rel="noopener noreferrer">View on GitHub</a>
</div>
<section class="section">
<h2> What is <span class="secondo">Secondo</span> </h2>
<div class="short">
<p>
<span class="secondo">Secondo</span> 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 <em>algebra modules</em> through a
well-defined interface.
</p>
<p>
It is one of the first systems able to store and query complete <em>histories of movement</em>:
a vehicle trip is a single value of type <code>mpoint</code> (a moving point) that can be queried
in space and time.
</p>
</div>
</section>
<section class="section">
<h2> Functionality </h2>
<div class="short">
Objects of an arbitrary type defined in one of the
<span class="secondo">Secondo</span> algebra modules can be stored in a database.
The following list shows some of the available
algebras:
<ul class="algebra">
<li> <span class="algebraname">Standard-Algebra</span>
provides simple types like integer, real, bool and
string and operations on those types.
</li>
<li> <span class="algebraname">Relational-Algebra</span>
contains data types and operations to realize a
classical relational database system.
</li>
<li> <span class="algebraname">Spatial-Algebra</span>
represents geometrical objects such as points,
lines and regions together with spatial operations.
</li>
<li> <span class="algebraname">Temporal-Algebra</span>
represents moving objects in databases, e.g.
people or vehicles and allows one to formulate
queries about their movements.
</li>
</ul>
</div>
</section>
<section class="section">
<h2> Query Example </h2>
<div class="short">
<p>
To determine which path a subway (represented by an <code>mpoint</code> named <code>train7</code>) took, the
<code>trajectory</code> operator can be used. It strips the temporal information and returns the
line the train traced, which can be shown on a map:
</p>
<pre>query trajectory(train7)</pre>
<figure class="query-figure">
<a href="/images/screen_ubahn_trajectory.jpg" target="_blank" rel="noopener noreferrer">
<img src="/images/screen_ubahn_trajectory.jpg" width="640" height="495" alt="The full trajectory of one underground train drawn as a line on a map of Berlin" loading="lazy">
</a>
<figcaption>
The route <code>train7</code> followed, returned by <code>trajectory(train7)</code> and shown
in the <span class="secondo">Secondo</span> GUI.
Map data © <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap</a> contributors.
</figcaption>
</figure>
<p>
<span class="secondo">Secondo</span> 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:
</p>
{% highlight sql %}
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]
{% endhighlight %}
<figure class="query-figure">
<a href="/images/screen_restaurant.jpg" target="_blank" rel="noopener noreferrer">
<img src="/images/screen_restaurant.jpg" width="640" height="495" alt="Secondo GUI showing all Italian restaurants near the Brandenburg Gate plotted on a map of Berlin" loading="lazy">
</a>
<figcaption>
The restaurants returned by the query above, plotted in the <span class="secondo">Secondo</span> GUI.
Map data © <a href="https://www.openstreetmap.org/copyright" target="_blank" rel="noopener noreferrer">OpenStreetMap</a> contributors.
</figcaption>
</figure>
<p>
Ready to run queries like this yourself? Follow the
<a href="content_getting_started.html">Getting Started</a> guide.
</p>
</div>
</section>
<section class="section">
<h2> Architecture </h2>
<div class="short">
<p>
The <span class="secondo">Secondo</span> 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.
</p>
<div class="center">
<a href="images/sec_architecture.svg" target="_blank" rel="noopener noreferrer">
<img src="images/sec_architecture.svg" alt="Architecture" width="90%" loading="lazy">
</a>
</div>
<p>
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.
</p>
</div>
</section>
<section class="section">
<h2> Where to Go Next </h2>
<p>Pick the path that matches what you want to do.</p>
<ul class="cards">
<li>
<a class="card" href="content_install.html">
<span class="card-title">Install and run it</span>
<span class="card-desc">Installation instructions, sources and downloads, and release notes.</span>
</a>
</li>
<li>
<a class="card" href="content_querying.html">
<span class="card-title">Learn the language</span>
<span class="card-desc">A hands-on guide to writing queries in <span class="secondo">Secondo</span>'s executable language.</span>
</a>
</li>
<li>
<a class="card" href="content_docu.html">
<span class="card-title">Extend it</span>
<span class="card-desc">Read the programmers guide and write an algebra module.</span>
</a>
</li>
</ul>
<p class="note">
Or browse the <a href="content_getting_started.html">getting started guide</a>.
</p>
</section>