activeviam / par-internship-ssd

Data storage on files

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Data storage on files powered by NVMe

Project architecture

Currently, the project features a reference allocator storing data on files: MemoryAllocatorOnFile. Though implemented in a straight-forward way, it still has several underlying chunks depending on the size of inner blocks it allocates.
The interface MemoryAllocator is the specification for any allocator tested in this project.

This allocator is used to implement Chunks, that represent an array of raw data. ActiveViam having goals to get the best of the machine performance, Chunks cannot have generic methods, not to pay the cost of boxing/unboxing. That's the main reason for the existence of Chunk. It provides read and write methods adapted for primitive types. In this scholar project, we only define methods for int and double.

The project already ships two sets of implementations:

  • the series of HeapXyzChunk, acting as a reference, using an underlying Java array
  • the series of FileXyzChunk, that makes use of the MemoryAllocatorOnFile.

All Chunk implementations are succinctly tested. Those tests can be used as references for testing new implementations of Chunks or Allocators.

Development environment

This project is written in Java 15, though it does not use many of the latest features so far.

It uses Maven to manage its dependencies.

Compiling the project

mvn compile

Build print compilation warnings due to the usage of sun.misc.Unsafe. This is indeed an internal API but it has been accepted by many vendors. Project Panama aims at providing safer alternatives, but there are not ready yet.

Running unit tests

mvn test

About

Data storage on files


Languages

Language:Java 100.0%