BangDB

From WikiAlpha
Jump to: navigation, search
BangDB
Industry Database
Key people Sachin Sinha (Creator)
Parent Iqlect Software Solutions
Website bangdb.com


BangDB is a NoSQL database written in C/C++ from scratch to scale out applications suitable for heavy lifting.[1][2]

It is a multi-flavored database available as BangDB Embedded, BangDB Server, Data Fabric and Elastic Cache.[3] It is a high-performance embedded database for transactional key value data which supports full ACID (Atomicity, Consistency, Isolation and Durability) by implementing optimistic concurrency control with parallel verification for high performance and concurrency and is downloadable via a BSD License.[4][5]

BangDB was developed and authored by Sachin Sinha in 2012.[2] It has its own buffer pool, write ahead log with crash recovery system and provides users with many configuration to control the execution environment including the memory budget.[6]

History

BangDB was developed in 2011 and released its first beta version in 2012 November.[7] BangDB 0.1 was released with few simple features such as key- value store DB with opaque data, support for Btree + extHash, get, put, delete and simple scan, write-ahead log and buffer pool.[8] When it was first developed, it was mostly used for fast key access especially for a small size data.

In 2014, BangDB 0.9 was released which included features like replication, support for multiple table types and index support. Currently BangDB 1.5 is the recent version for BangDB-embedded and server.[9]

BangDB is not fully open-source. It is offered as binaries under BSD 3 licence for free which has a limited usage constrain.[10]

BangDB, which is a part of IQLECT Software Solutions[11] was backed by Exfinity ventures in the year 2014.[12][13]

Architecture

File:BangDb server.png
BangDB_Server Architecture

The architectural objectives while designing the BangDB were:

  • The Flexibility - key-value store in various forms
  • The performance and scalability
  • The robustness and reliability.

BangDB - Embedded

BangDB Embedded version is part of the BangDB family and a high level architecture consists of three main important components of the Database.[14][15]

  • The Access Methods or indexes
  • The Buffer Pool and management, and
  • The Write Ahead Log

Access or indexing methods: The BangDB access methods are highly concurrent, which means on a machine with more CPUs or Cores, the db will perform better. Btree and hash methods are currently supported in the BangDB as access methods.

The Buffer Pool and management: The BangDB, when enabled, reads and writes data from the buffer pool. The buffer pool also allows one to control the memory budget on a machine.

The Write Ahead Log: The BangDB implements write ahead log, the ARIES algorithm, for data durability and atomicity. The write-ahead log provides the data recovering capability when required. For example, in the event of process or machine crash etc..., It recovers the data when restarted and brings the DB to the state where it was when it crashed.[15]

BangDB-Server

In this flavour, BangDB runs as network service and clients access it over the network. This model is good for sharing data with multiple apps or instances of an app. The typical use case for this flavour is cache on top of the database, a network data store etc.

The architecture of BangDB follows a form of Staged Event-Driven Architecture (SEDA) which suits a highly concurrent network server. The server is stage driven and with a number of stages available as configurable parameter. This makes the server well-conditioned even with increasing loads and connections in a highly stressed scenario.[16]


Main Features

Compatible with Multi-table types:

Compatible with all table types like Normal table, Wide table and primitive table.[17]

Multi-indexing:

Creates index on the family or lets database create on auto mode as defined.[17]

Highly Concurrent Operations on B Link - Tree:

Manipulation of the tree performed by any thread using a small constant number of page locks anytime. Search procedure does not involve reading any node.[17]

Concurrent Buffer Pools:

Separate pools for different types of data with semi-adaptive data flush to ensure performance degrades gracefully in the case of data overflow out of the buffer.[18]

Sequential Data/log:

The write of data/log is always sequential and a Vectored read/write. Across the cluster, the user has more than one option. BangDB can be set as ACID within the node of the cluster.

Memory:

Slab allocator is present for most of the memory requirements. Pre-allocated client buffer present for most of the operations which enhances efficient use of memory. It Runs on commodity hardware and with smallest amount of memory committed to it. Users can allocate as much as memory needed or available.

Real-time Analytics:

Built in abstraction for Real-time data analysis is available. Counting, topk, sliding window are examples of inbuilt analytical abstractions in BangDB for various data analytics.[18]

Concurrency:

Most of the data structures are concurrent and capable of handling tens of thousands of concurrent connections.[18]

Complex Event processing:

Suitable for Complex Event processing and defines queries with no post processing and notifies, alerts while data is in the memory.[18]

Machine Learning:

Suitable for training machine learning models using simple API and predicting events or streams and take necessary auto actions. Can be used for Model versioning, release and update process. Suitable for A/B testing framework, logging and alerting.[18]

R programming:

Suitable to run R queries, building models, generating reports and charts. Integrates with R to provide insights in an ad-hoc manner to understand patterns and to select suitable ML mod-crash recovery model and WAL (Write-ahead log).

Robust and Crash-proof:

