README.md 2.4 KB
Newer Older
Philipp Götze's avatar
Philipp Götze committed
1
2
NVM-based Data Strucutres
=========================
3

4
[![pipeline status](https://dbgit.prakinf.tu-ilmenau.de/code/nvm-based_data_structures/badges/master/pipeline.svg)](https://dbgit.prakinf.tu-ilmenau.de/code/nvm-based_data_structures/commits/master)
5
[![coverage report](https://dbgit.prakinf.tu-ilmenau.de/code/nvm-based_data_structures/badges/master/coverage.svg?job=coverage)](https://dbgit.prakinf.tu-ilmenau.de/code/nvm-based_data_structures/commits/master)
6

Philipp Götze's avatar
Philipp Götze committed
7
This is a repository for persistent data structures based on non-volatile memory (NVM).
8
9
10
11

:sparkles: TODOs
----------------

12
- [x] ~~PBPTrees (B⁺-Tree for NVM)~~
Philipp Götze's avatar
Philipp Götze committed
13
- [x] ~~PTable (BDCC + NVM)~~
Philipp Götze's avatar
Philipp Götze committed
14
- [x] ~~Add Skip-Lists (Alex)~~
15
16
- [ ] Add LSM Trees (Arun)
- [ ] Add Tries (Leret)
17
18
- [ ] Data structure common benchmark
- [ ] Documentation
Philipp Götze's avatar
Philipp Götze committed
19

20
21
22
:copyright: License
-------------------

23
24
25
The structures are licensed under GPLv3.
Please see the file [COPYING](COPYING) for detailed license information.

26
27
28
:heavy_plus_sign: Requirements
------------------------------

29
- C++ Compiler supporting C++17
Philipp Götze's avatar
Philipp Götze committed
30
31
32
33
34
35
36
37
- PMDK >= 1.5

  | Name | Github | Package |
  | ---- | ------ | ------- |
  | ndctl/daxctl      | [ndctl](https://github.com/pmem/ndctl)                    | ndctl-dev(el), daxctl-dev(el) |
  | PMDK              | [pmdk](https://github.com/pmem/pmdk)                      | libpmemobj-dev(el)           |
  | PMDK C++ bindings |  [libpmemobj-cpp](https://github.com/pmem/libpmemobj-cpp) | libpmemobj++-dev(el)         |
  > **NOTE**: When installing via package manager - libpmemobj++-dev(el) should install the dependencies above, too.
38
- Emulated NVM device [pmem.io](http://pmem.io/2016/02/22/pm-emulation.html) (optional)
Philipp Götze's avatar
Philipp Götze committed
39

40
41
:gear: Build
------------
Philipp Götze's avatar
Philipp Götze committed
42

43
Configurations can be found in [src/CMakeLists.txt](src/CMakeLists.txt).
Philipp Götze's avatar
Philipp Götze committed
44

45
```bash
Philipp Götze's avatar
Philipp Götze committed
46
47
48
49
mkdir build; cd build
cmake ../src
make -j
```
50

51
Tests and benchmarks, if enabled, can be either manually executed from the ```build``` folder or run at once with:
Philipp Götze's avatar
Philipp Götze committed
52

53
```bash
54
55
make test
```
56
57
58
59

:whale: Docker
--------------

Philipp Götze's avatar
Philipp Götze committed
60
There is also the option to create a Docker container.
61
For this you can either download a pre-built docker image: ```docker pull dbisilm/nvm-based_data_structures```
Philipp Götze's avatar
Philipp Götze committed
62
or built it yourself (in project root directory) with: ```docker build .```
63

Philipp Götze's avatar
Philipp Götze committed
64
After this you can start the container and bash login with e.g.:
65
66

```bash
Philipp Götze's avatar
Philipp Götze committed
67
68
69
docker run --rm -i -t dbisilm/nvm-based_data_structures /bin/bash
```

70
71
:books: Documentation
---------------------
Philipp Götze's avatar
Philipp Götze committed
72
73

:construction: