All Projects → sachin-sinha → BangDB

sachin-sinha / BangDB

Licence: other
BangDB - nosql database

Programming Languages

C++
36643 projects - #6 most used programming language
java
68154 projects - #9 most used programming language
perl
6916 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to BangDB

AloeDB
Light, Embeddable, NoSQL database for Deno 🦕
Stars: ✭ 111 (+136.17%)
Mutual labels:  nosql-database
skytable
Skytable is an extremely fast, secure and reliable real-time NoSQL database with automated snapshots and TLS
Stars: ✭ 696 (+1380.85%)
Mutual labels:  nosql-database
MongoDB-University
Repo for All MongoDB University Courses
Stars: ✭ 102 (+117.02%)
Mutual labels:  nosql-database
acebase
A fast, low memory, transactional, index & query enabled NoSQL database engine and server for node.js and browser with realtime data change notifications
Stars: ✭ 288 (+512.77%)
Mutual labels:  nosql-database
e-commerce-microservices
REST Microservices architecture for E-commerce with Spring boot, Cloud and multiple modules
Stars: ✭ 102 (+117.02%)
Mutual labels:  nosql-database
Realm Js
Realm is a mobile database: an alternative to SQLite & key-value stores
Stars: ✭ 4,648 (+9789.36%)
Mutual labels:  nosql-database
mage
MAGE - Memgraph Advanced Graph Extensions 🔮
Stars: ✭ 89 (+89.36%)
Mutual labels:  real-time-analytics
lstm-kalman-hybrid-timeseries
Hybrid Time Series using LSTM and Kalman Filtering
Stars: ✭ 33 (-29.79%)
Mutual labels:  timeseries-analysis
pickledb-rs
PickleDB-rs is a lightweight and simple key-value store. It is a Rust version for Python's PickleDB
Stars: ✭ 116 (+146.81%)
Mutual labels:  nosql-database
Realm Java
Realm is a mobile database: a replacement for SQLite & ORMs
Stars: ✭ 11,232 (+23797.87%)
Mutual labels:  nosql-database
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 (+29.79%)
Mutual labels:  nosql-database
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 (-25.53%)
Mutual labels:  nosql-database
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 (+3531.91%)
Mutual labels:  nosql-database
nosql-go-sdk
SDK for Go for Oracle NoSQL Database
Stars: ✭ 26 (-44.68%)
Mutual labels:  nosql-database
geneSCF inactive
GeneSCF moved to a dedicated GitHub page, https://github.com/genescf/GeneSCF
Stars: ✭ 21 (-55.32%)
Mutual labels:  real-time-analytics
simpledbm
SimpleDBM is an Open Source Multi-Threaded Embeddable Transactional Database Engine in Java.
Stars: ✭ 51 (+8.51%)
Mutual labels:  nosql-database
pocket-db
🎒 A pocket-sized Node.js, NoSQL database.
Stars: ✭ 15 (-68.09%)
Mutual labels:  nosql-database
database-journal
Databases: Concepts, commands, codes, interview questions and more...
Stars: ✭ 50 (+6.38%)
Mutual labels:  nosql-database
bagri
XML/Document DB on top of distributed cache
Stars: ✭ 40 (-14.89%)
Mutual labels:  nosql-database
Stampede
The ToroDB solution to provide better analytics on top of MongoDB and make it easier to migrate from MongoDB to SQL
Stars: ✭ 1,754 (+3631.91%)
Mutual labels:  nosql-database

BangDB

Get BangDB 2.0 from;

However, it's recommended to register with BangDB (if you download from the website, you will have to register) to get regular updates

It's pretty straight forward to install the server. For detail info, please see the README present in the base folder or checkout https://bangdb.com/server-install/

BangDB - nosql database

 _____________________
|                     |		BangDB Server (master) ver:2.0 64 bit
|                     |		IP = 0.0.0.0 : Port = 10101 
|  BangDB Server 2.0  |		PID = 2658
|   www.bangdb.com    |
|__________           |
|          |          |
|   BSD    |          |
| License  |          |
|__________|__________|

