Vertica

Vertica is a distributed, shared-nothing column-store DBMS.

History

Vetica was founded by Michael Stonebraker and Andy Palmer in 2005. It was based on the C-Store prototype developed by MIT, Brown, and Brandeis. It was acquired by Hewlett Packard in 2011. HP then sold it to MicroFocus in 2017.

Checkpoints

Blocking Fuzzy

In Vertica, each node maintains checkpoints and transaction logs separately. The synchronization duration can be tuned by users as well. For a single-node failure, it can be recovered from other nodes. If the entire cluster fails, it can be recovered up to the earliest checkpoints when all nodes are good. New transaction log cannot be appended when a new checkpoint begins.

Compression

Delta Encoding Run-Length Encoding

Both Run-Length Encoding and Delta encoding are used in Vertica. RLE encoding is only used when the number of repetitions is large. Delta encoding works for INTEGER/DATE/TIME/TIMESTAMP/INTERVAL type, where the variations from the smallest value are stored instead of the real values to save more space.

Concurrency Control

Multi-version Concurrency Control (MVCC)

Vertica supports MVCC to achieve data consistency. Both current and previous statuses are stored and visible to transactions.

Data Model

Relational

Columnar store is used in Vertica to improve the performance of sequential access by sacrificing the performance of single access. Compared with row-oriented databases which has to scan the whole table, only few needed columns are retrieved based on given queries in Vertica, which can improve throughput by reducing disk I/O costs.

Foreign Keys

Supported

Vertica allows users to use foreign key constraints. Foreign keys should be defined when tables are created or "ALTER TABLE" is used.

Indexes

Not Supported

Indexes are not support in Vertica. Projections are used to improve query performance in Vertica.

Isolation Levels

Read Committed Serializable

Read Committed and Serializable are supported in Vertica. Read Committed is the default isolation level. Read Uncommitted and Repeatable Read are treated automatically as Read Committed and Serializable respectively in vertica.

Joins

Hash Join Sort-Merge Join

Both merge join and hash join are supported in Vertica. Merge join is faster in general and requires less memory, but data is required to be sorted before. Hash join requires more memory, but it is faster if the inner table can fit in the memory.

Logging

Logical Logging

Query Compilation

Not Supported

Query Interface

Custom API SQL

Vertica supports query via SQL and its custom API. Vertica also provides connectors for external services, such as Hadoop, Spark, Kafka. Moreover, Vertica also supports C++, Java, Python, R SDK.

Storage Model

Decomposition Storage Model (Columnar)

Data is stored in Vertica in columnar format to improve query performance, since a lot of disk I/O can be avoided.

Stored Procedures

Not Supported

Stored Procedures are not support in Vertica. External Procedures such as R,C++ can be used in Vertica.

System Architecture

Shared-Nothing

Shared-nothing architecture is used in Vertica, where all nodes don't share anything in terms of memory and disk storage. Shared-nothing architecture are easier to scale, since there is no race or contention caused by locks. Moreover, Massively MPP(Massive Parallel Processing) architecture is used in Vertica, which can improve query performance such as increasing the throughput of large joins when multiple machines are involved.

Views

Materialized Views

The projections in Vertica are similar to materialized view in other DBMS. Various projections can be created on the same table so that some optimizations such as sorting data can be done for some specific queries in advance.

Vertica Logo
Website

http://www.vertica.com/

Tech Docs

https://www.vertica.com/docs/9.1.x/HTML/index.htm

Developer

MicroFocus

Country of Origin

US

Start Year

2005

Acquired By

HP, MicroFocus

Project Type

Commercial

Written in

C++

Supported languages

C++, Java, Perl, Python, R

Derived From

PostgreSQL

Inspired By

C-Store

Operating Systems

Linux

Licenses

PostgreSQL License

Wikipedia

https://en.wikipedia.org/wiki/Vertica