ATE
Navigation
What is ATE?
...is it a NoSQL database?
...is it a distributed redo log?
...is it a event BUS?
...is it a distributed queue?
...is it a distributed cache?
...is it a secure encrypted vault?
...is it a quantum resistant communication framework?
...is it a WORM archive solution?
ATE is all these things and none of them; it is unique way to work with distributed data that can easily implement all of the above use cases - take a look at the examples for how you can achieve them.
Why the name?
The origin of the word "mutate" is the latin word '-ate':
https://www.dictionary.com/browse/mutate
Summary
ATE is a distributed immutable data store and built in memory based materialized view with strong encryption and authentication.
What does that mean?
This library is a way of working with data in modern distributed computing.
- ...data is persisted to a distributed commit log.
- ...partitions are divided into chains that shard data into physical domains.
- ...streaming of data to the application occurs on demand during method invocation.
- ...each chain is a crypto-graph with unique asymmetric keys at differentiating nodes.
- ...the root of the chain-of-trust that validates the crypto-graph through various plugins.
- ...strong authentication and authorized is by design built into the data model.
- ...encryption is highly resistant to quantum attacks and uses fine-grained tenant keys.
- ...all this is integrated into a shared-nothing highly portable executable.
High Level Design
.--[ App ]---. .--[ App ]---. .--[ App ]---.
| | | | | |
|>local redo-log| |>local redo-log| |>local redo-log|
|.-------------.| |.-------------.| |.-------------.|
|| Chain 1 || || Replica P1 || || Replica P1 ||
|| || || Chain 2 || || Replica P2 ||
|| Replica P3 || || ^ || || Chain 3 ||
|*-------------*| |*------|------*| |*-------------*|
| | subscribe
| \________|__________________________
| |
| >local redo-log
| >Crypto-Graph Materiaized View< (in memory)
| .----------------------------------. session
| | root | .-----------.
| | | | | -token |
| | dao----dao |---| -claims |
| | \ | | -keys |
| | dao | | -timeout |
| | | *-----------*
| +----------------------------------+----------------+
| | |
Quick Start
Add ate, serde and tokio to your dependency list in Cargo.toml
[]
= { = "*", = ["full", "signal", "process"] }
= { = "*", = ["derive"] }
= "*"
Create a main.rs file
extern crate tokio;
extern crate serde;
use ;
use *;
async
Examples
Contribution
If you would like to help setup a community to continue to develop this project then please contact me at johnathan.sharratt@gmail.com