<commit_before>![IonDB](http://stickerpants.com/uploads/IonDB_logo_final.svg)
=========
You might also be interested in our sister project, [LittleD - A relational database using 1kB of RAM or less](https://github.com/graemedouglas/LittleD).

> **Note:** IonDB is entering a period of rapid development and restructuring for the next few months. See the [Collaboration](#collaboration) section for more information.

#"What is this?"

Currently in the Arduino world, there doesn't exist an associative array or map implementation that is both easy to use *and* performance competitive. There also is little support for disk based storage options that don't involve writing it yourself. IonDB is fast, functional, and offers disk based storage out of the box.

In general, IonDB supports:

* Storing arbitrary values associated to a key
* Duplicate key support
* Range and Equality queries
* Disk based persistent data storage

IonDB has a paper that was published at IEEE (CCECE) 2015, which can be found [here.](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&tp=&arnumber=7129178)

##License

IonDB is licensed under the Apache License. For more information, please refer to [the license file](LICENSE.md).

##Collaboration

Pull requests are currently **not** recommended due to significant changes arriving in the near future. 

***

##Repository Setup for Contributors

Before editing any code, make sure you have `uncrustify` installed, version
0.63 or newer, and run

```bash
python setuprepo.py
```

in the repository root to setup necessary pre-commit hooks for formatting.

#Usage Guide

These inclusions are necessary for any IonDB usage:

```c
#include <SD.h> //If using file based implementations
#include "dictionary.h"
```

Then include some (or all) necessary implementation handlers:

```c
#include "slhandler.h"
#include "oadictionaryhandler.h"
#include "oafdictionaryhandler.h"
#include "ffdictionaryhandler.h"
#include "bpptreehandler.h"
```

In the setup() function, initialize a dictionary (Shown here, a skiplist):<commit_msg>Add note on not to move after setting up hooks to README<commit_after>![IonDB](http://stickerpants.com/uploads/IonDB_logo_final.svg)
=========
You might also be interested in our sister project, [LittleD - A relational database using 1kB of RAM or less](https://github.com/graemedouglas/LittleD).

> **Note:** IonDB is entering a period of rapid development and restructuring for the next few months. See the [Collaboration](#collaboration) section for more information.

#"What is this?"

Currently in the Arduino world, there doesn't exist an associative array or map implementation that is both easy to use *and* performance competitive. There also is little support for disk based storage options that don't involve writing it yourself. IonDB is fast, functional, and offers disk based storage out of the box.

In general, IonDB supports:

* Storing arbitrary values associated to a key
* Duplicate key support
* Range and Equality queries
* Disk based persistent data storage

IonDB has a paper that was published at IEEE (CCECE) 2015, which can be found [here.](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&tp=&arnumber=7129178)

##License

IonDB is licensed under the Apache License. For more information, please refer to [the license file](LICENSE.md).

##Collaboration

Pull requests are currently **not** recommended due to significant changes arriving in the near future. 

***

##Repository Setup for Contributors

Before editing any code, make sure you have `uncrustify` installed, version
0.63 or newer, and run

```bash
python setuprepo.py
```

in the repository root to setup necessary pre-commit hooks for formatting.

If you move the directory of your repository to a different path, make sure you re-run this command!

#Usage Guide

These inclusions are necessary for any IonDB usage:

```c
#include <SD.h> //If using file based implementations
#include "dictionary.h"
```

Then include some (or all) necessary implementation handlers:

```c
#include "slhandler.h"
#include "oadictionaryhandler.h"
#include "oafdictionaryhandler.h"
#include "ffdictionaryhandler.h"
#include "bpptreehandler.h"
```

In the setup() function, initialize a dictionary (Shown here, a skiplist):
{'fraction_non_alphanumeric': 0.08639662842425662, 'fraction_numerical': 0.007024116132053383, 'mean_word_length': 5.191304347826087, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2028982', 'n_tokens_mistral': 1235, 'n_tokens_neox': 1138, 'n_words': 536}