Actian Vector is a commercial main-memory RDBMS targeting analytical workload and decision support application. It adopts columnar storage model and vectorized processing model. To speed up analytical query exectuion, Vector makes use of various technologies including x86 SIMD execution, in-cache execution, parallel execution, data compression, storage indexes.[04][05]
- Developer
- Country of Origin
- NL
- Former Names
- Vectorwise, MonetDB/X100
- Acquired By
- Project Type
- Commercial
- Derived From
- MonetDB
- License
- Proprietary
Actian Vector is available on Windows, Linux, Hadoop, AWS, and Microsoft Azure platforms.
Actian Vector is a commercial main-memory RDBMS targeting analytical workload and decision support application. It adopts columnar storage model and vectorized processing model. To speed up analytical query exectuion, Vector makes use of various technologies including x86 SIMD execution, in-cache execution, parallel execution, data compression, storage indexes.
Actian Vector is available on Windows, Linux, Hadoop, AWS, and Microsoft Azure platforms.[04][05]
History[03][06]
The origin of Vector dates back to the MonetDB project at CWI (Centrum Wiskunde & Informatica) Research Institute in Netherlands. MonetDB is a columnar in-memory RDBMS that adopts column-at-a-time processing model and targets analytical workload. The "MonetDB/X100" project started in 2005 further improves MonetDB with vectorized processing model and other technologies. In 2008, X100 project parted from CWI as a foundation for a commercial RDBMS product in Vectorwise BV company. Vectorwise BV cooperated with Ingres Corporation (renamed as Actian Corporation in 2011) to integrate X100 with Ingres front-end. The first version of Vectorwise DBMS was released in June 2010. In 2011, Vectorwise technology was acquired by Actian Corporation. In 2014, Vectorwise was rebranded as Actian Vector.
Checkpoints[07]
Checkpoints can be taken either online or offline. For online checkpoints, Vector uses blocking consistent checkpoints. The system waits for all running transactions to finish before taking a new checkpoint. Any new transaction is blocked until the checkpoint is completed.
Compression[04][08]
Vector compresses each column on a per-page basis for better compression performance. Thus different pages of the same column may be compressed using different algorithms.
For the page-level naïve compression, Vector uses LZ4 to compress string values.
Vector adopts late decompression approach. The compressed columns in the memory-based disk buffer are only are decompressed only when they are needed for query processing.
Concurrency Control[09][10]
Vector uses multi-version optimistic concurrency control to support snapshot isolation. With optimistic concurrency control, records are not locked for reads/writes, and conflicts are detected at transaction commit time. Optimistic concurrency control improves the performance of Vector because record updates and read-only analytical transactions do not block each other.
Foreign Keys[11]
Vector supports foreign keys. User can specify foreign keys for a relation after primary key is assigned.
Hardware Acceleration[12]
Vector makes use of SIMD operations on modern CPUs to accelerate query processing.
Indexes[13]
Vector supports clustered index and secondary index. CREATE INDEX statement creates a clustered index where data records are sorted according to the indexed key. Only one clustered index is allowed for each table. CREATE INDEX with option WITH STRUCTURE=VECTORWISE_SI creates a secondary index on one or more attributes. One or more secondary indices are allowed for each table. Vector stores secondary index only in memory, so all secondary indices are rebuilt at bootstrap time.
Isolation Levels[14][15]
Vector only supports snapshot isolation. In snapshot isolation, a transaction observes a consistent state of the database at starting timestamp.
Storage Model[04][18]
Vector uses an adaptive storage model based on PAX partitions. By default, Vector stores tables in columnar model. Nullable attribute has a boolean type column which is stored together with the attribute column. However, if there exists an index where the key spans multiple attributes, these columns are grouped together and stored in the same block. For small tables, user can instruct Vector to store data in n-ary model to reduce wasted space.
Citations
21 sources- Actian Ingres | Ingres Transactional Database actian.com
- Actian Vector actian.com
- Actian Vector - Wikipedia wikipedia.org
- https://www.actian.com/wp-content/uploads/2024/10/Actian-Vector-Datasheet.pdf actian.com
- Actian Analytics Engine (Formerly Vector) | Columnar Database actian.com
- https://sigmodrecord.org/publications/sigmodRecord/1109/pdfs/08.industry.inkster.pdf sigmodrecord.org
- Actian Vector actian.com
- Actian Vector actian.com
- Actian Vector actian.com
- Actian Vector actian.com
- Actian Director actian.com
- Actian Vector actian.com
- Actian Vector actian.com
- Actian Vector actian.com
- Actian Vector actian.com
- https://docs.actian.com/vector/4.2/index.html#page/User/Full_Sort_Merge_Node.htm# actian.com
- https://docs.actian.com/vector/4.2/index.html#page/User/Hash_Join_Node.htm# actian.com
- http://dare.ubvu.vu.nl/bitstream/handle/1871/39785/19953B.pdf?sequence=3 vu.nl
- https://15721.courses.cs.cmu.edu/spring2019/papers/15-execution/boncz-cidr2005.pdf cmu.edu
- Actian Analytics Engine (Formerly Vector) | Columnar Database actian.com
- CREATE VIEW Statement of Ingres VectorWise actian.com