DeviceAtlas Distribution

The DeviceAtlas JSON file will now be distributed in a .bundle file (a renamed .tar.gz) along with DeviceAtlas.dll and DeviceAtlas64.dll files.

When the administrator upgrades the Insight Server to version 6.0, the DeviceAtlas.bundle file is included with the upgrade package in the Software and Docs profile (softdocs profile) located at:

Server Packages > v6.00 > Server_6.00.zip

The DeviceAtlas.bundle file is extracted to Server\Lookups\DeviceAtlas.

The DeviceAtlas.bundle file should be placed in a directory that is synchronized to the DPUs, and the DeviceAtlas.cfg file corresponding to the new DeviceAtlasComponent should be placed in the "Components for Processing Servers" directory on the synchronization master. When the DeviceAtlas.bundle file is changed, the very next DeviceAtlas lookup call will get results based on the updated API and/or JSON file.

Modify the Transformation.cfg file

The DeviceAtlas Transformations will no longer need to specify the path to the JSON file. Any previous DeviceAtlasTransformation that is defined in the transformation.cfg file should no longer include the File parameter that points to the obfuscated JSON file.

This example Transformation.cfg file shows the File argument that should be deleted to avoid confusion. (Leaving it there will not cause harm, but only potential confusion because it will be ignored.)

6 = DeviceAtlasTransformation: 
  Comments = Comment: 0 items 
  Condition = AndCondition: 0 items 
  
File = string: Lookups\\DeviceAtlas\\20110106_private.json.obfuscated
  ^^ DELETE THE ABOVE LINE FROM ALL PREVIOUS TRANSFORMATIONS ^^ 

  Name = string: DeviceAtlas Lookup 
  Outputs = vector: 4 items 
    0 = Column: 
      Column Name = string: vendor 
      Field Name = string: x-vendor 
    1 = Column: 
      Column Name = string: model 
      Field Name = string: x-model 
    2 = Column: 
      Column Name = string: isBrowser 
      Field Name = string: x-isbrowser 
    3 = Column: 
      Column Name = string:usableDisplayHeight 
      Field Name = string: x-usable-display-height
User Agent = string: x-ua 

Modify the DeviceAtlas.cfg file

This is an example of the component argument required in the DeviceAtlas.cfg file.

component = DeviceAtlasComponent:
  DeviceAtlas Bundle File = string:Lookups\\DeviceAtlas\\DeviceAtlas.bundle
  Unsynchronized Bundle Extraction Path = string: Temp\\DeviceAtlas\\

This DeviceAtlas.bundle file will be treated just like a configuration file from the perspective of the Profile Synchronization feature. In addition, the JSON data and DLL will be used at the Component level rather than at the individual Transformation level.

A new DeviceAtlasComponent, upon startup, finds the .bundle conglomeration, de-obfuscates the JSON file into memory, extracts the files into a temporary directory, and loads the appropriate DLL for the running platform. This component also monitors changes to the bundle file, and reloads the DLL and .cfg file automatically if it changes.

Running DeviceAtlas

Proper configuration makes a big difference in the time required for transformation. The transformation can be configured to run only once per visitor per session to allow DeviceAtlas to speed up the process.

If deployed using Log Processing.cfg:

Run the transformations twice.

  1. Look up only the mobile id field, then
  2. Create conditions to ignore the mobile id and then look up the rest of the fields.

If deployed using Transformation.cfg:

Deploy as in Step 1 in Log Processing above, or use cross-rows to support a conditional setting.
  • Cross-Rows—Grab the previous session key. Then identify if the current session key is different from the one found with cross-rows. If so, then the DeviceAtlas transformation will only run on one record per session.

Modifying In-Memory Cache

Overview

The DeviceAtlas.bundle file uses an in-memory cache to greatly improve the performance of lookups. By default, it will cache up to 100000 user-agents and their properties. The LRU cache is entirely self-contained inside the DeviceAtlas.bundle file, so any version of the server capable of using a bundle file will automatically benefit from the increased performance as soon as the new file is loaded.

Modifying the DeviceAtlas.cfg file

The maximum size of the LRU cache can be configured by modifying the Cached Elements Limit parameter in the DeviceAtlas.cfg file..

Note: This feature was added in the Data Workbench 6.4 release.

You can override the default Cached Elements Limit of "100000" by changing its value and saving the file. The default value has been selected to be sufficient for most needs.

component = DeviceAtlasComponent:
DeviceAtlas Bundle File = string:
Lookups\\DeviceAtlas\\DeviceAtlas.bundle
Unsynchronized Bundle Extraction Path = string:
Temp\\DeviceAtlas\\
Cached Elements Limit = unsigned int: 100000