DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

InfiniDB


InfiniDB is a column-store DBMS optimized for OLTP workloads. It has a distributed architecture to support Massive Paralllel Processing (MPP). It uses MySQL as its front-end such that users familiar with MySQL can quickly migrate to InfiniDB. Due to this fact, users can connect to InfiniDB using any MySQL connector.[04]

Source Code
https://github.com/infinidb/infinidb[02]
Country of Origin
US
Start Year
2000
End Year
2014 [09]
Project Types
Commercial, Open Source
Written in
C++
Supported Languages
C, C#, C++, Java, PHP, Python
Derived From
MySQL
Operating System
Linux
License
GPL v2

Database Entry

InfiniDB


InfiniDB is a column-store DBMS optimized for OLTP workloads. It has a distributed architecture to support Massive Paralllel Processing (MPP). It uses MySQL as its front-end such that users familiar with MySQL can quickly migrate to InfiniDB. Due to this fact, users can connect to InfiniDB using any MySQL connector.[04]

Concurrency Control[04]


InfiniDB applies MVCC to do concurrency control. It uses term System Change Number (SCN) to indicate a version of the system. In its Block Resolution Manager (BRM), it utilizes three structures, Version Buffer, Version Substitution Structure (VSS), and Version Buffer Block Manager, to manage multiple versions. InfiniDB applies deadlock detection to resolve conflicts.

Data Model


Foreign Keys[05]


InfiniDB uses MySQL as its front-end and supports all MySQL syntaxes, including foreign keys.

Indexes[04]


InfiniDB is a columnar DBMS. For each column, InfiniDB applies range partitioning and stores the minimum and maximum value of each partition in a small structure called Extent Map. In InfiniDB, Extent Map is only updated when the first query happens after data manipulation. rather than at the point of data manipulation.

Isolation Levels[06][07]


InfiniDB adopts Read Committed isolation level which means that only committed data can be read by users. Every operation in InfiniDB only runs on a snapshot of the system, which achieves a Read Committed Snapshot behavior. It guarantees that reads are not blocked by writes because it works on a snapshot version.

Joins[02]


Logging[07]


InfiniDB stores all DDL and DML statements as transaction log, which is essentially command logging.

Query Execution[08]


In InfiniDB, every job step of the execution plan has a input data list and output data list. Data list has defined iterator and next method, which allows the system to process one tuple at a time.

Query Interface[04]


SQL

InfiniDB uses MySQL syntax, which is a SQL interface.

Storage Architecture


Storage Model


Since InfiniDB is an analytic database optimized for OLTP workloads, columnar storage model is a better choice. In this way, I/O activities for selective queries can be reduced as it only needs to fetch relevant columns.

System Architecture[04]


InfiniDB suppports two architectures, shared-disk or shared nothing. It can be configured by the administrator while setuping the system.

Views[04]


Since InfiniDB's columnar storage model and range-partitioned storage of each column, each table is already column-wise and row-wise partitioned. Thus, InfiniDB does not store any materialized views to save space and reduce maintenance difficulty. However, it still supports virtual views to be consistent with MySQL syntax.

Revision #5