Edge Server Environment
Overview
The Fusion Edge Server is responsible for exposing data and supporting metadata via a number of read only web service APIs. The data and metadata is the Environment, changes to the information in the data or metadata can only be made by supplying a new Environment.
This design means the Fusion Edge Server, when running in dynamic mode, will only ever reapply a complete Environment (in totality).
The Environment is made up of a collection of files, which are generated the output of the compile process of the Fusion Edge Compiler. These files contain prebuilt datastores for structures, data, metadata, prebuilt free text search indexes, and other pre-cached information which is used in dissemination.
The only way to modify an Environment is to re-run the compile process of the Fusion Edge Compiler. A built Environment can not be manually modified as it will result in corruption due to the mismatch in the digital signature applied to the Environment at compile time.
The Fusion Edge Compiler can create a new Environment by merging in new information into an existing Environment - for example when compiling a few additional Observations into an existing dataset. However, the output is always a new Environment with the new information added in. In this way Environments are fully immutable, they can only be changed by taking a copy of a previous Environment and adding to it.
Environment Contents
The Environment is a collection of files and folders (in bold) which are
cache dab data holds a prebuilt data store for each Dataflow datasearch holds a prebuilt free text search dictionary languages details about multilingual metadata ledger_indexes details about previous Environments from which this was built metadata holds a prebuilt reference metadata database structure holds a prebuilt structural metadata database xref holds a prebuilt cache of cross reference information fes_ledger.json describes the release history of environments, holds embargo timestamps
Fusion Edge Server Ledger
The fes_ledger.json file is important when running in Dynamic mode, it is the file which is polled by the Fusion Edge Server when checking for updates. The ledger file contains information such as:
- Unique Identity
- The time the Environment was prepared
- The embargo time (go live time)
- The version of the Environment
- History of previous Environments from which this Environment was built
Environment Version
The results of a compilation is an Environment, the very first Environment that is built has version 1.0.0. If an Environment is built by referencing a previous Environment to use as a base (i.e. when merging in new observations for release), the new Environment will increase the version number, and keep a history of previous versions in the main ledger file. This enables a user to see the history of an Environment (was it a new build, or was it a result of merging information from previous Environments).
When an Environment is merged, it is possible for some files to be exactly the same for the old and new Environment. For example if there are 10 Datasets in an Environment and only 1 is changed, then the new Environment will contain 9 unmodified Datastores with only 1 modified.
The version is given as a 3 part version syntax, starting at version 1.0.0. The three parts are known as the major version, minor version, and patch version.
- The patch version is updated if the compiler was run in update mode and the only change was to one or more datasets
- The minor version is updated if the structural metadata changed since the last compilation, this could for example be due to new time series requiring new classifications which were not in previous environments. * * The major version is updated if there are new datasets for Dataflows that previously did not exist or had no data. The major version is also updated if new reference metadata are released.
Example Initial Release Version 1.0.0 Modify a dataset Version 1.0.1 Modify another dataset Version 1.0.2 Export a new Codelist Version 1.1.0 Add a new dataflow with data Version 2.0.0