Sources
At this page, we provide the sources of the last Secondo
release. Note that if you have an old installation of Secondo,
you should remove this old version completely (or just rename the containing folder).
Technical Details
Release Date: | 2021-09-03 |
Version: | Secondo 4.3.0 |
Download Size: | 100 MB |
Encoding: | Latin-1 |
md5sum: | b3b1818a026741a1ea46a9d6e9c863b2 |
sha1sum: | f1e20411d93771929d4cd474e8aa89c315ca13be |
Known to Work With: |
- Ubuntu 16.04, 18.04, 20.04, 20.10
- Debian 10 / 11
- OS X 10.15 Catalina, macOS 11.00 Big Sur
|
Download
The Secondo sources can be downloaded here.
The sources of the current development version can be found on GitHub.
Installation
The first step for installing Secondo is to install the
Secondo SDK.
After that, download the current Secondo sources using the link above.
Unpack the file into your home directory. This will create a subdirectory secondo
.
Now, navigate into that directory and type make
. This will create all parts of the
Secondo system (the kernel, the optimizer, and the gui).
Patches
At this place, we provide some patches for the current Secondo version.
For version 4.3.0 no patches are available.
Release Notes, Version 4.3.0
- Support new compiler versions
- Support new operating systems (OS X 11, OS X on ARM / M1 chips, Ubuntu 20.10, Debian 11)
- Improved OS X installer, based on Homebrew
- Extended algebra modules
- Distributed5Algebra: Implemented overlapping scheduling of distributed queries
- Distributed2Algebra: Added areduce operator for dynamic scheduling
- New Types and Operators in several algebra modules
- New algebra modules
- PropertyGraph2: Allows the creation of property graphs based on stored relations
- PyStreamAlgebra: Provides an API for Python scripts
- Several bug fixes have been done in different modules
- Parallel building with "make -j ..." is supported
Release Notes, Version 4.2.0
- Support new compiler versions
- Support new operating systems (OS X 10.15, Ubuntu 20.04, Debian 10)
- Extended algebra modules
- SymbolicTrajectoryAlgebra: Split into SymbolicTrajectoryBasicAlgebra and SymbolicTrajectoryAlgebra
- Distributed2Algebra: Added operators slotSizes, loadBalance, and collectB
- New Types and Operators in several algebra modules
- New algebra modules
- KafkaAlgebra: Integration of SECONDO with Apache Kafka
- Several bug fixes have been done in different modules
Release Notes, Version 4.1.2
- Support new compiler versions
- Improved support of main memory objects
- Extended algebra modules
- SymbolicTrajectoryAlgebra: Additional version of pattern matching on tuples of time-dependent values
- New Types and Operators in several algebra modules
- New algebra modules
- RoutePlanningAlgebra: Can be used for route planning with height information
- SpatialLRAlgebra: Alternative implementation for line and region type
- DFSAlgebra: Provides a distributed file system
- CRelAlgebra: Column oriented relation model
- CStreamAlgebra: Allows to distribute tuple streams between Secondo instances
- ImageSimilarityAlgebra: Finds images that are similar to a query image
- Several bug fixes have been done in different modules
Release Notes, Version 4.1.0
- The MainMemoryAlgebra has been replaced by the MainMemory2Algebra providing
more types and operators.
- Readded the TransportationModeAlgebra.
- Several bug fixes have been done in different modules. Embedded patches of version 4.0.0.
Release Notes, Version 4.0.0
New Algebra Modules
- Distributed2Algebra
- Provides distributed query processing. One Secondo system called the
master controls many Secondo instances called workers running on
different computers/cores. So-called distributed arrays are provided
whose field are stored in a distributed manner on the workers.
Operations are applied in parallel to all fields of a distributed array.
Fields can be of any available Secondo type, in particular, relations or
nested relations.
- MainMemoryAlgebra
-
This algebra allows one to load existing Secondo objects (e.g.
relations) or query results into main memory and keep them there for
further querying. The algebra controls available and used amounts of
memory and maintain a catalog of objects loaded. AVL-trees, R-trees, and
M-trees are available for main-memory indexing.
- DBScanAlgebra, OpticsAlgebra
-
These two algebras provide the well-known algorithms for density-based
clustering, DBScan, and OPTICS. Clustering may depend on geometric
distances or arbitrary user-defined similarity functions.
- TrajectorySimilarityAlgebra
-
Provides operations to measure similarity of trajectories in different
ways, to support different applications.
- GuideAlgebra
-
A comprehensive algebra for the purpose of teaching all aspects of
algebra implementation in Secondo.
- FileIndexAlgebra
-
Allows one to create B-tree or R-tree indices on top of binary files
storing relations. Useful in a distributed environment, as index files
can easily be moved to other computers.
- CassandraAlgebra
-
Supports the coupling of Secondo with Cassandra. See the work on
Distributed Secondo.
Optimizer
The optimizer is now available in a basic version (directory OptimizerBasic)
and the current version (directory Optimizer). The basic version reflects the
state of optimizer implementation from about 2006. It is provided to
facilitate understanding of the basic concepts of the Secondo optimizer
(omitting all the extensions of the current version to keep it simple).
On the other hand, the basic algorithm for conjunctive query optimization has
been extended to support the management of properties for intermediate
results. This could be the order of a stream of tuples, or the distribution
criteria for a distributed intermediate result. In both directories, the old
query optimization algorithm is still available in the file optimizer.pl, the
new one in file optimizerNewProperties.pl.
New textual user interfaces have been introduced that allow one to mix
queries at the SQL level with queries in Secondo executable language. They are:
- SecondoPLTTY
- SecondoPLTTYCS
- SecondoPLTTYNT
The first one is a stand-alone interface comparable to SecondoTTYBDB, the
second the client-server version comparable to SecondoTTYCS, and the third
one the stand-alone version running without transactions, like SecondoTTYNT.
All three versions can run scripts combining executable language and SQL
commands.
In contrast to SecondoPL, which requires Prolog terms as input, these
interfaces as well as the Javagui allow one to enter SQL queries and commands
in a more natural syntax, as it is NOT necesssary any more to use lower case
names. Instead, all names of Secondo objects can be written in the same way
as in the kernel, including relation and attribute names.
New Viewers
- UpdateViewer2
- This viewer provides a better display and updating facilities especially for long text fields. It allows one to edit documents defined across a set of relations. It also provides searching and replacing across relations and a formatting capability, translating format specifications into LaTeX.
- SpaceTimeCubeViewer
- This viewer provides a 3D display of sets of trajectories in a so-called space time cube.
It requires installation of Java3D; therefore it is by default not activated.
- OpticsViewer
-
This viewer allows one to display the results of applying the Optics clustering algorithm. One can interactively manipulate a threshold to define smaller or larger clusters.
Scripts
The secondo/bin/Scripts directory provides some scripts written in Secondo executable language for performing certain tasks.
From Secondo 4.0.0, scripts can be documented in the pd format generally used for program documentation in Secondo. An example is importGermanyOsm.sec which can be formatted with "pdview importGermanyOsm.sec".
Furthermore, it is now possible to write scripts mixing executable language with SQL statements. An example is nrwImportShape.psec.
-
OrderedRelationGraphFromFullOSMImport.SEC
- The script imports OpenStreetMap data from an XML file. It reconstructs linear features as a nested relation containing lists of nodes and lists of tags and the geometry of type line. Its main purpose is to construct the road network as a directed graph. The resulting graph representation can be used for map matching recorded trajectories or for shortest path search.
- ORGfromOSM.sec
- A shorter version of the previous script (reduced of some extras) for which, however, documentation exists in file ORGfromOSM.sec - Road Network Construction.pdf.
- nrwImportShape.psec
- Imports eight classes of objects such as Roads, Waterways, Buildings, etc. from a set of shapefiles derived from OpenStreetMap data (downloaded from GeoFabrik). Needs to be run in a PL shell (e.g. SecondoPLTTYNT) as it includes SQL commands.
- importGermanyOsm.sec
- This is a parallel version of the previous script to be run on a cluster.
- ParallelSort.sec
- Parallel sorting on a cluster.
Old Versions
For some nostalgic reasons, here some old and even older versions can be found.