All Projects → valmat → RocksServer

valmat / RocksServer

Licence: other
Flexible and fast server for RocksDB

Programming Languages

C++
36643 projects - #6 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to RocksServer

toplingdb
ToplingDB is a cloud native LSM Key-Value Store with searchable compression algo and distributed compaction
Stars: ✭ 631 (+1812.12%)
Mutual labels:  rocksdb, nosql
quitsies
A persisted drop-in replacement for Memcached, respecting the rules of quitsies.
Stars: ✭ 16 (-51.52%)
Mutual labels:  rocksdb, nosql
Ardb
A redis protocol compatible nosql, it support multiple storage engines as backend like Google's LevelDB, Facebook's RocksDB, OpenLDAP's LMDB, PerconaFT, WiredTiger, ForestDB.
Stars: ✭ 1,707 (+5072.73%)
Mutual labels:  rocksdb, nosql
pika
Pika is a nosql compatible with redis, it is developed by Qihoo's DBA and infrastructure team
Stars: ✭ 4,719 (+14200%)
Mutual labels:  rocksdb, nosql
Pika
Pika is a nosql compatible with redis, it is developed by Qihoo's DBA and infrastructure team
Stars: ✭ 4,439 (+13351.52%)
Mutual labels:  rocksdb, nosql
Tidis
Distributed transactional NoSQL database, Redis protocol compatible using tikv as backend
Stars: ✭ 1,182 (+3481.82%)
Mutual labels:  rocksdb, nosql
Tendis
Tendis is a high-performance distributed storage system fully compatible with the Redis protocol.
Stars: ✭ 2,295 (+6854.55%)
Mutual labels:  rocksdb, nosql
soda-for-java
SODA (Simple Oracle Document Access) for Java is an Oracle library for writing Java apps that work with JSON (and not only JSON!) in the Oracle Database. SODA allows your Java app to use the Oracle Database as a NoSQL document store.
Stars: ✭ 61 (+84.85%)
Mutual labels:  nosql
cordova-plugin-realm
Unofficial Cordova plugin for Realm Mobile Database.
Stars: ✭ 29 (-12.12%)
Mutual labels:  nosql
workshop-intro-to-cassandra
Learn Apache Cassandra fundamentals in this hands-on workshop
Stars: ✭ 208 (+530.3%)
Mutual labels:  nosql
southpaw
⚾ Streaming left joins in Kafka for change data capture
Stars: ✭ 48 (+45.45%)
Mutual labels:  rocksdb
beryldb
BerylDB is a fully modular data structure data manager that can be used to store data as key-value entries. The server allows channel subscription and is optimized to be used as a cache repository. Supported structures include lists, sets, multimaps, and keys.
Stars: ✭ 201 (+509.09%)
Mutual labels:  rocksdb
location-api-sl
This API can be use to all developers to get location details of Sri Lanka 🇱🇰 including major cities, sub areas, districts and Provinces. ⛳️
Stars: ✭ 35 (+6.06%)
Mutual labels:  nosql
unqlite.rs
UnQLite wrapper 1.0 is avaliable for Rust
Stars: ✭ 99 (+200%)
Mutual labels:  nosql
objectbox-generator
ObjectBox Generator based on FlatBuffers schema files (fbs) for C and C++ (more languages in the future)
Stars: ✭ 30 (-9.09%)
Mutual labels:  nosql
gorm-neo4j
GORM for Neo4j
Stars: ✭ 16 (-51.52%)
Mutual labels:  nosql
chainDB
A noSQL database based on blockchain technology
Stars: ✭ 13 (-60.61%)
Mutual labels:  nosql
uptasticsearch
An Elasticsearch client tailored to data science workflows.
Stars: ✭ 47 (+42.42%)
Mutual labels:  nosql
authorizer
Your data, your control. Fully open source, authentication and authorization. No lock-ins. Deployment in Railway in 120 seconds || Spin a docker image as a micro-service in your infra. Built in login page and Admin panel out of the box.
Stars: ✭ 770 (+2233.33%)
Mutual labels:  nosql
lmdb-js
Simple, efficient, ultra-fast, scalable data store wrapper for LMDB
Stars: ✭ 270 (+718.18%)
Mutual labels:  nosql

RocksServer is server for RocksDB

Supports the following operations:

  • Get value / multi-values by key / keys
  • Set value / multi-values by key / keys
  • Delete key/keys from DB
  • Check if key exists
  • Imcrement value by key
  • Itereate key-value pairs by key-prefix
  • Itereate key-value pairs by seek key or key-prefix

For more details see: protocol description

##Dependency RocksDB, LibEvent

The compiler should support C++11

Install & Run

First install RocksDB dependences:

sudo apt install libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev

Then clone the repository:

git clone --recursive https://github.com/valmat/RocksServer
cd RocksServer

or

git clone https://github.com/valmat/RocksServer
cd RocksServer
git submodule update

After then compile dependencies:

./deps/make.sh

Compile:

cd src
make

After: edit config.ini and run

./RocksServer.bin config.ini

Or you can install it:

switch to root and run

make install

Usage

Exemple of usage:

Or any your own implementation by protocol description.

How to extend

First you need implement your own request listener. To do this, you should to implement the interface

template<typename ProtIn, typename ProtOut>
struct RequestBase: public RequestSuperBase
{
    virtual void run(const ProtIn &, const ProtOut &) = 0;
};

For example: RequestPing.h

struct RequestPing : public RequestBase<ProtocolInTrivial, ProtocolOut>
{
    virtual void run(const ProtocolInTrivial &in, const ProtocolOut &out) override
    {
        out.setStr("pong");
    }
};

After that, you need to implement a plugin: smpl_plug.cpp

#include <rocksserver/api.h>
#include "RequestPing.h"

PLUGIN(Extension &extension)
{
    extension.bind("/ping", new RequestPing());
}

Compile your plugin:

g++ -I. -I"/usr/include/rocksserver/include" -Wall -O3 -std=c++11 -fPIC -c smpl_plug.cpp -o smpl_plug.o
g++ -Wall -std=c++11 -O3 -shared smpl_plug.o -o smpl_plug.so

and copy to /usr/lib/rocksserver/plugins

cp -f smpl_plug.so /usr/lib/rocksserver/plugins/smpl_plug.so

Restart RocksServer. See example how to extend RocksServer.

How to customize

Just edit config.ini

License

BSD

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].