Академический Документы
Профессиональный Документы
Культура Документы
TCS Confidential
TCS Confidential
Ultimatix – SAP HANA Implementation Technical Review
0.1 30.Jan.2017 Mayank Mishra Draft Initial version of Tech Review Report
0.2 9.Feb.2017 Dhunjishaw Sunavala Draft Comments from sizing are included
TCS Confidential 2
Ultimatix – SAP HANA Implementation Technical Review
Table of Content
1. Purpose of the document ............................................................................................................................................................ 5
3. Review Pre-requisites.................................................................................................................................................................. 5
8. Revised Sizing............................................................................................................................................................................ 23
9. Conclusion ................................................................................................................................................................................ 24
LIST OF ABBREVIATIONS
TCS Confidential 3
Ultimatix – SAP HANA Implementation Technical Review
This table provides the meanings for acronyms, abbreviations, and terms as used in this document. These
definitions establish the common terminology to be understood and used by TCS in this document.
AP Analytical Privileges
BO Business Object
GL General Ledger
PO Purchase Order
TCS Confidential 4
Ultimatix – SAP HANA Implementation Technical Review
3. Review Pre-requisites
Current (deployed) HANA Landscape Architecture details to be made available. (A very primitive diagram
was shared with us and later details of infrastructure were provided)
Details of HANA Sizing when instance was set-up. (Not provided date as it does not exist)
Details Loads/replications in HANA with classification of Full/Incremental. Loads schedule details and
how they are aligned with non-critical hours. (Not provided till date as it does not exist)
Alternative landscape where review comments can be incorporate by Ultimatix development team
and tested to see the benefits. (Not provided till date)
HANA Admin user with only Read access to everything specially _SYS/_SYS_STATISTICS schemas. (Not
provided till date due to security reasons)
Dedicated team members from Ultimatix HANA Admin, Development and functional areas working
with us in the review process. (Members from development, review and functional team were made available
as per request)
Details (Overall Experience, Experience in HANA, Core skill set of HANA) of HANA Development Team.
(Not provided till date)
4. Review Activities
Carry out a fresh sizing exercise considering current data growth.
Technical review of Cost report Model on Source structure, Data types, Data granularity, master data,
Loads, Joins, Projections, filters, input variables, security etc.
Incorporate review finding into existing model/loads estimate the improvement achieved.
Extrapolate the value for other models and calculate cumulative improvements If done for all models.
Formulate checklist, guidelines, and best practices for the project and educate team on same.
TCS Confidential 5
Ultimatix – SAP HANA Implementation Technical Review
“We classify current system as unstable, prone to frequent slowness, with extremely high CPU
utilization and memory consumption.”
Parameter Value
Hardware Manufacturer HP
Product SAP-HANA
Version 1.00.097.01.1436865239
HANA contains total 406 GB of application data from source systems and materialized locally. Application data
around 290-330 GB found to be loaded in memory whenever we extracted statistics during review. Application
data which came from various sources is about 202 GB and surprisingly same amount of data (204GB) is
duplicated/materialized in HANA after performing database joins and then storing it separately. We can
conclude that actual application data in 900 GB HANA server is 202 GB. This 202 GB data would come down to
150 GB after we perform long pending housekeeping exercise.
TCS Confidential 6
Ultimatix – SAP HANA Implementation Technical Review
CPU utilization and memory consumption is exceptionally HIGH. During month-end HANA is unstable because
no resources are left for processing. CPUs and Memory peaks are very often in production.
There are 2 lacs+ unloads happened in production during Jan-2017 month i.e. 6000-7000 unloads every day.
Number of unloads happening are exceptionally high and it brings instability and affect performance of system
negatively. It is clear that FACT_FINANCE_COST_ARCHIVE (size 34GB) under COSTING schema is the real
problem. We have detailed the solution to address this in section 6.10.1/2.
TCS Confidential 7
Ultimatix – SAP HANA Implementation Technical Review
We have 5000+ expensive statements reported in Jan, 2017 month. In below representation we have highlighted
the procedures which are repeat offenders. Team has to carry out analysis from SQL quries appearing frequently
on expensive statements.
There are many expensive statements with costly operations such as rtrim(), ltrim(), substring(), concat().
Ultimatix team has not yet provided any explanation on why these operations are performed.
TCS Confidential 8
Ultimatix – SAP HANA Implementation Technical Review
Recommendation: During the audit it was observed that providing these data sheets is the major part of the
requirement and development done in HANA Ultimatix development. 80%-90% of user actions both operational
and analytical are done outside system after getting this data dump. We strongly recommend to initiate a
separate thread to get real requirement from business into the system and reduce data sheets creation/
exchange.
Recommendation: Team should work on refining their reporting requirements for both operational and
analytical purposes. It would result into breaking existing cost sheets into multiple operational reports.
Recommendation: Review team’s hierarchy must not overlap with development team at any cost. Otherwise
it would be a faulty & biased setup. First level of code review should be done with in the development team
preferably by senior developer after that it should be sent to review team. After implementing this if best
TCS Confidential 9
Ultimatix – SAP HANA Implementation Technical Review
practices are not followed then review team should escalate the issues. Also management should look at
adequately staffing review team (Current ratio 1::30 as informed).
Recommendation: Development should be deployed into production only after obtaining clearance
from review team.
Recommendation: This is to be dealt with utmost importance. Once admin team shares the statistics,
development team must analyze them and share the root cause analysis with admin team. Development team
must commit to dead line to fix these issues. These items must be to be followed up and included in reporting
to higher management. Management must setup a framework to address these issues.
Recommendation: While creating a model, there should not be any exception in following the best practices.
Provisional approval must not be given to such cases and development team must follow their own checklist. It
should be responsibility of development team to ensure adherence to best practices. Owner of the checklist
should enhance it based on recommendations in section 6.10.
TCS Confidential 10
Ultimatix – SAP HANA Implementation Technical Review
Materialization of transaction table with master data also leads to inconsistency. It could happen that master
data has gone through changes over a period. If we view materialize data for longer period we would see
multiple rows appearing for the same master data. This in turn would lead to inconsistency and wrong reporting.
Recommendation: In conjunction with section 6.10.1, team should do away with materialization. After we
have a clear picture on real user requirement, approach should be to utilize HANA’s ability to perform complex
join on the fly. This could only happen when requirements are not about extracting month long GL line item data
with 100+ columns. A separate exercise of data consistency checks to be carried out in production to see the
harm caused by materialization.
TCS Confidential 11
Ultimatix – SAP HANA Implementation Technical Review
Recommendation: It is recommended to implement union node pruning on top query view. Business Object
would use the user input From/To Date and determine whether current/Archive/Current+Archive data is asked.
This is could be done by putting a local logic in BO or making a call to HANA and determining the data selection
range as current/Archive/Current+Archive (First option is preferred). By doing so we would be able to bypass
scanning of huge archive data. This would result into significant benefits. Objective of doing this to introduce a
where clause on data based on “Current” and “Archive” values.
Note: A small PoC was done to demonstrate the concept and benefits of union node pruning. Union node
pruning is to be applied across module, wherever current and archive data are linked via union node. After
performing if archive data is found in memory then team needs to investigate case on case basis and fix the all
cases who are responsible for loading archive into memory.
Schema Name Table Name Table Type Record Count Table Size(GB)
COSTING FACT_FINANCE_COST_ARCHIVE COLUMN 282,827,654 34
TCS Confidential 12
Ultimatix – SAP HANA Implementation Technical Review
But for restricted user, company node is executed and no rows are returned vice versa. Which could have been
completely avoided by using union node pruning.
Recommendation: It is recommended to implement union node pruning on access logic. To do this business
object should determine user type as “Company” or “Restricted”. This could be done by creating a small view in
HANA and exposing it to BO to return the user type. This fetched value of user type should be passed to HANA
Access logic as a where clause.
A long term plan should be to do pruning on level of access. There should be a separate query to determine the
level of access at user level and that should be passed to HANA as a where clause and pruning would happen on
level column in union. For example if user has level 10 and 11 access then remaining 14 nodes would be
completely skipped.
TCS Confidential 13
Ultimatix – SAP HANA Implementation Technical Review
been some recent accounting movement then corresponding invoices/PO would have also gone through some
update. It would be more efficient to join GJ_JE with relevant records of huge transaction tables rather than all.
Recommendation: After a brief discussion with Prakash, suggestion came to check last_update_date of tables
such as invoices distribution, invoices, purchase orders etc. If there a recent GL movement then
Last_update_date field should have been accordingly updated. It was suggested to be on safer side let’s consider
last 3 months invoices while joining these tables with GL_JE. This would significantly reduce data set we consider
in HANA Model for upward calculations.
TCS Confidential 14
Ultimatix – SAP HANA Implementation Technical Review
Recommendation:
This particular model has a poor level of parallelization. This view has sequential steps and HANA
performs best when modeling is done considering its ability of parallelization.
In addition to above points, Team should look at the scope of making a new join optimized information
view, where all joins are performed as a star join and included in this model.
We should look at the possibility of logical grouping of join tables e.g. all invoices related joins are done
at one node.
A Source table is being joined at multiple steps in the same model to include different columns. Our
recommendation is to change model to join a source table at single place for all needs. E.g. HRM MR
Organization table joined twice.
Removal of Redundant projection nodes.
New information views are to be created with needed columns in parent view instead of using bulky
project common dimension views.
TCS Confidential 15
Ultimatix – SAP HANA Implementation Technical Review
Recommendation: It is must to pass Filter values to HANA to take advantage of it. In fact, there should be
more mandatory filters on the BO Front-end. We could look at a possibility of segregating reports into two
category Cost Report for central team which has access to all the data with less mandatory filters. For rest all
user we can create a copy of same report with more mandatory filters and less columns.
Recommendation: You may continue to have these views for the cases where project data extract is being
generated with all the attributes. But for the reporting and materialization views, which internally uses these
common dimension views, a new set of dimension views are to be created with only columns which are required.
This would significantly reduce memory consumption. This may slightly increase number of views but it is worth
adding news views in the interest of infrastructure health.
E.g. consider a scenario where one of the cost model view requires 2 attributes from project. A new view in
project module is to be created only using source tables whose attributes are needed in cost view. If only 2
attributes, location from project_master and last_update_date from project_history are needed then the new
view would have only these two tables being joined. Not all tables of project module. This is applicable to all
reporting and materialization information views using bulky common dimension views.
TCS Confidential 16
Ultimatix – SAP HANA Implementation Technical Review
VARCHAR. Doing this would consume 1 additional byte per character to store in unicode or
multilingual.
Given are the wrong practices followed in the case of FACT_FINANCE_COST materialized table:
FACT_FINANCE_COST FACT_FINANCE_COST
Table Column Name Column Data Type & Size
PERIOD_NAME NVARCHAR 100
WON NVARCHAR 50
INVOICE_CURRENCY_CODE NVARCHAR 50
AL_CURRENCY_CODE NVARCHAR 50
INV_LINE_DESCRIPTION NVARCHAR 300
INV_HDR_DESCRIPTION NVARCHAR 300
TO_WHOM_INV_RAISED_EMP_NO NVARCHAR 100
VENDOR_SITE NVARCHAR 500
VENDOR_NAME NVARCHAR 500
PO_NUMBER NVARCHAR 500
PROJECT_TYPE_FINAL NVARCHAR 100
JE_NAME NVARCHAR 500
CLIENT_COUNTRY NVARCHAR 150
OPERATING_UNIT VARCHAR 100
THIRTEEN_CODE_COBINATION_ID VARCHAR 250
FINAL_IOU NVARCHAR 500
FINAL_SUB_IOU NVARCHAR 500
Recommendation: We recommend to review all materialized fact tables and bring them to sync with source
system. For any new development this should be included as a part of check list.
Recommendation: Please remove resource consuming redundant/unnecessary steps in existing model where
need of having it not justified. This is to be validated in all models across modules.
TCS Confidential 17
Ultimatix – SAP HANA Implementation Technical Review
Recommendation: All such cases have to be removed from data models across modules.
Recommendation: It is highly recommended to look at all existing resource intensive views and try
enforcing parallelization while modeling. This may result into creating new model all together but
worth the pain.
Recommendation: Team should migrate to SAP recommended analytical privileges. A through exercise to be
carried out to derive a security matrix for the project and implemented as per SAP Guidelines. Any custom
implementation of access control would obviously be slower than the SAP recommended way.
Note: We did a small PoC in our lab to show the benefits of using analytical privileges.
TCS Confidential 18
Ultimatix – SAP HANA Implementation Technical Review
Recommendation: Exception handling is to be included in procedure and current processing of doing a look
up of last 30 days should be optimized to current day. Project team should do an analysis on deciding an
optimal value. Logically speaking, it would be around 2 hours. A suggestion came from Prakash to do analysis
on replacing current delete and insert with update/upsert statements.
6.10.14. Miscellaneous
Data Profiling: We recommend team to carry out data profiling specially for scenarios such as Tables and their
columns which are materialized OR Columns which are used in joins OR later used in some calculation. It was
observed during the audit that few columns who were used in calculations/joins had all null values. E.g.
ATTRIBUTE4 and ATTRIBUTE8 of GL_JE_LINES has all NULL value for all the records.
JOIN Columns: Special care is to be taken for columns which are part of join conditions. It was observed that
columns reference 5, 7 and 8 in GL_IMPORT_REFERENCES table had many null values and they were in inner
join. This scenario could be optimized by putting a filter at lower nodes and not considering null values for joins.
This would reduce the data set considered for join.
Cardinality Assignment: It was observed during the audit that cardinality assignments were not accurate.
Cardinality assigned for all the join should be reviewed and redone wherever is not assigned accurately.
Development team can take help from business team to find out the nature and cardinality of joins.
Optimize join: Optimize option for all left joins should be set true. Presently it is not set right.
JOIN Relevance: During the audit we found few joins which were not needed. Team should take help from
business and determine the joins which are not require and should remove them. This should be carried for all
modules. Examples: From one table max values of contract version is selected and another table is joined to get
the contract ID for max version. Where in contract ID field is available in the same table where we store
versioning of contract. Same was true with case of multiple end-client join analyzed during review.
6.11. Housekeeping
We observed that admin team has sent out multiple communications in the past to development team for
confirmation but there was no response/action from development team.
Business Critical and Real time Reporting: It is recommended to use HANA for business-critical and real-
time reporting. It was observed during audit that that card access details which are 22.5 GB on disk and 16 GB
loaded in memory. Team informed that SRC_CARDACC is planned to be taken out from HANA to Hadoop. This
point is mentioned in report to record this as an action item.
It was found that schema SRS_TEST of size 48.5 GB was created in memory for some testing purpose. Team must
plan to remove this schema once the need of this schema is over.
Redundant Tables: A separate exercise is to be conducted to remove redundant tables from production. A
clean up activity considering all schemas/tables must be planned and tracked to optimize storage needs. Below
are the list of tables we highlighted during the review but have not received any reply till date. Below list
contains probable redundant tables consuming 26GB of storage.
Recommendation: It is recommended to archive out the data (cold data) which is not required for operational
reporting. Data may be carved out using the SAP Data Archiving tool or data may be exported out and deleted
from the system. The archived data may be stored on the storage system or in a 3rd party tool. Date archived
through SAP tools can be viewed at a later point in time.
Another option to store cold data is to export out the data into a Near Line Storage (NLS) system. SAP Sybase
database may be used as the NLS storage.
TCS Confidential 21
Ultimatix – SAP HANA Implementation Technical Review
TCS Confidential 22
Ultimatix – SAP HANA Implementation Technical Review
8. Revised Sizing
The production HANA database is installed on a HP SAP In-Memory Appliance configured with 1 TB memory and
160 CPU. The HANA 1.0 database is running on SLES 11.2. The size of the HANA database currently is around 500
GB on disk (system + application data) with a growth rate of approximately 110 GB per year.
Recommendation: It needs to be pointed out that the sizing will need to be revisited after the suggestions
given in this report above are implemented namely, optimization of the expensive SQL statements, redesigning
of the materialized views and rescheduling the housekeeping jobs. Current state does not represent the right
picture of infrastructure to do accurate sizing.
Considering the size of the existing database the memory, current estimate for sizing of the HANA appliance
looks adequate. Keeping in mind the data growth rate and considering that no data reduction exercise is carried
out, the HANA Appliance will need to be scaled up after a year and half to two years.
TCS Confidential 23
Ultimatix – SAP HANA Implementation Technical Review
9. Conclusion
This report takes into consideration all aspects of the implementation, ranging from development to team
staffing. While we have identified a few risks from a business and project management standpoint, the most of
the risks we found were in the suboptimal practices employed by the development team. A sizeable number of
our risks currently faced by the system could have been easily mitigated by performing basic housekeeping tasks
and expensive statement analysis.
Considering the size of the existing database the memory, current estimate for sizing of the HANA appliance
looks adequate. Sizing will need to be revisited after the suggestions given in review report are implemented.
Current state does not represent the right picture of infrastructure to do more accurate sizing
On the whole, we see a major scope for improvement in the current landscape. There also needs to be a
collaborative effort between management, business developers and technical developers to identify better and
more relevant requirements in order to deliver optimal output from this HANA system. Depending on the
criticality, we have also categorized our recommendation into four broad categories: Immediate, Short Term,
Medium Term and Long Term.
HANA has been designed with operational as well as analytical reporting in mind, and to use it to generate data
sheets which are subsequently used for analysis is not an optimal usage of such advance platform. We strongly
recommend that the system itself be used for operational as well as analytical reporting not generating data
sheets.
TCS Confidential 24