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.
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
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.
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.
If deployed using Transformation.cfg:Deploy as in Step 1 in Log Processing above, or use cross-rows to support a conditional setting.
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..
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