Basic Informantion

High level features in BangDB includes (not limited to);

  • NoSQL database

    • Key value
    • Document
    • Large binary data [ BRS - BangDB Resource Server, deals with large files or objects, exposes S3 like features ]
    • Column [ native types ]
    • Time series
  • Stream

    • Ingest any data [ different ways to ingest the data, agents can also be deployed ]
    • Transform [ Transformation before ingestion is not required, can apply this in absolute and probabilistic manner or both ]
    • filter & join [ filter incoming stream on some running conditions and/or join with other to produce another etc. ]
      • aggregate [ slice n dice, groupby etc. ]
      • statistics [ count, unique count, sum, avg, stddev, ex-kurtosis, covar, running stats ]
      • CEP [ Complex event processing, backed by table, scales linearly ]
      • Notifications
      • sliding window (continuous)
      • UDF - [ use default or define your own functions at run time ]
      • Train and predcict on stream
  • AI

    • ML
    • IE (Information Extraction)
    • DL (Deep Learning - with Enterprise Edition only)
  • Graph

    • Create Graph within BangDB (it's just a table) and store nodes and/or triples (sub-rel-obj)
    • Use Cypher to run query ( little modified version of Cypher for better efficiency, support and speed )
    • Create ontologies and query ( using absolute or probabilistic methods (IE - information extraction))

The db and other components are written in C/C++ and has following core features to achieve very high performance, efficiency and robustness for scale;

  • Buffer pool and page cache
  • Adaptive pre-fetch and flushing
  • Write ahead log
  • transaction (OCC)
  • SEDA (Staged Event Driven)
  • IO Layer
  • primary, secondary, composite, nested, reverse index
  • Normal, wide, primitive, sliding window tables
  • Fully concurrent read and write

Basic Types

The db provides simple types, interfaces and APIs, most important types are;

  • bangdb_database
  • bangdb_table
  • bangdb_stream_manager
  • bangdb_notification_manager
  • bangdb_ml_helper
  • bangdb_dl_helper

BangDB Flavors

BangDB comes in different flavors, namely

  • Embedded - BangDB becomes part of the user process. Similar to BerkeleyDB or LevelDB. It can also be run on microprocessors like RaspberryPi etc.
  • Server (Client) - BangDB runs as a service and different clients can connect to it for processing. It's a master slave model. Training, BRS etc. could be part of the server or could be deployed as separate instances
  • P2P based distributed database - [ Upcoming, later this year ] Implements consistent hashing, Chord+ algo, CAP Knob, high churning, linear scale etc. Note: API remains same across all flavors [ except in ~5% cases where certain changes are unavoidable ]. This allows portability, one can write app for embedded and deploy for Server or Cluster. In fact I usually write all my apps for embedded as it's easy to debug and test, and then deploy for other flavors

Other Components

  1. Clients - to help user write applications for BangDB, clients are fully concurrent and exposes simple APIs for writing such applications. Please note that the API for BangDB are same for all falvors. The core client is written in C++, it uses TCP socket to communicate. It also implements robust and very efficient message protocol for high performance. Java wrapper is provided for allowing users to write their apps in java/scala

  2. Cli - a command line cli to interact with the DB. It uses quasi SQL langauge to interact with the db. It also allows users to deal with streams and draw simple charts in the terminal using Gnuplot for better visualization within terminal. User can also administer agents for streaming data into the BangDB. Further we can also switch the master to slave and vice versa and add slaves etc. and do cluster management work using the cli

  3. brs-cli - a command line tool for uploading and downloading large files, much like S3 features

Install and Run

Running BangDB is very simple

go to the base folder of the bangdb (v2.0/bangdb-2.0_)

Deal with Prereqs - The binary links with several libraries, few of these are provided along with the server in the lib folder. However, to ensure you have following libs on the server run the install.sh

sudo apt-get update (or sudo yum update) sudo bash install.sh

..................................................................................................................

This will install necessary libs and set the softlinks as well It also ensures that it has installed java8, python3 (python 3.6 for all, and 3.8 for ubuntu20)

To run IE (information extraction) we need few more lib; Hence it also installsSPARQLWrapper, wikipedia, html2text

It also sest the PATH and LD_LIBRARY_PATH libjvm - set the path or create soft link to libjvm which can be found by the server export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server/ OR ln -sf $JAVA_HOME/jre/lib/amd64/server/libjvm.so /usr/local/lib/libjvm.so

For Cli, as it needs feedgnuplot which requires gnuplot and perl, hence it brings those as well

..................................................................................................................

That's it. You are ready to run the server in following two ways;

Method 1

cd bin ./bangdb-server-2.0

There are many command line args that this can take and ther are defined below in the configuration section

Method 2

./bangdb-server start

This runs the db in background, you may check the status ./bangdb-server status

and stop the server

./bangdb-server stop

This method don't allow command line args to be specified, therefore we will need to set those in the bangdb.config file

Configurataion

Checkout https://www.bangdb.com/bangdb-config for more details on configuring BangDB

There are however several ways to configure for the server, here are the relevant details;


Command line arguments
----------------------

There are however several ways to configure for the server through command line arguments, 
here are the relevant details;

pls type help to see the options
./bangdb-server-2.0 -help

Here are some of the details;

----------------------------------------------------------------------------------------------------------------------------------------------------------
Usage: -i [master | slave] -r [yes | no] -t [yes | no] -d [dbname] -s [IP:PORT] -m [IP:PORT] -p [IP] -b [yes | no] -c [tcp | http | hybrid] -w [PORT] -v
----------------------------------------------------------------------------------------------------------------------------------------------------------
Options
-------
 -i: defines the server's identity [master | slave], default is SERVER_TYPE (master) as defined in bangdb.config
 -r: defines replication state [yes | no], default is ENABLE_REPLICATION (0) as defined in bangdb.config 
 -t: defines if transaction is enabled(yes) or disabled(no) [yes | no], default is no 
 -d: defines the dbname, default is BANGDB_DATABASE_NAME (mydb) as defined in bangdb.config 
 -s: defines IP:Port of this server, default is SERVER_ID:SERV_PORT as defined in bangdb.config
 -m: defines IP:Port of the master (required only for slave as it declares master with this option)
 -p: defines public IP of the server (required for master and slave to expose their own public IP)
 -b: defines if server to be run in background as daemon, default is foreground
 -c: defines if server runs as tcp server or http (rest) server or both (hybrid), default is tcp server
 -w: defines the http port when server runs in http or hybrid mode     default is MASTER_SERVER_ID:MASTER_SERV_PORT as defined in the bangdb.config
 -v: prints the alpha-numeric version of the executable

 Hence to run master with other values as defined in the bangdb.config, issue following command
 ./bangdb-server -s 192.168.1.5:10101

 To run slave for this master with default other values..
 ./bangdb-server -i slave -s 192.168.1.6:10102 -m 192.168.1.5:10101
etc...
----------------------------------------------------------------------------------------------------------------------------------------------------------

BangDB requires bangdb.config file as an input, you may leave it in the same folder as bangdb-server.

  • bangdb.config - using this you can set various run time config for the db. Also it provides enough hadles with tune the core and internals of db to run in the best possible manner depending upon the host configuration and boundaries. The config file has details before each of these paramaeters and also structured in a manner to allow you to pick and modify things in rather confortable way

Please refer www.bangdb.com/developer section to get most of the detail info as needed

Update DB with new version

To update with new version, you won't need to do much except,

  1. stop the db
  2. copy new bangdb-server binary (only one file)
  3. re run the db

Hope you find the db useful and it helps you solve some of the problems for you. Looking forward to connect with you, get your feedback, comments, suggestions etc. soon I am also going to start the community part here in few weeks

Please feel free to write to me at [email protected] for any info, clarity, feedback etc.

Enjoy!
Sachin

Use cases

  • I.O.T. vehicle monitoring
  • Analytics from customer reviews
  • Fraud detection
  • Supply chain management
  • and many more...

Check out detailed analysis of all examples here: https://bangdb.com/docs/bangdb-2-0-use-cases/

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