PUBLIC – SAP April 24, 2024 Radim Benek, SAP Introduction to In-memory Column-based Databases 2© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC The information in this presentation is confidential and proprietary to SAP and may not be disclosed without the permission of SAP. Except for your obligation to protect confidential information, this presentation is not subject to your license agreement or any other service or subscription agreement with SAP. SAP has no obligation to pursue any course of business outlined in this presentation or any related document, or to develop or release any functionality mentioned therein. This presentation, or any related document and SAP's strategy and possible future developments, products and or platforms directions and functionality are all subject to change and may be changed by SAP at any time for any reason without notice. The information in this presentation is not a commitment, promise or legal obligation to deliver any material, code or functionality. This presentation is provided without a warranty of any kind, either express or implied, including but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. This presentation is for informational purposes and may not be incorporated into a contract. SAP assumes no responsibility for errors or omissions in this presentation, except if such damages were caused by SAP’s intentional or gross negligence. All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from expectations. Readers are cautioned not to place undue reliance on these forward-looking statements, which speak only as of their dates, and they should not be relied upon in making purchasing decisions. Disclaimer 4© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Achievements of column store in-memory database: ▪ 150 sensors ▪ 2GB of data in one lap ▪ 3TB in a single race ▪ „SAP HANA enables McLaren existing systems to process these data 14 000 times faster then before.“ ▪ „Analysis that previously took almost a week to process, can be completed in a span of a pit stop.“ Introduction 6© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Development Expert, AIS Financials Brno SAP Labs Czech Republic ▪ SAP CR, spol. s r.o. Holandská 2/4 ▪ 639 00 Brno Radim Benek 7© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP Labs Czech Republic Development Localization Maintenance 8© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP HANA Cloud SAP Data Warehouse Cloud SAP Data Intelligence Cloud Self-Service Modelling & Preparation Data Spaces Business Semantics Data Marketplace Data Cataloging Data Quality & Transformation Orchestration & Processing Multi-tier Data Storage Smart Multi-Model Data Federation Replication App Development SAP Analytics Cloud Business Intelligence Enterprise Planning Augmented Analytics Analytics & Planning Business Semantics & Data Warehousing Database SAP Data & Analytics Capabilities Today Covering the entire lifecycle of data-to-value 9© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP HANA CLOUD 10© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Introduction ▪ Changes in Hardware ▪ Data Layout ▪ Dictionary Encoding ▪ Compression ▪ Delete, Insert, Update ▪ Tuple Reconstruction ▪ Scan Performance ▪ Demo Agenda Changes in Hardware 12© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Multi-core CPU introduction (32 cores/CPU) ▪ Multi-CPU boards massively used (8 CPUs/board) ▪ CPU cache grows ▪ RAM capacity grows ▪ RAM speed grows ▪ New interfaces (QPI, HT) → Enormous bandwidth and performance potential HDDs still dominated overall performance and design mindset Changes in Hardware Evolution 13© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Changes in Hardware Latency Overview 14© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Changes in Hardware Latency Overview Data Layout 16© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Data Layout Database Data Layouts ▪ What are the most common layouts of relational data in main memory? – For each layout we present the pros and cons of their approach 17© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Data Layout Row Data Layouts ▪ Data is stored tuple-wise ▪ Leverage co-location of attributes for a single tuple ▪ Low cost for reconstruction, but higher cost for sequential scan of a single attribute 18© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Data Layout Columnar Data Layouts ▪ Data is stored attribute-wise ▪ Leverage sequential scan speed in main memory ▪ Tuple reconstruction is expensive Dictionary Encoding 20© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ 8 billion humans ▪ Attributes: – first name – last name – gender – country – city – birthday → 200 byte per tuple ▪ Each attribute is dictionary encoded Dictionary Encoding Example 21© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Main memory access is the new bottleneck ▪ Compression reduces number of I/O operations to main memory ▪ Operation directly on compressed data ▪ Offsetting with bit-encoded fixed-length data types ▪ Based on limited value domain Dictionary Encoding Motivation 22© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Dictionary Encoding Sample Data Table: world_population 23© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ A column is split into a dictionary and an attribute vector ▪ Dictionary stores all distinct values with implicit valueID ▪ Attribute vector stores valueIDs for all entries in the column ▪ Position is stored implicitly ▪ Enables offsetting with bit-encoded fixed-length data types Dictionary Encoding Dictionary Encoding a Column 24© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Search for Attribute Value (i.e. retrieve all persons with fname “Mary”) 1. Search valueIDs for requested value (“Mary”) 2. Scan Attribute Vector for valueID (“24”) 3. Replace valueIDs in result with corresponding dictionary value Dictionary Encoding Querying Data using Dictionaries 25© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Dictionary entries are sorted either by their numeric value or lexicographically – Dictionary lookup complexity: O(log(n)) instead of O(n) ▪ Dictionary entries can be compressed to reduce the amount of required storage Dictionary Encoding Sorted Dictionary 26© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Dictionary Encoding Data Size Examples Column Cardi-nality Bits Needed Item Size Plain Size Size with Dictionary (Dictionary + Column) Compression Factor First names 5 millions 23 bit 50 Byte 400GB 250MB + 23GB ≈ 17 Last names 8 millions 23 bit 50 Byte 400GB 400MB + 23GB ≈ 17 Gender 2 1 bit 1 Byte 8GB 2b + 1GB ≈ 8 City 1 million 20 bit 50 Byte 400GB 50MB + 20GB ≈ 20 Country 200 8 bit 47 Byte 376GB 9.4kB + 8GB ≈47 Birthday 40000 16 bit 2 Byte 16GB 80kB + 16GB ≈ 1 Totals 200 Byte ≈ 1.6TB ≈ 92GB ≈ 17 Compression 28© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Heavy weight vs. light weight techniques ▪ Focus on light weight techniques for databases ▪ For attribute vector – Prefix encoding – Run length encoding – Cluster encoding – Sparse encoding – Indirect encoding ▪ For dictionary – Delta compression for strings – Other data types are stored as sorted arrays Compression Compression Techniques 29© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ 200 countries = 8 bit ▪ 1 million cities = 20 bit ▪ 100 different 2nd nationalities = 7 bit ▪ 5 million first names = 23 bit Compression Example Table 30© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Used if the column starts with a long sequence of the same value ▪ One predominant value in a column and the remaining values are mostly unique or have low redundancy Example: country column, table sorted by population of country Compression Prefix Encoding 31© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Replace sequence of the same value with a single instance of the value and a. Its number of occurrences b. Its start position (shown below) ▪ Variant b) speeds up access compared to a) Compression Run Length Encoding Direct access! 32© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Attribute vector is partitioned into N blocks of fixed size (typically 1024) ▪ If a cluster contains only a single value, it is replaced by a single occurrence of this value ▪ A bit vector of length N indicates which clusters were replaced by a single value ▪ Example: city column, table sorted by country, city – Cluster size: 1024 elements →7.8 mio blocks – Worst case assumption: 1 uncompressible block per city – Uncompressible blocks: 1 mio × 1024 × 20 bit 2441 MB – Compressible blocks: (7.8 - 1) mio × 20 bit + 16 MB – Bit vector: 7.8 million × 1 bit + 1 MB ≈2.4 GB Compression Cluster Encoding No direct access! Compute position via bit vector. 33© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Remove the value v that appears most often ▪ A bit vector indicates at which positions v was removed from the original sequence Example: 2nd nationality column, regardless of sorting order of table Compression Sparse Encoding 34© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Sequence is partitioned into N blocks of size S (typically 1024) ▪ If a block contains only a few distinct values an additional dictionary is used to encode the values in that block ▪ Additionally: links to the new dictionaries + blocks that have a dictionary Example: fname column, table sorted by country Direct access! Compression Indirect Encoding 35© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ For sorted string values ▪ Block-‐wise compression (typically 16 strings per block) Compression Delta Encoding for Dictionary Dictionary: 1 million cities à 49 byte ≈ 46.7 MB 36© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Most compression techniques require sorted sets, but a table can only be sorted by one column or cascading ▪ No direct access to rows in some cases, but offset has to be computed Compression Keep in Mind Tuple Reconstruction 38© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Tuple Reconstruction Accessing a record in a row store ▪ All attributes are stored consecutively ▪ 200 byte → 4 cache accesses à 64 byte → 256 byte ▪ Read with 4MB/ms/core ▪ → ≈ 0.064 μs with 1 core Data loaded and used Data loaded but not used 39© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Tuple Reconstruction Virtual record IDs ▪ All attributes are stored in separate columns ▪ Implicit record Ids are used to reconstruct rows 40© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Tuple Reconstruction Virtual record IDs ▪ 1 cache access for each attribute ▪ 6 cache accesses à 64 byte → 384 byte ▪ Read with 4MB/ms/core ▪ → ≈ 0.096 μs with 1 core Data loaded and used Data loaded but not used Scan Performance 42© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance ▪ 8 billion humans ▪ Attributes: – first name – last name – gender – country – city – birthday → 200 byte per tuple ▪ Question: How many women, how many men? ▪ Assumed scan speed: 4MB/ms/core 43© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance Row Store – Layout 44© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance Row Store – Layout ▪ Table size: 8 billion tuples × 200 bytes per tuple ≈ 1.6 TB 45© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance ▪ Table size: 8 billion tuples × 200 bytes per tuple ≈ 1.6 TB ▪ Scan through all rows with 4MB/ms/core → 400 s with 1 core Row Store – Full Table Scan Data loaded and used Data loaded but not used 46© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance Row Store – Stride Access „Gender“ Data loaded and used Data loaded but not used ▪ 8 billion cache accesses à 64 byte ≈ 512 GB ▪ Read with 4MB/ms/core → 128 s with 1 core 47© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance Column Store – Full Column Scan „Gender“ Data loaded and used Data loaded but not used ▪ Size of attribute vector “Gender”: 8 billion tuples × 1 bit per tuple ≈ 1 GB ▪ Scan through column with 4MB/ms/core →0.25 s with 1 core 48© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Scan Performance How many women, how many men? Row Store Column Store Full table scan Stride access Time in seconds 400 128 0.25 Delete, Insert, Update DELETE 51© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Physical DELETE – Removed tuple is removed from database and you cannot access it anymore ▪ Logical DELETE – Validity of this tuple is set to non-valid and this tuple can be accessed in historic queries or reporting ▪ Operation DELETE is very expensive to perform ▪ SQL-Syntax: DELETE FROM table_name WHERE attribute_name = some_value Database Operations DELETE 52© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Remove Jane Doe from the database table Database Operations DELETE - example 53© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Remove Jane Doe from the database table Database Operations DELETE - example 54© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Remove Jane Doe from the database table Database Operations DELETE - example 55© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Remove Jane Doe from the database table Database Operations DELETE - example INSERT 57© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ INSERT without new dictionary entry – New entry is already in dictionary, new valueID is appended to the attribute vector ▪ INSERT with new dictionary entry – New entry is added to the dictionary, dictionary is sorted, valueIDs are updated in attribute vector, new valueID is appended to the attribute vector ▪ SQL-Syntax: INSERT INTO table_name VALUES (value1,value2) Database Operations INSERT 58© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (Without New Dictionary Entry) AV – Attribute Vector D – Dictionary 59© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (Without New Dictionary Entry) 1. Look-up on dictionary → entry found AV – Attribute Vector D – Dictionary 60© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (Without New Dictionary Entry) 1. Look-up on dictionary → entry found 2. Append valueID to attribute vector AV – Attribute Vector D – Dictionary 61© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) AV – Attribute Vector D – Dictionary 62© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found AV – Attribute Vector D – Dictionary 63© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary AV – Attribute Vector D – Dictionary 64© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary 3. Append valueID to attribute vector AV – Attribute Vector D – Dictionary 65© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) AV – Attribute Vector D – Dictionary 66© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found AV – Attribute Vector D – Dictionary 67© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary AV – Attribute Vector D – Dictionary 68© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary 3. Sort Dictionary AV – Attribute Vector D – Dictionary 69© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary 3. Sort Dictionary 4. Change valueIDs in attribute vector AV – Attribute Vector D – Dictionary 70© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC INSERT INTO world_population VALUES (Karen, Schulze, f, GER, Rostock, 06-20-2014) Database Operations INSERT – example (With New Dictionary Entry) 1. Look-up on dictionary → no entry found 2. Append new value to dictionary 3. Sort Dictionary 4. Change valueIDs in attribute vector 5. Append new valueID to attribute vector AV – Attribute Vector D – Dictionary UPDATE 72© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Combination of DELETE and INSERT operation ▪ SQL-Syntax: UPDATE world_population SET city = „Bamberg“ WHERE fname = „Hanna“ AND lname = „Schulze“ Database Operations UPDATE 73© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC UPDATE world_population SET city = „Bamberg“ WHERE lname = „Schulze“ Database Operations UPDATE – example 1. Look-up „Bamberg“ in dictionary → entry not found 74© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC UPDATE world_population SET city = „Bamberg“ WHERE lname = „Schulze“ Database Operations UPDATE – example 1. Look-up „Bamberg“ in dictionary → entry not found 2. Append new value „Bamberg“ to dictionary 75© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC UPDATE world_population SET city = „Bamberg“ WHERE lname = „Schulze“ Database Operations UPDATE – example 1. Look-up „Bamberg“ in dictionary → entry not found 2. Append new value „Bamberg“ to dictionary 3. Reorganize dictionary 76© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC UPDATE world_population SET city = „Bamberg“ WHERE lname = „Schulze“ Database Operations UPDATE – example 1. Look-up „Bamberg“ in dictionary → entry not found 2. Append new value „Bamberg“ to dictionary 3. Reorganize dictionary 4. Replace old values with new values in attribute vector (expensive) Demo 78© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs ▪ SELECT rbukrs, ryear, SUM( hsl ) AS hsl, COUNT (*) AS c FROM "ACDOCA" WHERE rrcty = '0’ AND ryear BETWEEN 2017 AND 2018 AND poper BETWEEN 000 AND 012 AND rldnr = '0L’ AND (bstat = '' OR bstat = 'L' OR bstat = 'U' OR bstat = 'J' OR bstat = 'C') GROUP BY rbukrs, ryear ORDER BY c DESC; Demo Performance 79© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB Table Store Rows Size Time 80© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s Table Store Rows Size Time 81© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s ACDOCA_R Row 110 million 240 GB Table Store Rows Size Time 82© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s ACDOCA_R Row 110 million 240 GB 22,5 s Table Store Rows Size Time 83© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s ACDOCA_R Row 110 million 240 GB 22,5 s ACDOCA Column 19,5 billion 1,3 TB Table Store Rows Size Time 84© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s ACDOCA_R Row 110 million 240 GB 22,5 s ACDOCA Column 19,5 billion 1,3 TB 139 s Table Store Rows Size Time 85© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ System QM0 – 48 TB / 1100 CPUs ▪ System HANA Express edition (VM) – 16 GB / 4 CPUs Demo Performance Table Store Rows Size Time ACDOCA_C Column 110 million 5 GB 1,8 s ACDOCA_R Row 110 million 240 GB 22,5 s ACDOCA Column 19,5 billion 1,3 TB 139 s ACDOCA_sm Column 5 million 140 MB 0,5 s CDHR Column 31 million 1,3 GB 12,4 s CDPOS Column 730 million 44 GB Table Store Rows Size Time ACDOCA_sm Column 5 million 140 MB 0,9 s 86© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Demo Columns compression 87© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP HANA, express edition is a database and application development platform. You can run it for free (up to 32GB of RAM) on your laptop and start building new apps. SAP HANA, Express Edition 88© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP HANA Cloud trial is a trial version of HANA DB. You can run it for free with following resources: 32GB of RAM, 120GB Storage, 2vCPU. SAP HANA Cloud 89© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC SAP HANA Cloud Resources 91© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC ▪ Plattner, Hasso. "In-Memory Data Management 2015" OpenHPI. Hasso-Plattner-Institute, 07 Sept. 2015. Web. 13 July 2017. https://open.hpi.de/courses/imdb2017 ▪ SAP HANA Cloud https://developers.sap.com/topics/hana.html ▪ SAP HANA Cloud Trial https://www.sap.com/products/technology-platform/hana/cloud-trial.html ▪ SAP HANA trial: https://www.sap.com/products/hana/express-trial.html ▪ SAP HANA Academy Videos: https://www.youtube.com/user/saphanaacademy ▪ SAP Help Portal - SAP HANA Platform: https://help.sap.com/viewer/product/SAP_HANA_PLATFORM/ Resources 92© 2023 SAP SE or an SAP affiliate company. All rights reserved. | PUBLIC Appendix Thank you. Contact information: © 2023 SAP SE or an SAP affiliate company. All rights reserved. See Legal Notice on www.sap.com/legal-notice for use terms, disclaimers, disclosures, or restrictions related to SAP Materials for general audiences. ▪ Radim Benek ▪ Development Expert, AIS Financials Brno, SAP Labs Czech Republic ▪ SAP CR, spol. s r. o. Holandská 2/4 ▪ 639 00 Brno ▪ radim.benek@sap.com ▪ linkedin.com/in/radimbenek/ ▪ Positions at SAP Labs Czech Republic in Brno can be found here.