Blog

Caveat Around Concurrent Data Loads - Part A

[fa icon="calendar"] June 5, 2018 / by Shyam Ramakrishnan

With users unceasingly (almost perennially) demanding higher data upload speed and concurrent transfers, this blog offers insight and considerations one should keep in mind while simultaneously executing a Turbo Integrator (TI) process. It also highlights steps to avoid TI looping and/or thrashing.

 

Synopsys

Consider a single user loading data into a cube from source (such as ODBC, Text files, another Cube, etc.) via a TI process for a specific data segment such as a given scenario, period & component, may not experience any wait times. However, when it comes to concurrent users simultaneously executing a TI, there will be circumstances when they will experience delays; this, as their commands will be placed on locks. It occurs as a result of declaring static view/subset names in the TI process that perform write operation into a cube, updating the same view, blocking the concurrent write activity.

 

Analysis

As the concurrent execution of a TI is processed, the Write activity put on lock mode (by another Write command which is being executed) keeps the process on wait until the operation finishes and then re-initiates it for itself.  This repeated attempts to execute the process puts a lock on destination cube and successive rollbacks result in a thrash. This, as the concurrent execution adversely effects server utilization and TI processing times.

 

Solution

Parallel Interaction: Concurrent read and write operation on a cube can be achieved using Parallel Interaction. A Parallel interaction allows multiple writes & reads from many users, synchronously. It is most useful in situations where business urgency demand multiple data uploads using a single TI process or scenarios where cubes are required to process simultaneous read and write operations.

Tip: To improve concurrent user activity while executing a TI and in the event where concurrent cube data access is put on wait mode, make sure you declare views and subsets with unique names.

For this, include client name or number, time stamp and random number(s).

Example:

sUser = TM1User ();

nClient = DIMIX ( '}Clients', sUser);

If (nClient = 0);

    nClient = Int (RAND ()) ;

EndIf;

sClientNumber = NumberToString(nClient);

 sPrefix              = 'TI';

sProcessName     = GetProcessName();

sViewName         = sPrefix | sProcessName | sClientNumber;

sSubsetName      = sViewName;

 

If however the TI process is also executing meta data updates, include TI function “Synchronized()” to invoke serial execution of TI processes that update TM1 dimension(s). This will potentially avoid a thrash.

Syntax: synchronized(string); synchronized() takes a single parameter that is the lock object name.

 

For more Information: To check on your existing Planning Analytics (TM1) entitlements and understand “how to”, reach out to us at info@octanesolutions.com.au for further assistance.

Get a free one-hour consultation on us.

 

Octane Software Solutions Pty Ltd is an IBM Registered Business Partner specializing in Corporate Performance Management and Business Intelligence. We provide our clients advice on best practices and help scale up applications to optimise their return on investment. Our key services include Consulting, Delivery, Support and Training.

Octane has its head office in Sydney, Australia as well as offices in Canberra, Bangalore, Gurgaon, Mumbai, and Hyderabad.

To know more about us visit, OctaneSoftwareSolutions.

Topics: PlanningAnalytics, IBM PA, PAW and PA, TM1 Support, Octane Software Solutions, TurboIntegrator, TI Optimisation

Shyam Ramakrishnan

Written by Shyam Ramakrishnan

Shyam is a TM1 Consultant with Octane Software Solutions and a skilled TM1 Architect, Developer with rich experience in Corporate Performance Management. He has put 12+ years in functional and technical roles in sectors like Banking and Financial Services, Manufacturing and Technology internationally.

Subscribe to Email Updates

Recent Posts