Vertica hybrid storage model

Vertica implements the storage model shown in the illustration below. This model is the same on each Vertica node. Write Optimized Store (WOS) is a memory-resident data structure for storing INSERT, UPDATE, DELETE, and COPY (without DIRECT hint) actions. Like the Read Optimized Store (ROS), the WOS is arranged by projection. To support very fast data load speeds, the WOS stores records without sorting, data compression, or indexing. The WOS organizes data by epoch and holds uncommitted transaction data. The Tuple Mover (TM) is the Vertica database optimizer component that moves data from memory (WOS) to disk (ROS). The TM also combines small ROS containers into larger ones, and purges deleted data. The Tuple Mover runs in the background. The Read Optimized Store (ROS) is a highly optimized, read-oriented, disk storage structure, organized by projection. The ROS makes heavy use of compression and indexing. You can use the COPY...DIRECT and INSERT (with /*+direct*/ hint) statements to load data directly into the ROS. Write Optimized Store (WOS) Write Optimized Store (WOS) is a memory-resident data structure for storing INSERT, UPDATE, DELETE, and COPY (without DIRECT hint) actions. Like the Read Optimized Store (ROS), the WOS is arranged by projection. To support very fast data load speeds, the WOS stores records without sorting, data compression, or indexing. The WOS organizes data by epoch and holds uncommitted transaction data. ROS (Read Optimized Store) The Read Optimized Store (ROS) is a highly optimized, read-oriented, disk storage structure, organized by projection. The ROS makes heavy use of compression and indexing. You can use the COPY...DIRECT and INSERT (with /*+direct*/ hint) statements to load data directly into the ROS. ROS container A ROS (Read Optimized Store) container is a set of rows stored in a particular group of files. ROS containers are created by operations like Moveout or COPY DIRECT, and can be observed in the STORAGE_CONTAINERS system table. The ROS container layout can differ across nodes due to data variance. Segmentation can deliver more rows to one node than another. Two loads could fit in the WOS on one node and spill on another. Tuple Mover (TM) The Tuple Mover (TM) is the Vertica database optimizer component that moves data from memory (WOS) to disk (ROS). The TM also combines small ROS containers into larger ones, and purges deleted data. The Tuple Mover runs in the background. The Tuple Mover performs two operations:

  • Moveout
  • Moveout operation move data out of the memory (WOS) into ROS containers. All ?istorical?data from the WOS is flushed into ROS continers.
  • Mergeout
  • A mergeout is the process of consolidating ROS containers and purging deleted records. Over time, the number of ROS containers increases to a degree that it becomes necessary to merge some of them in order to avoid performance degradation. At that point, the Tuple Mover performs an automatic mergeout, which combines two or more ROS containers into a single container. This process can be thought of as "defragmenting" the ROS. The tuple mover runs independently on each node, ensuring that storage is managed appropriately even in the event of data skew.