...
Excerpt | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
Take into account the following behaviors when using the Aggregation profile:
Session UDREach Aggregation profile stores sessions of a specific Session UDR type that you define in ultra. This means that your Aggregation profile configuration must include a session UDR type. See the example below:
It is recommended that you keep the session UDR as small as possible. A larger UDR decreases performance compared to a small one.
For further information on Ultra formats, see Ultra Format(4.3). Profile ConfigurationThe contents of the buttons in the menu bar may change depending on which configuration type has been opened in the currently active tab. The Aggregation profile uses the standard buttons that are visible for all configurations, and these are described in Build View (4.3). The profile consists of four tabs:
Session TabIn the Session tab you can browse to and select a Session UDR Type and configure the Storage selection settings.
|
...
Association TabYou use the Association tab to configure rules that are used to match an incoming UDR with a session. Every UDR type requires a set of rules that are processed in a certain order. In most cases, only one rule per incoming UDR type is defined. You can use a primary expression to filter out UDRs that are candidates for a specific rule. If the UDR is filtered out by the primary expression, it is matched with the existing sessions by using one or several ID fields as a key. For UDRs with ID Fields matching an existing session, an additional expression may be used to specify additional matching criteria. For example, if dynamic IP addresses are provided to customers based on time intervals, the field that contains the IP address could be used in ID Fields while the actual time could be compared in Additional Expression.
Storage TabThe Storage tab contains settings that are specific for File Storage, Couchbase Storage, Redis Storage, Elasticsearch Storage, and SQL Storage. Couchbase Storage
Elasticsearch Storage
File Storage
Note! When session data is stored, it is appended to the session file. This means that old session data from the session file is still present in the storage and the current version is added to the file. Removal of old data is done only under certain conditions because otherwise, aggregation handling would be too slow. This is why file storage takes up more space than calculated with session number and single session object size. The session files on the disk grow up to a certain threshold ( 50MB by default) and then a new file is created and used. The old session file will be deleted when no more active sessions are stored in it. The accepted size of a session file can be adjusted by using the system property For example:
will set it to 20MB. This system property can be configured in the ECD, see Creating an EC Deployment (4.3). Old files are removed during the storage commit. Also, since there is a possibility that there will be old session files present because of some long-lived sessions stored there, a defragmentation algorithm is implemented. It runs occasionally and moves those long-lived sessions to new session files so that old session files can be deleted. This is why aggregation storage takes up a lot of disk space. It is designed to provide higher performance at the expense of higher disk space consumption. Kafka Storage
Memory OnlyWhen you have selected Memory Only as storage, there are no additional settings in the Storage tab.
|
Setting | Description |
---|---|
Profile | Select a Redis (4.3) profile. This profile is used to access the storage for aggregation sessions. |
SQL Storage
Setting | Description | ||
---|---|---|---|
Profile | Select a Database (4.3) configured with the SQL database type. This profile is used to access the storage for aggregation sessions. Note! Currently, the SQL storage only supports PostgreSQL and SAP HANA databases. Storage-sharing functionality is currently not supported. | ||
Index Fields | Click the Add button to select the UDR type. | ||
Table SQL Script | This text box will generate the SQL statements for the selected UDRs' table schema and indexes for Id, TxId. The schema will be generated based on the number of UDRs in the UDR Type Mapping table.
Note! The following table columns (with data types) are mandatory when creating the database:
|
Advanced Tab
The Advanced tab is available when you have selected Couchbase Storage, Elasticsearch Storage, Redis Storage or SQL Storage in the Session tab. It contains properties that can be used for performance tuning. For information about performance tuning, see Aggregation Performance Tuning(4.3).
These fields supports parameterization using ${} syntax, see Profiles(4.3) for more information on how parameterization works.
Couchbase Storage
You can also set the properties listed in the Advanced tab as system properties in the ECDs, see Creating an EC Deployment (4.3), which will override the values that are set in the profile, including default values.
Note!
See the Note at the end of this page for more information when using pessimistic or optimistic locking mechanisms for Couchbase aggregation storage.
Elasticsearch Storage
For Elasticsearch storage, you can modify the properties listed as shown above in the Advanced tab.
Redis Storage
For Redis Storage, you can only modify the properties in the Advanced tab.
Note!
See the Note at the end of this page for more information when using optimistic locking for Redis aggregation storage.
SQL Storage
For SQL Storage, you can modify the properties listed as shown above in the Advanced tab.
Note!
When using Couchbase or Redis aggregation storage, it is important to take note of the concept of locking mechanisms when configuring workflows. Locking mechanisms are of two types: Pessimistic and Optimistic.
Redis aggregation storage only has an Optimistic lock whereas Couchbase aggregation storage has both Optimistic and Pessimistic locks.
Pessimistic Lock
When a workflow thread is working on a session, it is considered to be fully locked. No other thread can work on that particular session. Once the first thread is finished, the lock is released and another thread can take the lock and work on the session.Optimistic Lock
Instead of acquiring a traditional lock for a session, a workflow thread obtains a CAS (Compare And Swap) for that session. The CAS serves as a kind of hash or fingerprint of the session data. When the consume block is done and the session is ready to be updated, an error occurs if the CAS no longer matches. In scenarios where multiple threads have made updates to the same session, only the changes from the first thread to complete its work are accepted. Any other thread(s) attempting to update will encounter failure and need to restart their work from the beginning. This process ensures that only changes from one workflow at a time can be committed, akin to the principles of pessimistic locking. It's essential to understand a key distinction: the consume and sessionInit blocks may be invoked multiple times due to the retry mechanism mentioned earlier. As a result, it's advisable to avoid using global variables within the aggregation APL. However, the udrRoute function can be safely utilized within these blocks since it is executed only when the Optimistic lock succeeds. If global variables are necessary, they can be relocated to an analysis agent and updated through the udrRoute function.
Note!
Threads may live in multiple processes on multiple machines.