Due to the write-ahead log feature, it frequently check points the log in order to speedup the data recovery process by replaying the log in case of db/machine crash.[18]

Differences with other database systems

Since BangDB is a NoSQL Database, it is not suitable for any relational database management systems (RDBMS) and cannot run SQL based queries. It is also said not to be suitable for heavy business intelligence queries and banking and financial DB structures.

But BangDB is time and storage efficient and has high processing speed for log data analysis, Streaming data performed in a distributed cluster environment.[19]

Replications

The Replication of data is enabled by default in the db. No replication can also be opted by users but in a Network DB scenario, the replication is recommended to be turned ON. The data replication in sync mode allows user to switch between master and standby modes at run time.

Apart from data replication, Log replication can also be opted.[18]

Performance

BangDB performs well for both read and write in save mode or non-save mode (as a cache). BangDB implements its own buffer pool with semi-adaptive page prefetch and performed well even with billion keys insert when compared with other NoSQL DBS.

BangDB also implements write ahead log which append only and so it avoids random seeks by optimizing the disk writes.[18]

Transaction in BangDB

BangDB allows to create multiple user connections and simultaneous operations can be run without any concurrency issues. BangDB is a concurrent DB engine allowing multiple threads or connections to modify the DB at a time.

For a Single operation, the concurrency is done by locking and for multiple transactions, it is offered through transactions (occ). The transaction can be enabled or disabled by setting appropriate bangdb.config.[18]

Supported platform for BangDB server

Operating Systems:

Linux (Supports Ubuntu, Debian, CentOS, Fedora, RedHat, SUSE etc. with an OS version 2.6 X onwards (32/64) bit)[18]


Language:

C++, natively on Linux

Client:

C++ and Linux

See also


External Links

References

  1. "Big data firm Iqlect gets $2.5 million in Bridge Round". https://economictimes.indiatimes.com/small-biz/startups/newsbuzz/big-data-firm-iqlect-gets-2-5-million-in-bridge-round/articleshow/65143315.cms. 
  2. 2.0 2.1 "A deep dive into NoSQL: A complete list of NoSQL databases" (in en-US). 2014-07-21. https://bigdata-madesimple.com/a-deep-dive-into-nosql-a-complete-list-of-nosql-databases/. 
  3. Vivek, Tiwari; Basant, Tiwari; Singh, Thakur, Ramjeevan; Shailendra, Gupta (2016-07-22) (in en). Pattern and Data Analysis in Healthcare Settings. IGI Global. ISBN 978-1-5225-0537-2. https://books.google.com/books?id=ErrLDAAAQBAJ&pg=PA166&lpg=PA166&dq=bangdb+nosql#v=onepage. 
  4. "Iqlect | About - Elastic BigData Space". http://bangdb.com/about.php. 
  5. "BangDB - NoSQL for Real Time Performance". https://bangdb.com/about/. 
  6. "IQLECT provides insights in real-time, makes data analytics affordable" (in en-US). 2017-03-22. https://www.financialexpress.com/money/iqlect-provides-insights-in-real-time-makes-data-analytics-affordable/597429/. 
  7. "Bangdb System Properties". https://db-engines.com/en/system/Bangdb. 
  8. "LIST OF NOSQL DATABASE MANAGEMENT SYSTEMS". https://nosql-database.org/. 
  9. "Google Groups". https://groups.google.com/forum/#!forum/bangdb. 
  10. "Bangdb System Properties". https://db-engines.com/en/system/Bangdb. 
  11. "IQLECT: Predictive & real-time data analytics to easily" (in en-US). 2016-05-16. https://quickbooks.intuit.com/in/resources/quickbooks-business-of-the-week/featuring-iqlect/. 
  12. "Exfinity ventures startups portfolio". 2014. http://exfinityventures.com/portfolio.html. 
  13. Exfinity Ventures, Exfinity Ventures. "Ventureast and Exfinity back analytics startup IQLECT in bridge round". Vcc Circle. https://www.vccircle.com/hdfc-amc-gets-pe-firm-sovereign-fund-on-board-as-anchor-investors-ahead-of-ipo. 
  14. "BangDB Embedded — Национальная библиотека им. Н. Э. Баумана". https://ru.bmstu.wiki/BangDB_Embedded. 
  15. 15.0 15.1 "BangDB Resources". https://bangdb.com/resources/. 
  16. "Performance Data For LevelDB, Berkley DB And BangDB For Random Operations". 29 November 2012. http://highscalability.com/blog/2012/11/29/performance-data-for-leveldb-berkley-db-and-bangdb-for-rando.html. 
  17. 17.0 17.1 17.2 "BangDB 2.0 API". https://bangdb.com/api-server/. 
  18. 18.0 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 "BangDB NoSql". https://bangdb.com/product/. 
  19. Bridgeport University, Scholarworks. "Web Search and Browser Log analysis using BangDB for Decision Support". https://scholarworks.bridgeport.edu/xmlui/bitstream/handle/123456789/1582/189.pdf?sequence=1&isAllowed=y.