Giter Site home page Giter Site logo

rhizome-db's Introduction

RhizomeDB

This repo consists of two related projects which are both at an early, experimental stage:

  • rhizome-trees: a library of persistent merklizable data structures
  • rhizome-db: a peer to peer database based on these data structures

rhizome-trees

A set of data structures which share the following properties:

  • persistent like Clojure collections so that historical state can be maintained with arbitrary branching
  • serializable to a variety of storage layers such as key values as well as directly to disk
  • support merkle hashes and merkle proofs
  • support selective pruning of historical state

These data structures are intended to support a variety of applications which can benefit from such data structures including:

  • distributed ledgers (blockchains)
  • peer to peer databases
  • any database which needs historical state

All the trees will be benchmarked comprehensively to allow for performance comparisons based on different use cases and configurations. As a near term goal, there is the hope that this can help improve the performance of Cosmos SDK based projects.

rhizome-db

WARNING: This is an experimental project. We make no guarantees it will actually turn into anything useful. Maybe it will, maybe it won't. Maybe some other project will achieve the same goals in another way in the meantime, we don't know.

A peer to peer databases which aims to eventually have the following features:

  • can be run on any platform (server, mobile, web browser)
  • syncs data between peers using CRDTs with eventually consistency
  • has fine-grained read/write privacy and selective syncing strategies
  • can also work with a light client (i.e. no local data just server connection)
  • optional historical state and forking/branching like git, with pruning support
  • merkle proofs for using the database at specific points in time as an immutable record
  • SQL and GraphQL queries
  • an RDF projection with SPARQL queries
  • full transaction history with digital signatures
  • authorization via various DID methods
  • advanced CRDTs for collaborative editing (like Google Docs)
  • geospatial and full text indexes
  • should be as easy to use as any regular db people use like postgres, mongo, or sqlite
  • good CPU, network, and storage performance

rhizome-db's People

Contributors

aaronc avatar

Stargazers

Sahith Narahari avatar  avatar

Watchers

 avatar James Cloos avatar Justin Lewis avatar Marie Gauthier avatar

Forkers

aaronc

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.