Product: TIBCO Spotfire®
Data table loading and the ReloadDataAsynchronously preference.
Behavior in Spotfire 6.0 and lower:
In Spotfire version 6.0, the handling of data table loading was modified. The ReloadDataAsynchronously preference was introduced in Spotfire 6.0, and its default value was set to TRUE. Prior to Spotfire 6.0, the behavior was as if this new preference had been set to FALSE.
Behavior in Spotfire 6.5:
In Spotfire 6.5.2 HF-012, this preference was exposed as a configurable preference in the Administration Manager here:
- DataOptimization > DataOptimizationPreferences > ReloadDataAsynchronously
Generally speaking, using ReloadDataAsynchronously set to TRUE solves data loading problems caused by data table dependencies and reload order, and will be the optimal solution. The only risk is that this configuration can be less stable, especially when data sources stop responding or return error messages. For example, when an information link does not respond to a query, or a file on a shared network drive temporarily becomes unavailable.
The ReloadDataAsynchronously preference controls the order in which data sources are loaded:
- ReloadDataAsynchronously = TRUE
When set to TRUE, it controls the loading order for data sources that use asynchronous data loading (i.e., Data On Demand and Data Functions), ensuring that such asynchronous data sources are loaded in a defined order. Spotfire automatically sets this order based on dependencies among the data tables.
- ReloadDataAsynchronously = FALSE
When set to FALSE, these data sources will instead be loaded in parallel without any defined order. When dependencies exist between data tables, some data tables might be loaded more than once (have to be reloaded). Furthermore, it is possible that so called "dataTableDataSources" (data tables that are created based on existing data tables in the analysis) will require the user to press the reload button a second time to get refreshed data in the child data table, if the parent data table is “On Demand”.
This means that setting the preference to FALSE has the potential for making the analysis harder to use if it uses dataTableDataSources where the parent data table is On Demand, or if it in its turn is dependent on a data table that uses On Demand. This is the default behavior in versions 6.0 and earlier.
Behavior in Spotfire 7.0 and later:
In Spotfire 7.0, an improvement in the general handling of dataTableDatasources was introduced so that the child data table will automatically be refreshed when the parent data table is updated, as long as the child data table is set to "Automatic update". This is a new capability in 7.0, and helps avoid the issue seen when ReloadDataAsynchronously is set to FALSE and child data tables would earlier have required a manual second refresh.
To further explain the difference between setting the ReloadDataAsynchronously preference to TRUE and setting it to FALSE, consider the following example. A Spotfire analysis has three tables: A, B, and C. Each table is using "data on demand”, and table B has table C as a parent for getting parts of its data.
ReloadDataAsynchronously set to TRUE (default):
- Table A will load its on-demand data.
- When table A has finished loading, table C will load its on-demand data.
- When table C has finished loading, table B will load its on-demand data.
ReloadDataAsynchronously set to FALSE:
- All three tables will start loading their on-demand data, in parallel.
- The on-demand data for table B may finish loading before the on-demand data for table C.
- In that case, table B will have to re-compute its dependent parts when table C has finished loading. In Spotfire 6.5, the user will have to press “Reload Data” again to see the updated data in table B. In Spotfire 7.0 and later, this refresh is automatic when needed.
Effect on performance and speed of data reload:
The ReloadDataAsynchronously preference does not directly affect performance in any way. Most of the data reloading speed is driven by how the data tables are set up and how/if they depend upon each other for getting data to construct the final tables.
In Spotfire 6.5 and later, the new default setting of TRUE for the ReloadDataAsynchronously preference will be an optimal solution where the data table reloading will be performed asynchronously based on data table dependencies. If stability issues are seen during data reload when there are multiple interdependent data tables, it might be a more stable option to have ReloadDataAsynchronously set to FALSE because this has more robust error handling, with the understanding that some dependent data tables may need to be reloaded a second time. Due to this inconvenience, this is not recommended in Spotfire 6.5.
The risk from having the ReloadDataAsynchronously preference set to FALSE is mitigated with the new feature in Spotfire 7.0, which improved the handling of child data tables when “Automatic Update” is enabled, because that will automatically update the child tables. If there are stability issues on data reload with the default configuration, in 7.0 and later a solution may be to have “ReloadDataAsynchronously” set to FALSE and "Automatic Update" enabled on data tables.