In Jan'2013, SAP has announced a new version of its Business Suite that offers blindingly fast database reporting via HANA with the goal of three-second response times to transactional queries.
"It's much better analytics, between ten and ten thousand times faster. I'm not bragging here that we achieved up to 250,000 times faster because nobody believes us and the press call it hype," said SAP co-founder Hasso Plattner at a press conference in Palo Alto, California.
With the new Business Suite, load times have been cut by a factor of 20 and batch programming eliminated completely, he explained, and mathematical functions have been slimmed down in the quest for faster updates, with a goal of making three second response times the norm.
But if we look into within the database, why & how it is fast?
- Exploitation of current hardware developments
- Main Memory is the New Disk
- Non-Uniform Memory Access (NUMA)
- Multi-core processor parallelism
- Efficient communication between database layer with the application layer
- Pushing more application semantics into data management layer
- Data compression achieves a reduction in disk space
- Different compression techniques, Light-Weight/Heavy-Weight
- Compression-aware query execution
- Data-Dependent Optimization
SAP HANA Database supports Row Store and Column Store. Some of the HANA Administrative tables in row store (e.g. SYS schema and tables from Statistics Server) whereas other Administrative tables in column store(e.g. _SYS_BI, _SYS_BIC, _SYS_REPO schema, etc.). Transactional data stored in the physical tables of SAP HANA Database used for Analytical purposes. HANA Analytical Data Modeling is only possible for Columnar Tables; i.e, Information Modeler only works with column storage tables. Replication Server(SLT) and Data Services create tables in column store by default.
If transaction data is stored in a column-based table, then it enables
- fast on-the-fly aggregations,
- ad-hoc reporting.
How data stored in column format? How it differs from row format?
Here, the below diagram will help you to understand very easily.
In lab, I have tried out the following:
- Comparison between ROW store and COLUMN store table [but not for ECC on HANA, this is purely a HANA Database in SAP HANA Appliance]
I have created TWO tables in HANA database.
First Table, CDHDR_ROW : Table type in Row Format (See the Symbol)
Second Table, CDHDR_COLUMN : Table type in Column Format (See the Symbol)
Filled both the tables with same data/records.
No of records : 8,413,932
After data load into CDHDR_ROW and CDHDR_COLUMN from flat file, within HANA result shows (I didn’t do anything extra):
Now you can see, ROW stored CDHDR_ROW table occupies how much memory & disk-size ?
One thing, ROW store table automatically loaded into memory when HANA starts-up. But ROW store table can not be unloaded from memory.
Whereas, columnar table CDHDR_COLUMN taking very less memory & disk-size.
Again, later I have converted ROW store table CDHDR_ROW into COLUMNAR table and record the output:
Now, both tables are in column store. See the symbol.
Now you can see, it occupies less memory and disk-size compared to its ROW based table state.