GithubHelp home page GithubHelp logo

atefehmohseni / iot_secure_distributed_database Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 1.28 MB

Secure Distributed Database for IoT

License: MIT License

CMake 0.14% C++ 90.08% Python 1.27% C 5.30% Roff 1.37% Assembly 0.35% Makefile 0.21% Shell 0.26% TeX 1.01%

iot_secure_distributed_database's Introduction

Secure Distributed Database for Internet of Things (IoT)

These instructions have been tested on an Ubuntu 18.04 machine.

Requirements

libopenssl and libpthread must be installed on the target machine. The Python implementation of the client (resources/client.py) has been tested on Python 3.6 and uses the requests library for network communication (pip install requests). pypy must be installed in the target system in order to collect the profiling data.

Additionally, the .json.default files in the resources directory must be copied as .json files in the same directory.

# install libssl-dev libpthread-dev python3 pypy3
sudo add-apt-repository ppa:pypy/ppa
sudo apt update
sudo apt-get install -y libssl-dev libpthread-stubs0-dev python3 python3-pip pypy3

# create the python/pypy virtualenvs
python3 -m pip install virtualenv
virtualenv -p $(which pypy3) ~/venv_pypy3
virtualenv -p $(which python3) ~/venv_python3

# install the python requests module (pypy3)
source ~/venv_pypy3/bin/activate
python3 -m ensurepip
python3 -m pip install requests
deactivate

# install the python requests module (python3)
source ~/venv_python3/bin/activate
python3 -m pip install requests
deactivate

# copy the .json.default files
for f in resources/*.json.default; do cp $f ${f%%.default}; done

Finally, to parse the profiling files and generate the profiling charts, the matplotlib and numpy Python modules are required.

Build

$ mkdir build
$ cd build
$ cmake ..
$ make

Execute

You should separtely execute the master server, edge-server, and client.

Run the Master Server

$ cd build/
$ ./master_server

Run an Edge Server

$ # within the build directory 
$ ./server

Run a Client

$ # within the build directory 
$ ./client

Test cases

The test queries in test directory can be used to run write/read/delete queries from a client to an edge server (usage: cat <test_file> | ./client).

Profiling

To collect the profiling information run the following script:

$ cd resources
$ ./run_profiling.sh

To parse the profiling information:

# within the resources directory 
 python3 parse_profiling.py

Project Vision

The high-level goal of this project is to research the topic of data persistence in a distributed programming system, with a focus on data protection and reliability.

A distributed database is a database in which data is stored across different physical locations. In this project, we want to implement a simple but secure distributed database system in C++. Our architecture relies on a centralized server for managing nodes, but read/write operations can happen offline, and only data synchronization requires the nodes to be online. At the very core, our system should guarantee data protection and reliability among different nodes.

References we might use for this projects are: [Condensation, Data Protection in DDS].

iot_secure_distributed_database's People

Contributors

ruaronicola avatar atefehmohseni avatar

Watchers

 avatar  avatar

iot_secure_distributed_database's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.