# Datablitz

DataBlitz is a general purpose main memory database management system, developed by Lucent Bell Labs Research from 1993 to 1995. It replaced various home-grown database products used throughout Lucent beginning in 1997.
It was originally named "Dali", and provided recovery and concurrency control features. Later, Dali was renamed as "DataBlitz".
DataBlitz provides a platform for building high-performance shared memory applications that can survive failures or organize large amounts of data with features suited to many applications.
Applications for DataBlitz include:
* Switching and call routing in telecommunications
* Real-time billing
* High-performance Web servers
* Financial trading applications
* Data caching

## Features of DataBlitz

* Architecture for high performance
** No disk I/O for read operations and limited disk I/O for write operations (for Real Time apps.)
** All algorithms optimized for memory rather than disk
** Direct shared memory access to data
** Native C++ API for faster data access
** Support Multithread applications.
* Full Transaction Semantics
** Atomicity
** Consistency
** Isolation
** Durability
* High Availability
** Data replication to enhance availability and redundancy
** Asynchronous and Synchronous data replication
** Multi level Recovery to handle all kinds of failures
** Enhanced Fault Tolerance
** Code-word and Memory protection to detect and prevent data corruption due to stray application pointers
* Fuzzy checkpoints that only minimally interfere with transaction processing
* Relational C++ interfaces to optimize CPU cycles
* Supports a broad subset of ANSI SQL 99, using Dharma SQL engine
* Support SQL, ODBC and JDBC through Dharma SQL engine.
* On-line backup and restore facility

### Relational

The DataBlitz Relational Manager is a C++ class library interface to a relational system with SQL support limited to definition statements. Schema information is stored in tables, and can be queried using the relational API itself. Indices may be created on arbitrary subsets of the attributes in a table. Referential integrity is supported (foreign key constraints), as are null values, date and time attribute types, and variable length fields. Navigation is supported through iterators over a single table. A conjunctive query may be specified for the iterator, and automatic index selection is performed. Both fine-grained and multi-granularity locking strategies are used for high concurrency without incurring too much overhead. Also, locks obtained by iterators avoid the "phantom" anomaly...

### Collections and Indices

DataBlitz also provides higher-layer interfaces for grouping related data items, and performing scans as well as associative access (via indices) on data items in a group...

### Storage Manager

Each database file in DataBlitz consists of segments, which are contiguous page-aligned units of allocation, similar to clusters in a file system. Chunk is a collection of segments. Recovery characteristics of memory (transient, zeroed, or persistent) are specified on a per-chunk basis at the time of chunk creation. Zeroed memory remains allocated upon recovery but each byte is set to zero. With transient memory, the data are no longer allocated upon recovery. Users allocate within a chunk, and do not specify a particular segment. Since segments can be arbitrarily large (within the size of the database), arbitrarily large objects can be stored contiguously. Upon allocation within a chunk, the system returns a standard DataBlitz pointer to the space, which specifies the offset within the file. The elements shown linking together segments in a chunk are themselves stored in a special chunk used for control information. Storing control information separately from the data reduces the likelihood of it being corrupted by stray application pointers...

### Replication

In DataBlitz, data can be replicated across multiple DataBlitz instances running on machines connected by a network in a distributed environment. The primary benefits of data replication are higher availability and improved performance. For instance, if a table is stored only at a single site in a distributed setting, and if that site crashes or becomes unavailable due to a network failure, then the table would become inaccessible to other sites in the system. DataBlitz provides support for data replication at the granularity of tables. Each table can be replicated at any subset of sites in the system...