All Projects → hachreak → minidb

hachreak / minidb

Licence: other
A minimal in-memory distributed master-less document database

Programming Languages

erlang
1774 projects
Makefile
30231 projects

Projects that are alternatives of or similar to minidb

Interference
opensource distributed database with base JPA implementation and event processing support
Stars: ✭ 57 (+96.55%)
Mutual labels:  cluster, distributed-database
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (+11120.69%)
Mutual labels:  cluster, distributed-database
skytable
Skytable is an extremely fast, secure and reliable real-time NoSQL database with automated snapshots and TLS
Stars: ✭ 696 (+2300%)
Mutual labels:  distributed-database, document-database
swagger routerl
Routing library that generate the routing table from swagger.yaml.
Stars: ✭ 14 (-51.72%)
Mutual labels:  erlang-libraries, erlang-library
the-apache-ignite-book
All code samples, scripts and more in-depth examples for The Apache Ignite Book. Include Apache Ignite 2.6 or above
Stars: ✭ 65 (+124.14%)
Mutual labels:  distributed-database, in-memory-database
Justindb
⚛️ JustinDB is a highly available globally distributed key-value data store.
Stars: ✭ 147 (+406.9%)
Mutual labels:  cluster, distributed-database
Arangodb
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Stars: ✭ 11,880 (+40865.52%)
Mutual labels:  distributed-database, document-database
docs
Source code of the ArangoDB online documentation
Stars: ✭ 18 (-37.93%)
Mutual labels:  distributed-database, document-database
sockerl
Sockerl is an advanced Erlang/Elixir socket framework for TCP protocols and provides fast, useful and easy-to-use API for implementing servers, clients and client connection pools.
Stars: ✭ 26 (-10.34%)
Mutual labels:  erlang-libraries, erlang-library
jylis
A distributed in-memory database for Conflict-free Replicated Data Types (CRDTs). 🌱 ↔️
Stars: ✭ 68 (+134.48%)
Mutual labels:  distributed-database, in-memory-database
fastdata-cluster
Fast Data Cluster (Apache Cassandra, Kafka, Spark, Flink, YARN and HDFS with Vagrant and VirtualBox)
Stars: ✭ 20 (-31.03%)
Mutual labels:  cluster
nestjs-redis
Redis(ioredis) module for NestJS framework
Stars: ✭ 112 (+286.21%)
Mutual labels:  cluster
AMapMarker-master
提供一种高德地图自定义marker的解决方案以及改善高德官方点聚合功能
Stars: ✭ 63 (+117.24%)
Mutual labels:  cluster
kubernetes-marketplace
Marketplace of Kubernetes applications available for quick and easy installation in to Civo Kubernetes clusters
Stars: ✭ 136 (+368.97%)
Mutual labels:  cluster
magento-cluster
Highly Available and Auto-scalable Magento Cluster
Stars: ✭ 21 (-27.59%)
Mutual labels:  cluster
kubernetes-deployment
No description or website provided.
Stars: ✭ 15 (-48.28%)
Mutual labels:  cluster
PinFloyd
MapKit annotations clustering for iOS
Stars: ✭ 29 (+0%)
Mutual labels:  cluster
scanstatistics
An R package for space-time anomaly detection using scan statistics.
Stars: ✭ 41 (+41.38%)
Mutual labels:  cluster
go-redis-migrator
A cluster aware Redis key migrator. Moves keys from one cluster or host to another cluster or host.
Stars: ✭ 32 (+10.34%)
Mutual labels:  cluster
kmedoids
The Partitioning Around Medoids (PAM) implementation of the K-Medoids algorithm in Python [Unmaintained]
Stars: ✭ 18 (-37.93%)
Mutual labels:  cluster

minidb

This is a minimal in-memory distributed master-less document database database.

API

Cluster:

  • Auto-cluster: automatically create a cluster specified in the configuration minidb_cluster:join(), or manually make a cluster passing a list of seeds minidb_cluster:make([bootstrap_node1]).
  • Cluster status: minidb_cluster:status()
  • Join a cluster: minidb_cluster:join('bootstrap_node')
  • Leave a cluster: minidb_cluster:leave()
  • Ping a random node: minidb:ping()

CRUD:

  • Create/Update a key: minidb:put(key, value)
  • Patch a value: minidb:patch(key, {subkey1, subvalue1})
  • Read a value: minidb:get(key) or minidb:get(key, default)
  • Query database: minidb:find([..])
  • Get all keys: minidb:keys()
  • Delete a key: minidb:delete
  • Drop everything: minidb:drop()

Query:

The query language is similar to the one used by mongodb:

minidb:find([{"section", {'$eq', "books"}}, {"likes", {'$gt', 100}])

Operators available:

Op. Name Example
'$eq' Equals {"section", {'$eq', "books"}}
'$ne' Not Equals {"section", {'$ne', "books"}}
'$gt' Greater Than {"likes", {'$gt', 100}}
'$gte' Greater or Equals {"likes", {'$gte', 100}}
'$lt' Lower Than {"likes", {'$lt', 100}}
'$lte' Lower or Equals {"likes", {'$lte', 100}}

Note: to get everything: minidb:find([]).

Build

$ rebar3 compile

Run demo

Start the first node:

$ make node1

Start the second node:

$ make node2

After 5 seconds, the second node will automatically connect to the first in a cluster.

To clean all the configuration (cluster informations):

$ make clean
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].