BangDB - NoSqlDB. High performance transactional key value store The BigData Buffer. Enable Real Time view of the Big Data


BangDB - Upcoming Release 1.5 (July, 2014)


The upcoming release of BangDB 1.5 is a feature rich release, following are few highlights;


  • Multi Table Types - Normal Table, Wide Table, Primitive Table
    • Normal Table - key value store with value as opaque entity
    • Wide Table - document store, value as json doc, create index on fields, query accordingly
    • Primitive Table - for primitive key and value types, more performance and resource optimized
  • Multi Indexing - create index on the fly or let db create on auto mode as defined
  • json data support and parser
  • Composite key support, index on composite keys
  • Built in abstraction for RealTime data analysis;
    • Store, process and query data, all in sub second fashion
    • Same get, put API for all analysis, abstraction takes care of all other details
    • Results are stored in processed fashion hence responds to query instantly
    • Counting - Absolute, Probablistic, unique, non-unique
    • topk - (query top k items group by 'field')
    • Sliding Window - spanned and slotted, handle huge amount of data in sliding window using humble commodity machine
  • Native support for opaque, string, int, long data type (for both key and value)

Follow us to get regular update


BangDB - nosqldb

BangDB - Multiflavored, distributed, transactional, high performance nosql database written in C/C++ from scratch for scale out apps suitable for heavy lifting. BangDB is available as;

    Embedded Datastore

    Client Server Model

    Data Grid / Elastic Data Store

BSD license for embedded and client server model, download and use freely

Download BangDB


Configurations ->

Persistent / In-memory Key value Store

  • Persistence or in-memory available as options
  • Backed by and overflows to files on disk, optimized to run efficiently on commodity hardware
  • Set the memory budget and db runs always within limit, even when it deals with huge volume of data
  • Over 50 config params to tune the db further when needed else runs well on default

Buffer Pool, Page Cache

BangDB implements its own buffer pool, page cache, block IO layer, custom memory manager, quasi adaptive page flush and prefetch module for temporal locality for write and spatial locality for read. More control on demand paging, swapping, block IO helps improve the performance of the db on commodity machine with limited amount of RAM

The buffer pool and other data structure allows concurrent access by different threads simultaneously which increases the performance of db effectively

Architecture ->


Write ahead log ->

Write ahead logging

BangDB implements modified ARIES algorithm for better logsize/datasize optimization and low overhead for sequential write ahead logging.

It has built in crash recovery which automatically kicks in when db is restarted

Log can be enabled or disabled using config param

Shared or Private log as options for multiple tables


Access Methods

BangDB implements two ways to access data using index, one is B+link Tree and other one is Ext Hash

BTree option has O(logn) complexity whereas hash has O(1), but Btree allows range scan, provides cursor for itaration etc.

DB allows concurrent access to these data structure which along with concurrent buffer pool implementation makes the db leverage number of cores in the mcachine

Index Structure->


High Performance

BangDB is a high performance database. It leverages the available cpus (or cores) as best as possible and provides high concurrency resulting in better performance

The db implements its own buffer pool, adaptive page pre fetch and flush mechanism, almost lock free index structure access which helps optimize the performance

Please check out the results of get and put for 1 billion operations on a commodity machine (8GB RAM, 4 cores) in the adjacent graph


Transaction

BangDB supports full ACID transactions for embedded and client server model. To achieve high performance with full ACID transaction, the db implements OCC (optimistic concurrency control) in order to achive high concurrency

The transaction is a property for BangDB and can be switched on/off using config file

Transaction, Read More ->


BangDB Server ->

Staged Event Driven Server

BangDB server is highly concurrent, event driven, replicated, high performance nosql database server

Designed to handle tens of thousands of concurrent connections with low memory overhead in optimized manner. It implements its own message protocol and framework, slab allocator, event managers (pluggable), async operation management, replication engine, timeouts, epoll based multiplexing etc... in order to achieve high peroformance

Typical read and write can be done at the rate of 200K IOPS using several hundreds connections. Client API is same as of embedded db hence can be ported seamlessly from embedded to server


Replication

Client Server flavor of the db supports replication to the standby (slaves)

Replication to the slaves happen in sync /async fashion based on setting and the replica (slaves) can be added at run time without bringing the master to halt and all operations on the server can continue while initial sync and replication is in progress

Replication, See More ->


BangDB API ->

BangDB Core API

BangDB has set of API to perform various activites such as CRUD. User can create many tables, perform actions and do various queries in easy fashion. Following example code is in java

	Database db = new DatabaseImpl("mydb", null, DB_MULTIOPS_TRANSACTION_NONE, null);
		
	Table tbl = db.getTable("mytable", DBACCESS.OPENCREATE, null);
		
	Connection conn = tbl.getConnection();
			
	conn.put(k1, v1, INSERTOPTIONS.INSERT_UNIQUE);
						
	byte[] v2 = conn.get(k1);
						
	ScanFilter sf = new ScanFilter();
		
	ResultSet rs = conn.scan(sk, ek, sf);
		
	while(rs.hasNext())
	{
		rs.moveNext();
	}
	rs.clear();
						
	db.closeDatabase(DBCLOSE.DEFAULT);

Simple SQL Support

BangDB support minimum set of SQL commands (SQL like commands) as of now, which can be used against server from command line tool

	create table 'mytable';
	
	describe database;
	
	describe table 'mytable';
	
	insert into 'mytable' values 'key1' 'value1';
	
	select * from 'mytable' where key >= 'key1' limit 10;
	
	update 'mytable' set val = 'value2' where key = 'key1';
	
	delete from 'mytable1' where key > 'k' and key <= 'k2'

SQL Support ->


GRID Activity ->

GRID Creation and Access

Simple commands to create, join, leave and get stats for a node in the grid

	create grid -i '192.168.1.2:9394'
	
	join grid -i '192.168.1.3:9394' -s '192.168.1.2:9394'
	
	stat grid -i '192.168.1.3:9394'
	
	leave grid -i '192.168.1.2:9394'

Batch to Real Time Processing

BigData Buffer allows user to collect data in elastic space in real time fashion and does simple aggregation and corelation in quasi real time fashion which overall moves the batch mode analysis to real time analysis (Upcoming...)


Focus on Activity Data

Activity data allow operational intelligence to be integrated with the business processes in real time. Numerous use cases for this (upcoming...)


Download BangDB

BangDB embedded and client server are available freely under BSD license, please download and use as you may wish

Embedded Native Linux

Embedded Native Windows

Embedded C# Windows

Embedded Java Linux

Embedded Java Windows

Server Native Linux


Go to BangDB Forum ->

Contact us

BangDB - Forum / Contact us

If you have any technical or product related questions that can be put on public forum please go to the BangDB forum and post them

Or else please send direct quries at contact us


Subscribe, follow us

Please subscribe to the monthly newsletter

Also please follow us for regular updates and activities

Please enter your email id