An open API service indexing awesome lists of open source software.

https://github.com/aplbrain/bossphorus

A BossDB-like volumetric datastore in Rust
https://github.com/aplbrain/bossphorus

3d bossdb rust volumetric-data

Last synced: 3 months ago
JSON representation

A BossDB-like volumetric datastore in Rust

Awesome Lists containing this project

README

        


Bossphorus implementation in Rust


GitHub
GitHub Workflow Status

This is a partial reimplementation of the BossDB REST API in [Rust](https://www.rust-lang.org/).

## Why?

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.

## Feature Parity

See [Feature Parity](docs/Features.md) for more information.

## Disk Usage

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.

## Configuration

Environment variables have precedence over the `Rocket.toml` config file.

### Environment Variables

`BOSSHOST`: Sets the Boss DB host
`BOSSTOKEN`: Token used for Boss auth

### Rocket.toml File

`bosshost`: Sets the Boss DB host
`bosstoken`: Token used for Boss auth

### Defaults

In absence of an environment variable and value in the `Rocket.toml` file:

```
bosshost = "api.bossdb.io"
bosstoken = "public"
```

## Development

Blosc must be installed manually via a package manager to build. SQLite is
required, but it included with MacOS by default.

For MacOS:

```shell
brew install c-blosc
```

For Debian based Linux distros:

```shell
sudo apt-get install libblosc-dev sqlite3
```

For RPM based Linux distros:

```shell
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:

```shell
rustup override set nightly
```

## Releases

You can build an optimized release with:

```shell
cargo build --release
```

The binary will be at `target/release/bossphorus`.

## License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Faplbrain%2Fbossphorus.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Faplbrain%2Fbossphorus?ref=badge_large)