https://github.com/edwardcapriolo/nibiru
A NoSql database designed for maximum plugablitily and configurability.
https://github.com/edwardcapriolo/nibiru
Last synced: 7 months ago
JSON representation
A NoSql database designed for maximum plugablitily and configurability.
- Host: GitHub
- URL: https://github.com/edwardcapriolo/nibiru
- Owner: edwardcapriolo
- License: apache-2.0
- Created: 2014-11-27T20:00:42.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2025-07-30T02:11:21.000Z (12 months ago)
- Last Synced: 2025-07-30T04:34:20.641Z (12 months ago)
- Language: Java
- Homepage:
- Size: 1.9 MB
- Stars: 17
- Watchers: 3
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-java - Nibiru
README
nibiru 
======
Nibiru is a NoSql database designed for maximum plugablitily and configurability.
Motivation
======
There has been a recent proliferation in NoSql datastores. Many systems evolved from specific use cases or a specific industry. Often these systems are pitted against each other in apples to orange comparisons. Because apples and oranges can not be compared easily the debates typically degrade into a debate over what is the "best" implementation for the "real" users.
Nibiru takes a different approach by building API's throughout the codebase. There is no "locked in" implementation that is the "best" rather there is a system in place to provide alternative implementations. For example, Nibiru supports a gossiper for cluster discovery and a static provider. However this implemenentation is plugable so that an interested user can build a Zookeeper based implementation, an etcd based implementation, or whatever.
Plugability and is the key focus throughout the codebase. Nibiru is not even built around a specific data model. We already have support for a Column Family data model and a Key Value data model! Again Nibiru does not aim to tell you "apples are the best" or "we only support oranges". A user should be able to plug together the pieces they desire into the system they want! For example if a user wants a fast, in memory, non durable, key value store for one table, and a strongly consistent ColumnFamily store in another table they should have be able to have that.
Quickstart
======
If you want to launch an instance of nibiru we have configuration files that will create a two node cluster. Run the following commands in two separate shells. You will find the server on port 7070 on 127.0.0.1 and 127.0.0.2.
mvn exec:java -Dexec.mainClass="io.teknek.nibiru.Server" -Dexec.args="src/test/resources/nibiru_1.xml"
mvn exec:java -Dexec.mainClass="io.teknek.nibiru.Server" -Dexec.args="src/test/resources/nibiru_2.xml"
There is a simple CLI that wraps a facade around many of the client functions in the database.
mvn exec:java -Dexec.mainClass="io.teknek.nibiru.cli.Cli"
Welcome to a very minimal Cli type 'connect ' to get started
ok>
connect localhost 7070
ok>