SAP S/4HANA
SAP BW/4HANA
SAP ERP
SAP CRM
SAP SCM
SAP SRM
SAP PLM
From SAP ECC to SAP S/4HANA Server
Most traditional enterprise relational database tables are based on row storage, as this is regarded as the optimal storage design for an online transactional processing (OLTP) application. An OLTP application requires fast, record-level updates where all columns in the record are usually needed for processing.
SAP HANA fully supports OLTP applications using row storage but also supports columns based storage which is the optimal storage design for online analytical processing (OLAP) applications. OLAP applications typically work with high-volume tables that need to be quickly aggregated by ad-hoc queries.
The database of SAP HANA supports both row tables and column tables in the same database. Modern applications, such as SAP S/4HANA, combine transactions and analytics so SAP HANA, with its row and columns storage, is the ideal database on which to build such applications.
Column tables are efficient for analytical applications where requests for selections of data are not predictable. Queries from analytical applications that are sent to the database often require only a subset of the overall data in the table. Usually only a few columns are required from the table and also only a limited number of entries from the columns are needed. With column tables, only the required columns are loaded to memory, so you avoid filling up memory with columns that will never be used. Also, the data is arranged efficiently with all values of a column appearing one after another. This continuous sequencing of the column values is preferred by the CPU, which is able to scan the values efficiently without having to skip over unwanted values.
With column store, SAP HANA scans columns of data so quickly that additional indexes, although supported, are usually not required. This helps to reduce the complexity by avoiding the need to constantly create, drop and rebuilding separate indexes.
It is easy to alter column tables, for example, by adding extra column or removing columns, without dropping and reloading data.
Column tables are optimized for parallel processing, as each CPU core is able to work on a separate column.
The downside to column tables is the cost of reconstructing complete records from the separately stored columns. Reconstruction typically occurs in transactional applications that requires the complete record for updating, copying, or deletion. Although it is possible to build transactional applications on column tables, you might see better performance if you were to use row-based tables where all the columns in a record are always held together and can be read in one step.
But more often these days, applications combine transactional and analytical elements. In this case, you must decide which is the best storage method to use. You cannot have a table that is both row-based and column-based.