This is a partial reimplementation of the BossDB REST API in Rust.
bossphorus simplifies data-access patterns for data that do not fit into RAM. When you write a 100-gigabyte file, bossphorus automatically slices your dataset up to fit in bite-sized pieces.
When you request small pieces of your data for analysis, bossphorus intelligently serves only the parts you need, leaving the rest on disk.
See Feature Parity for more information.
Bossphorus caches cuboids in the uploads
folder that's created in the current
working directory. Currently, it will cache up to 1000 cuboids in this folder.
The least recently used cuboids are removed when the cuboid limit is reached.
Environment variables have precedence over the Rocket.toml
config file.
BOSSHOST
: Sets the Boss DB host
BOSSTOKEN
: Token used for Boss auth
bosshost
: Sets the Boss DB host
bosstoken
: Token used for Boss auth
In absence of an environment variable and value in the Rocket.toml
file:
bosshost = "api.bossdb.io"
bosstoken = "public"
Blosc must be installed manually via a package manager to build. SQLite is required, but it included with MacOS by default.
For MacOS:
brew install c-blosc
For Debian based Linux distros:
sudo apt-get install libblosc-dev sqlite3
For RPM based Linux distros:
sudo yum install blosc sqlite
Due to use of the Rocket web server crate, the nightly Rust toolchain must be used. You can set this as your project default with:
rustup override set nightly
You can build an optimized release with:
cargo build --release
The binary will be at target/release/bossphorus
.