Vertica is a distributed infrastructure-independent analytics platform. It can be deployed on various platforms like AWS,GCP,Azure...[02]
- Website
- http://www.vertica.com[01]
- Developers
- Country of Origin
- US
- Start Year
- 2005 [02]
- Acquired By
- Project Type
- Commercial
- Written in
- C++
- Derived From
- PostgreSQL
- Inspired By
- C-Store
- Operating System
- Linux
- License
- PostgreSQL License
It is designed to support a high OLAP performance compared with others. High availability and good scalability can be achieved as well. Also, it provides good integration with Hadoop, Spark, Kafka, which makes user select where they want to analyze their data freely.
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 high OLAP performance compared with others. High availability and good scalability can be achieved as well. Also, it provides good integration with Hadoop, Spark, Kafka, which makes user select where they want to analyze their data freely.[02]
History[02]
Vetica was founded by Michael Stonebraker and Andrew Palmer in 2015. It is derived from C-Store, which is a prototype developed by MIT, Brown, and few other universities. It was acquired by Hewlett Packard in 2011 and joined Micro Focus in 2017 due to the merger between Micro Focus and HP.
Checkpoints[03][04]
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 from other nodes. If all nodes fail, it can be recovered to the earliest checkpoints when all nodes are good. new transaction log cannot be appended, if a new checkpoint starts.
Compression[05]
Both Run-Length Encoding and Delta encoding are used in Vertica. RLE encoding is only used when the number of repetition 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.
Concurrency Control[06][07]
Vertica supports MVCC to achieve data consistency. Both current and previous status are stored and visible to transactions. Transaction isolations can be achieved since no conflict between the read and write operations exist. A shared-nothing MPP architecture is used in Vertica, which can prevent the overheads caused by locks.
Data Model[08]
Columnar store is used in Vertica to improve the performance of sequential access by sacrificing the performance of single record. Compared with row-oriented databases which scan the whole table, only few columns are retrieved based on given queries in Vertica, which can improve throughput by reducing disk I/O costs.
Foreign Keys[09]
Vertica allows users to use foreign key constraints. Foreign keys should be defined when tables are created or using "ALTER TABLE".
Isolation Levels[10]
Read Committed and Serializable are used in Vertica. Read Committed is the default isolation level. Read Uncommitted and Repeatable Read are treated automatically as Read Committed and Serializable respectively.
Joins[11]
Both merge join and hash join are supported in Vertica. Merge Join is faster in general and requires less memory, but pre-sorted data is required.Hash join requires more memory, but it is faster if the inner table can fit in the memory.
Storage Architecture[12]
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.
Storage Model[12]
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.
Storage Organization[13]
Containers are used in Vertica to store data. And WOS (Write Optimized Storage) and ROS (Read Optimized Storage) are two existing types.
System Architecture[08][15]
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 between nodes. Moreover, massively Parallel Processing (MPP) architecture is used in Vertica to improve the throughput of joins requiring multiple machines together.
Views[04]
The projections in Vertica are similar to materialized view in other databases. Projections can be created on the same table so that some optimizations such as pre-storing required data can be done for some specific queries.
Citations
15 sources- http://www.vertica.com vertica.com
- Vertica - Wikipedia wikipedia.org
- Troubleshooting Tips for the Vertica Catalog vertica.com
- https://blogs.opentext.com opentext.com
- Encoding Types vertica.com
- https://db-engines.com/en/system/MemSQL;Vertica db-engines.com
- https://www.vertica.com/blog/concurrency-workload-management vertica.com
- Advanced Analytics for Data Warehouse & Data Lakehouse vertica.com
- Foreign Key Constraints vertica.com
- Transactions vertica.com
- Redesigning Projections for Query Optimization vertica.com
- Vertica Cluster Architecture vertica.com
- http://www.aodba.com/understanding-vertica-storage-mechanism/ aodba.com
- sql - How to create external procedures in Vertica - Stack Overflow stackoverflow.com
- http://www.aodba.com/vertica-architecture-type/ aodba.com