Vertica

Vertica is a distributed infrastructure-independent analytics platform. It can be deployed on various platforms like AWS,GCP,Azure... It is designed to support a relatively high query performance compared with traditional DBMS. High availability and good scalability on commodity hardware can be achieved. Also, it supports good integration with Hadoop, Spark, Kafka, which makes user choose where they want to analyze data.

History

Vetica was founded by Michael Stonebraker and Andrew Palmer in 2015. Vertica is derived from C-Store. C-Store is a prototype developed by MIT and few other universities like Brown. It was acquired by Hewlett Packard in 2011.Moreover, it also joined Micro Focus in 2017 due to the merger between Micro Focus and HP.

Query Compilation

Not Supported

Compression

Delta Encoding Run-Length Encoding

Both Run-Length Encoding and Delta encoding are used in Vertica. RLE encoding is only used when the length is large, and it is processed by the execution engine run by run. Data encoding works for INTEGER/DATE/TIME/TIMESTAMP/INTERVAL, where the difference from the smallest value are used as the data.

Foreign Keys

Supported

Vertica allows users to define foreign key constraints. Foreign keys should be identified when tables are created or using "ALTER TABLE".

Joins

Hash Join Sort-Merge Join

Both Sort-Merge join and hash Join are supported in Vertica. Sort-Merge Join is faster in general and does not require too much memory. Hash Join requires more memory, but it is much faster if the inner table can fit in the memory.

Concurrency Control

Multi-version Concurrency Control (MVCC)

Vertica supports Multi-version Concurrency Control for data consistency. Apart from current status, previous status are also visible to transactions, Transaction isolations can be achieved here since there is no conflict between the read and write operations. A shared-nothing parallel processing architecture has been adopted in Vertica, which can prevent the overhead from locks.

Data Model

Column Family / Wide-Column

Columnar store is used in Vertica to improve the performance of sequential access, even if the performance of single record have to be degraded. Compared with row-oriented databases which scan the whole table, only few columns are retrieved for given query, which can improve throughput by reducing I/O operations.

Query Interface

SQL

Checkpoints

Blocking Fuzzy

In Vertica, each node maintains checkpoints and transaction logs separately. The synchronization duration can be tuned by users. For a single-node failure, it is recovered from other nodes. If all nodes face failures, the database is recovered to the earliest checkpoints where all nodes are good. No new transaction log will be appended, if a new checkpoint starts in Vertica.

Storage Architecture

Hybrid

Hybrid data store are supported in Vertica. Write Optimized Store(WOS) is about storing data in memory, which does not support compression and indexing. Read Optimized Store(ROS) is about storing data on disk, where data is sorted and segmented.

Stored Procedures

Supported

System Architecture

Shared-Everything

Storage Model

Decomposition Storage Model (Columnar)

Data is stored in Vertica in column format to improve the performance of read operations, since a lot of amount of disk I/O can be prevented.

Views

Materialized Views

Projection in Vertica is similar to materialized view. Multiple projections can be created on the same table if some optimizations have to be done for some specific queries.

Vertica Logo
Website

http://www.vertica.com/

Developer

Andrew Palmer and Michael Stonebraker

Country of Origin

US

Start Year

2005

Acquired By

HP

Project Type

Commercial

Written in

C++

Supported languages

C++, Java, Perl, Python, R

Derived From

PostgreSQL

Inspired By

C-Store

Operating Systems

Linux

Licenses

Proprietary

Wikipedia

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