eliasdb alternatives and similar packages
Based on the "Database" category.
Alternatively, view eliasdb alternatives based on common mentions on social networks and blogs.
prometheus10.0 9.8 eliasdb VS prometheusThe Prometheus monitoring system and time series database.
influxdb9.9 9.2 eliasdb VS influxdbScalable datastore for metrics, events, and real-time analytics
Milvus9.9 9.9 eliasdb VS MilvusA cloud-native vector database, storage for next generation AI applications
tidb9.9 10.0 eliasdb VS tidbTiDB is an open-source, cloud-native, distributed, MySQL-Compatible database for elastic scale and real-time analytics. Try AI-powered Chat2Query free at : https://tidbcloud.com/free-trial
cockroach9.9 10.0 eliasdb VS cockroachCockroachDB - the open source, cloud-native distributed SQL database.
dgraph9.8 2.2 eliasdb VS dgraphNative GraphQL Database with graph backend
vitess9.8 9.8 eliasdb VS vitessVitess is a database clustering system for horizontal scaling of MySQL.
jaeger9.8 7.9 eliasdb VS jaegerCNCF Jaeger, a Distributed Tracing Platform
bolt9.8 0.0 eliasdb VS boltA low-level key/value database for Go.
rqlite9.7 5.4 eliasdb VS rqliteThe lightweight, distributed relational database built on SQLite
TinyGo9.7 8.1 eliasdb VS TinyGoGo compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
badger9.7 7.8 eliasdb VS badgerFast key-value DB in Go.
groupcache9.7 0.0 eliasdb VS groupcachegroupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
dolt9.7 10.0 eliasdb VS doltDolt – Git for Data
migrate9.7 6.6 eliasdb VS migrateDatabase migrations. CLI and Golang library.
VictoriaMetrics9.5 9.9 eliasdb VS VictoriaMetricsVictoriaMetrics: fast, cost-effective monitoring solution and time series database
sqlc9.5 7.7 eliasdb VS sqlcGenerate type-safe code from SQL
pgweb9.5 9.3 eliasdb VS pgwebCross-platform client for PostgreSQL databases
noms9.5 1.9 eliasdb VS nomsThe versioned, forkable, syncable database
Tile389.5 4.9 eliasdb VS Tile38Real-time Geospatial and Geofencing
kingshard9.5 0.0 eliasdb VS kingshardA high-performance MySQL proxy
immudb9.4 8.9 eliasdb VS immudbimmudb - immutable database based on zero trust, SQL and Key-Value, tamperproof, data change history
go-cache9.4 0.0 eliasdb VS go-cacheAn in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
dtm9.3 9.8 eliasdb VS dtm此仓库应常青藤爸爸要求，已停止维护，请移步 https://github.com/dtm-labs/dtf
BigCache9.3 6.6 eliasdb VS BigCacheEfficient cache for gigabytes of data written in Go.
goleveldb9.3 4.8 eliasdb VS goleveldbLevelDB key/value database in Go.
bbolt9.3 0.0 eliasdb VS bboltAn embedded key/value database for Go.
bytebase9.2 9.4 eliasdb VS bytebaseDatabase DevOps and CI/CD for teams. https://www.bytebase.com
go-mysql9.2 6.0 eliasdb VS go-mysqla powerful mysql toolset with Go
Squirrel9.2 0.0 eliasdb VS SquirrelFluent SQL generation for golang
go-mysql-elasticsearchSync MySQL data into elasticsearch
ledisdb9.0 0.0 eliasdb VS ledisdbA high performance NoSQL Database Server powered by Go
buntdb9.0 0.0 eliasdb VS buntdbBuntDB is an embeddable, in-memory key/value database for Go with custom indexing and geospatial support
pREST8.9 9.5 eliasdb VS pRESTPostgreSQL ➕ REST, low-code, simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new
rosedb8.9 7.4 eliasdb VS rosedb🚀 A high performance NoSQL database based on bitcask, supports string, list, hash, set, and sorted set.
go-memdb8.8 0.0 eliasdb VS go-memdbGolang in-memory database built on immutable radix trees
xo8.8 0.0 eliasdb VS xoCommand line tool to generate idiomatic Go code for SQL databases supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server
tiedot8.7 1.3 eliasdb VS tiedotA rudimentary implementation of a basic document (NoSQL) database in Go
dbmate8.7 2.2 eliasdb VS dbmate:rocket: A lightweight, framework-agnostic database migration tool.
sql-migrate8.6 0.0 eliasdb VS sql-migrateSQL schema migration tool for Go.
atlas8.6 0.0 eliasdb VS atlasA modern tool for managing database schemas
nutsdb8.6 7.3 eliasdb VS nutsdbA simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
cache2go8.5 3.6 eliasdb VS cache2goConcurrency-safe Go caching library with expiration capabilities and access counters
GCache8.5 0.0 eliasdb VS GCacheAn in-memory cache library for golang. It supports multiple eviction policies: LRU, LFU, ARC
goqu8.2 0.0 eliasdb VS goquSQL builder and query library for golang
gocraft/dbr (database records)Additions to Go's database/sql for super fast performance and convenience.
fastcache8.1 0.0 eliasdb VS fastcacheFast thread-safe inmemory cache for big number of entries in Go. Minimizes GC overhead
gendry8.0 0.0 eliasdb VS gendrya golang library for sql builder
CovenantSQL8.0 0.0 eliasdb VS CovenantSQLA decentralized, trusted, high performance, SQL database with blockchain features
chproxy7.8 6.7 eliasdb VS chproxyOpen-Source ClickHouse http proxy and load balancer
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of eliasdb or a related project?
EliasDB is a graph-based database which aims to provide a lightweight solution for projects which want to store their data as a graph.
- Build on top of a custom key-value store which supports transactions and memory-only storage.
- Data is stored in nodes (key-value objects) which are connected via edges.
- Stored graphs can be separated via partitions.
- Stored graphs support cascading deletions - delete one node and all its "children".
- All stored data is indexed and can be quickly searched via a full text phrase search.
- EliasDB has a GraphQL interface which can be used to store and retrieve data.
- For more complex queries EliasDB has an own query language called EQL with an sql-like syntax.
- Written in Go from scratch. Only uses gorilla/websocket to support websockets for GraphQL subscriptions.
- The database can be embedded or used as a standalone application.
- When used as a standalone application it comes with an internal HTTPS webserver which provides user management, a REST API and a basic file server.
- When used as an embedded database it supports transactions with rollbacks, iteration of data and rule based consistency management.
Getting Started (standalone application)
You can download a pre-compiled package for Windows (win64) or Linux (amd64) here.
Extract it and execute the executable with:
The executable should automatically create 3 subfolders and a configuration file. It should start an HTTPS server on port 9090. To see a terminal point your webbrowser to:
After accepting the self-signed certificate from the server you should see a web terminal. EliasDB can be stopped with a simple CTRL+C or by overwriting the content in eliasdb.lck with a single character.
Getting Started (docker image)
You can pull the latest docker image of EliasDB from Dockerhub:
docker pull krotik/eliasdb
Create an empty directory, change into it and run the following to start the server:
docker run --user $(id -u):$(id -g) -v $PWD:/data -p 9090:9090 krotik/eliasdb server
This exposes port 9090 from the container on the local machine. All runtime related files are written to the current directory as the current user/group.
Connect to the running server with a console by running:
docker run --rm --network="host" -it -v $PWD:/data --user $(id -u):$(id -g) -v $PWD:/data krotik/eliasdb console
To get an idea of what EliasDB is about have a look at the [tutorial](examples/tutorial/doc/tutorial.md). This tutorial will cover the basics of EQL and show how data is organized.
There is a separate [tutorial](examples/tutorial/doc/tutorial_graphql.md) on using ELiasDB with GraphQL.
The terminal uses a REST API to communicate with the backend. The REST API can be browsed using a dynamically generated swagger.json definition (https://localhost:9090/db/swagger.json). You can browse the API of EliasDB's latest version here.
EliasDB supports to be run in a cluster by joining multiple instances of EliasDB together. You can read more about it [here](cluster.md).
Command line options
The main EliasDB executable has two main tools:
Usage of ./eliasdb <tool> EliasDB graph based database Available commands: console EliasDB server console server Start EliasDB server
The most important one is server which starts the database server. The server has several options:
Usage of ./eliasdb server [options] -export string Export the current database to a zip file -help Show this help message -import string Import a database from a zip file -no-serv Do not start the server after initialization
Once the server is started the console tool can be used to interact with the server. The options of the console tool are:
Usage of ./eliasdb console [options] -exec string Execute a single line and exit -file string Read commands from a file and exit -help Show this help message -host string Host of the EliasDB server (default "localhost") -port string Port of the EliasDB server (default "9090")
On the console type 'q' to exit and 'help' to get an overview of available commands:
Command Description export Exports the last output. find Do a full-text search of the database. help Display descriptions for all available commands. info Returns general database information. part Displays or sets the current partition. ver Displays server version information.
It is also possible to directly run EQL and GraphQL queries on the console. Use the arrow keys to cycle through the command history.
EliasDB uses a single configuration file called eliasdb.config.json. After starting EliasDB for the first time it should create a default configuration file. Available configurations are:
|ClusterConfigFile||Cluster configuration file.|
|ClusterLogHistory||File which is used to store the console history.|
|ClusterStateInfoFile||File which is used to store the cluster state.|
|CookieMaxAgeSeconds||Lifetime for cookies used by EliasDB.|
|EnableAccessControl||Flag if access control for EliasDB should be enabled. This provides user authentication and authorization features.|
|EnableCluster||Flag if EliasDB clustering support should be enabled. EXPERIMENTAL!|
|EnableClusterTerminal||Flag if the cluster terminal file /web/db/cluster.html should be created.|
|EnableReadOnly||Flag if the datastore should be open read-only.|
|EnableWebFolder||Flag if the files in the webfolder /web should be served up by the webserver. If false only the REST API is accessible.|
|EnableWebTerminal||Flag if the web terminal file /web/db/term.html should be created.|
|HTTPSCertificate||Name of the webserver certificate which should be used. A new one is created if it does not exist.|
|HTTPSHost||Hostname the webserver should listen to. This host is also used in the dynamically generated swagger definition.|
|HTTPSKey||Name of the webserver private key which should be used. A new one is created if it does not exist.|
|HTTPSPort||Port on which the webserver should listen on.|
|LocationAccessDB||File which is used to store access control information. This file can be edited while the server is running and changes will be picked up immediately.|
|LocationDatastore||Directory for datastore files.|
|LocationHTTPS||Directory for the webserver's SSL related files.|
|LocationUserDB||File which is used to store (hashed) user passwords.|
|LocationWebFolder||Directory of the webserver's webfolder.|
|LockFile||Lockfile for the webserver which will be watched duing runtime. Replacing the content of this file with a single character will shutdown the webserver gracefully.|
|MemoryOnlyStorage||Flag if the datastore should only be kept in memory.|
|ResultCacheMaxAgeSeconds||EQL queries create result sets which are cached. The value describes the amount of time in seconds a result is kept in the cache.|
|ResultCacheMaxSize||EQL queries create result sets which are cached. The value describes the number of results which can be kept in the cache.|
Note: It is not (and will never be) possible to access the REST API via HTTP.
Enabling Access Control
It is possible to enforce access control by enabling the
EnableAccessControl configuration option. When started with enabled access control EliasDB will only allow known users to connect. Users must authenticate with a password before connecting to the web interface or the REST API. On the first start with the flag enabled the following users are created by default:
|johndoe||doe||public||Default unprivileged user|
Users can be managed from the console. Please do either delete the default users or change their password after starting EliasDB.
Users are organized in groups and permissions are assigned to groups. Permissions are given to endpoints of the REST API. The following permissions are available:
|Type||Allowed HTTP Request Type||Description|
|Create||Post||Creating new data|
|Update||Put||Modify existing data|
The default group permissions are:
To build EliasDB from source you need to have Go installed (go >= 1.12):
Create a directory, change into it and run:
git clone https://devt.de/krotik/eliasdb/ .
You can build EliasDB's executable with:
go build cli/eliasdb.go
Building EliasDB as Docker image
EliasDB can be build as a secure and compact Docker image.
Create a directory, change into it and run:
git clone https://devt.de/krotik/eliasdb/ .
You can now build the Docker image with:
docker build --tag krotik/eliasdb .
- [Chat](examples/chat/doc/chat.md) - A simple chat application showing user /management and subscriptions.
- [Data-mining](examples/data-mining/doc/data-mining.md) - A more complex application which uses the cluster feature of EliasDB and GraphQL for data queries.
- A design document which describes the different components of the graph database. Link
- A reference for the EliasDB query language EQL. Link
- A reference for the EliasDB's support for GraphQL. Link
- A quick overview of what you can do when you embed EliasDB in your own Go project. Link
EliasDB source code is available under the Mozilla Public License.
*Note that all licence references and agreements mentioned in the eliasdb README section above are relevant to that project's source code only.