# Robigo #

[![Build Status](https://travis-ci.org/MnO2/robigo.svg?branch=master)](https://travis-ci.org/MnO2/robigo)

## Motivation ##
Rust is a new programming language targeting memory safety system programming. It is expressive in its type system to achieve this goal. And it would be interesting and challenging to write a fully transactional, ACID compliant and MVCC database with such a great programming language. This is highly inspired by the fanstastic job achieved by Lightning MDB.


## Usage ##

To use ``robigo``, first add this to your ``Cargo.toml``:


```
[dependencies.robigo]
git = “github.com/MnO2/robigo”
```

Then, add this to your crate root

```
extern crate robigo
```

## Features ##


## Platforms ##


## Terminology ##

* Environ: A big structure to hold the general information, like the page size. 
* DbPage: The structure holding a chunk of memory of db page size. It comes with a group of analyzing methods to extract fields from the flat memory.
* Transaction: A transaction has its own snapshot of views of the world. All of the dirty pages are stored in the memory, which are allocated on the heap. Once the transaction is committed, the dirty pages are flushed to disk. If the transaction is rollback. The freed page are recycled, and put to a free page list in the Environ structure.
* Cursor: A pointer into somewhere of the B+ tree.

