Initial commit

This commit is contained in:
2019-09-04 11:06:12 +02:00
parent 37a4432dde
commit 647b88cdc4
18 changed files with 2475 additions and 0 deletions

42
.gitmodules vendored Normal file
View File

@@ -0,0 +1,42 @@
[submodule "ironsea_index"]
path = ironsea_index
url = ../ironsea_index
[submodule "ironsea_index_hashmap"]
path = ironsea_index_hashmap
url = ../ironsea_index_hashmap
[submodule "ironsea_index_sfc_dbc"]
path = ironsea_index_sfc_dbc
url = ../ironsea_index_sfc_dbc
[submodule "ironsea_store"]
path = ironsea_store
url = ../ironsea_store
[submodule "ironsea_store_buffered_file"]
path = ironsea_store_buffered_file
url = ../ironsea_store_buffered_file
[submodule "ironsea_store_mapped_file"]
path = ironsea_store_mapped_file
url = ../ironsea_store_mapped_file
[submodule "ironsea_store_file"]
path = ironsea_store_file
url = ../ironsea_store_file
[submodule "ironsea_table"]
path = ironsea_table
url = ../ironsea_table
[submodule "ironsea_table_vector"]
path = ironsea_table_vector
url = ../ironsea_table_vector
[submodule "mercator_data_generator"]
path = mercator_data_generator
url = ../mercator_data_generator
[submodule "mercator_db"]
path = mercator_db
url = ../mercator_db
[submodule "mercator_service"]
path = mercator_service
url = ../mercator_service
[submodule "mercator_parser"]
path = mercator_parser
url = ../mercator_parser
[submodule "mercator_indexer"]
path = mercator_indexer
url = ../mercator_indexer

2299
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

38
Cargo.toml Normal file
View File

@@ -0,0 +1,38 @@
[workspace]
members = [
# Binaries
"mercator_service",
# Specific to mercator
"mercator_parser",
"mercator_db",
# Generic Interfaces
"ironsea_index",
"ironsea_store",
"ironsea_table",
# Specific implementations
"ironsea_index_hashmap",
"ironsea_index_sfc_dbc",
"ironsea_store_buffered_file",
"ironsea_store_file",
"ironsea_store_mapped_file",
"ironsea_table_vector",
]
[patch.crates-io]
mercator_db = { path = "mercator_db" }
mercator_parser = { path = "mercator_parser" }
ironsea_index = { path = "ironsea_index" }
ironsea_store = { path = "ironsea_store" }
ironsea_table = { path = "ironsea_table" }
ironsea_index_hashmap = { path = "ironsea_index_hashmap" }
ironsea_index_sfc_dbc = { path = "ironsea_index_sfc_dbc" }
ironsea_store_buffered_file = { path = "ironsea_store_buffered_file" }
ironsea_store_file = { path = "ironsea_store_file" }
ironsea_store_mapped_file = { path = "ironsea_store_mapped_file" }
ironsea_table_vector = { path = "ironsea_table_vector" }

82
README.md Normal file
View File

@@ -0,0 +1,82 @@
# Mercator Workspace
This repository references everything needed to build various tools related to the Spatial Index.
## Mercator: Spatial Index
**Mercator** is a spatial *volumetric* index for the [Human Brain Project](http://www.humanbrainproject.eu). It is a component of the [Knowledge Graph](http://www.humanbrainproject.eu/en/explore-the-brain/search/) service, which provides the spatial anchoring for the metadata registered as well as processes the volumetric queries.
It is build on top of the Iron Sea database toolkit.
## Iron Sea: Database Toolkit
**Iron Sea** provides a set of database engine bricks, which can be combined and applied on arbitrary data structures.
Unlike a traditional database, it does not assume a specific physical structure for the tables nor the records, but relies on the developper to provide a set of extractor functions which are used by the specific indices provided.
This enables the index implementations to be agnostic from the underlying data structure, and re-used.
## Requirements
### Software
* Rust: https://www.rust-lang.org
## Quick start
* Clone the workspace, which will take care of bringing all the repositories needed.
```sh
git clone --recurse git@gitlab.epfl.ch:DIAS/PROJECTS/HBP-SP5/mercator.git
```
The following steps assume the working directory is the root of the mercator repository.
* **[Optional]** Create 3 datasets, of 1, 10 and 100 features respectively, each with 1000 positions:
```sh
cd mercator_data_generator
cargo run --release -- 1 10 100
```
* Index the data:
```sh
cd mercator_indexer
for f in ../mercator_data_generator/1*.json
do
ln -s $f
done
cargo run --release -- 1k 10k 100k
```
* Run the Spatial Index, while providing one of the datasets. Currently only one dataset (core) can be loaded at a time.
```sh
cd mercator_service
for f in ../mercator_indexer/*.index
do
ln -s $f
done
RUST_LOG="warn,actix_web=info,mercator_service=trace" \
MERCATOR_IMPORT_DATA="100k" \
MERCATOR_ALLOWED_ORIGINS="http://localhost:3200" \
cargo run --release
```
## Documentation
For more information, please refer to the [documentation](https://epfl-dias.github.io/PROJECT_NAME/).
If you want to build the documentation and access it locally, you can use:
```sh
cargo doc --open
```
## Acknowledgements
This open source software code was developed in part or in whole in the
Human Brain Project, funded from the European Unions Horizon 2020
Framework Programme for Research and Innovation under the Specific Grant
Agreement No. 785907 (Human Brain Project SGA2).

1
ironsea_index Submodule

Submodule ironsea_index added at 63b2e539d6

1
ironsea_index_hashmap Submodule

Submodule ironsea_index_hashmap added at 50d60f58b6

1
ironsea_index_sfc_dbc Submodule

Submodule ironsea_index_sfc_dbc added at 49f4462b36

1
ironsea_store Submodule

Submodule ironsea_store added at ed5e9611eb

1
ironsea_store_file Submodule

Submodule ironsea_store_file added at 189cc11256

1
ironsea_table Submodule

Submodule ironsea_table added at 277f050873

1
ironsea_table_vector Submodule

Submodule ironsea_table_vector added at ba883b8469

1
mercator_db Submodule

Submodule mercator_db added at fb3ead444b

1
mercator_indexer Submodule

Submodule mercator_indexer added at 1912a5f092

1
mercator_parser Submodule

Submodule mercator_parser added at 7b8193e7bd

1
mercator_service Submodule

Submodule mercator_service added at f1c8677e5b