.Stat Suite Open Source Framework
Table of Content
- Introduction
- Technical stack
- .Stat Data Explorer module
- .Stat Data Lifecycle Manager module
- .Stat Core module
- DevOps implementation
- Component list and dependency matrix
- Contributing to an open source repository
Introduction
The .Stat Suite is a standard-based, componentised, open source platform for the efficient production and dissemination of high-quality statistical data. The product is based on the General Statistical Business Process Model (GSBPM) and the Statistical Data and Metadata eXchange (SDMX) standards and is driven by the Statistical Information System Collaboration Community (SIS-CC).
The .Stat Suite has three main modules:
-
.Stat Core: A highly performing, secure SDMX back-end based on standard protocols, to store, process and retrieve statistical data, structural and referential metadata, data process information and security settings.
-
.Stat Data Lifecycle Manager: A set of adaptive back-office modules to efficiently and timely produce and (re-)use high quality statistical data by defining, running, automating, controlling and evaluating the underlying data processes.
-
.Stat Data Explorer: A front-office application for easy finding, understanding and using of data through an efficient well-tuned navigation and search approach, appropriate data previews and contextual metadata, and download in standard formats, APIs or share features.
The high-level technical architecture can be schematised as follow:
Each main module (as well as their components) can be used together or separately.
In the following are a few typical use cases on how an organisation can make use of these modules:
A) Adding the Data Explorer to an existing fully-fledged back-end solution
Pre-requisites: A statistical database with its own data management features and with a public SDMX API (SDMX 2.1 Rest incl. SDMX-JSON); hardware (see the system requirements in the installation guides)
Objectives: Add a public web application as GUI for end-users to ease to consumption of the data
Approach: Use only the .Stat Data Explorer components and plug them to the public SDMX API
B) Adding the Data Lifecycle Manager to an existing back-end solution to extend its management functionalities
Pre-requisites: A statistical database with a protected SDMX API (SDMX 2.1 Rest incl. SDMX-JSON); hardware (see the system requirements in the installation guides)
Objectives: Add a protected web application as GUI for data producers to ease to management of the data
Approach: Use only the .Stat Data Lifecycle Manager components and plug them to the protected SDMX API
C) Adding the .Stat Core as a back-end solution (SDMX data store)
Pre-requisites: Management and Data portal GUIs that can connect to an SDMX end-point through SDMX API calls; SQL Server licenses; hardware (see the system requirements in the installation guides)
Objectives: Add a protected SDMX datastore
Approach: Use only the .Stat Core components and plug them into the existing GUIs software
D) Adding the .Stat Suite as a full-stack statistical data management and dissemination solution
Pre-requisites: SQL Server licenses; hardware (see the system requirements in the installation guides)
Objectives: Add the full .Stat Suite with one or more SDMX data stores (to handle independent data lifecycle versions)
Approach: Define specific topology for your needs using all .Stat Suite components or partially
Technical stack
The following technologies are used for the development of the .Stat Data Explorer components and the .Stat Data Lifecycle Manager components:
kubernetes | gcp | docker | solr | redis | mongo | es6 | nodejs | npmjs | git | gitlab |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
The following technologies are used for the development of the .Stat Core components:
kubernetes | gcp | docker | git | gitlab | sql server | .net core | visual studio | nuget |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
.Stat Data Explorer module
Non-technical overview
Data Explorer app
short description
This web app is the main GUI for (external) users to find, understand and use the statistical data stored in the SDMX end point(s).
demo (light)
- go to https://de-qa.siscc.org (tenant: oecd, env: staging)
- home page
- search by facets (click on a facet)
- fine-tune search results (play with facet selection)
- data view with search params as data query (click on a dataflow)
- fine-tune data selection (play with filter selection)
- fine-tune data view (play with customize)
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-data-explorer
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-data-explorer
- forked from https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-webapp (boilerplate to help crafting web application fully integrated within dotstat-data-explorer-suite)
- server-side rendered (configuration is injected in index.html), no request required from the client to get the configuration
- client bundle expects configuration in
window.SETTINGS
,window.I18N
andwindow.CONFIG
for those who want to use directly the static files
Share service
short description
This service (and related database) is used to store and retrieve user-defined data tables and charts as small JSON objects containing the related configurations. A Redis database is used to store shared objects (tables or charts). Share server is not auth protected, so any robot can spam it. In order to avoid it, many mechanisms are in place:
- tables/charts are only temporarily stored for
redisChartTTL
seconds before being deleted unless confirmed via email link - share server checks POST calls rates. Over
maxRatePerIP
POST calls per second, per IP, are rejected with a 419 HTTP code - POST bodies are limited in size to
maxChartSize
demo
- go to any visualisation page (table view or chart view) of https://de-demo.siscc.org/
- click on share button
- fill the form (email adress)
- click on publish ‘Request URL and embed code’
- check email
- follow the confirmation link
- check the shared view
flow
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-share
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-share
- a redis database is used to store shared charts
- share server is not auth protected, so any robot can spam it; to avoid that, many mechanisms are in place:
- charts are only temporarily stored for
redisChartTTL
seconds before being deleted unless confirmed via email link - share server checks POST calls rates. Over
maxRatePerIP
POST calls per second, per IP, are rejected with a 419 HTTP code - POST bodies are limited in size to
maxChartSize
- charts are only temporarily stored for
Share-Viewer App
short description
This web app is a companion GUI for (external) users to display user-defined, shared data tables and charts e.g. in embedded views or through shared links.
demo (light)
- Go to https://dv-demo.siscc.org/ (to get a dedicated viewer representation, follow the Share demo)
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-data-viewer
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-data-viewer
- ? forked from https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-webapp (boilerplate to help crafting web application fully integrated within dotstat-data-explorer-suite)
- ? server-side rendered (configuration is injected in index.html), no request required from the client to get the configuration
- ? client bundle expects configuration in
window.SETTINGS
,window.I18N
andwindow.CONFIG
for those who want to use directly the static files
Search service
short description
This service is a .Stat-specific proxy to an SolR engine to index SDMX dataflows categorised and accessible in one or more SDMX end points and to execute faceted search queries on these SDMX dataflows.
features/demos
- free-text faceted search
- results are sorted by relevance and paginated
- free-text search hit: highlight the first occurance of all search terms
- handles hierarchical facet content (from SDMX codelists)
- multi-language enabled
- single term search:
Unemployment rate by sex and disability status
1 result - phrase term search:
"Unemployment rate by sex and disability status"
1 result - tagged search:
name:enterprises
- multiple tagged search with phrase:
name:enterprises description:"tourism"
- negate search:
-seasonally
25/33 results (witness:seasonally
8/33 results)
architecture
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-sdmx-faceted-search
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-sdmx-faceted-search
- a static schema is defined in the config
- a dynamic schema is derived from dataflows
limitations
- reconciliate sdmx and search data (e.g. dataset order, facet value order) -> cache server
- datasources & config
- performance (benchmark to do)
- how to index (e.g. individual dataset = SDMX dataflow)
Proxy Service
short description
The Proxy service handles route request depending on urls (https://<app>.<env>.<tenant>.siscc.org
), and sets tenant headers depending on host to instruct target application. <tenant>.siscc.org
could be replaced by a dedicated DNS entry, e.g. https://<app>.<env>.oecd.org
.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-proxy
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-kube-proxy
- handles route request depending on urls (
https://<app>.<env>.<tenant>.siscc.org
) - set tenant headers depending on host to instruct target application
<tenant>.siscc.org
could be replaced by a dedicated DNS entry, iehttps://<app>.<env>.oecd.org
Config Service
short description
The Configuration service centralises all configuration resources used by other services. It is a web server providing requested configuration, not exposed to users. Based on git versioned configuration data.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-config
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-config-dev
- centralize all configuration resources used by other services
- web server to provide requested configuration, not exposed to users
- git versioned configuration data
Dependencies
(Dependency) sis-footer
short description
A footer view component for Table and Charts.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-ui-footer
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-ui-footer
(Dependency) rcw-charts
short description
Set of configurable charts based on d3.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-d3-charts
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-d3-charts
(Dependency) visions
short description
Visions is a library of React components. The goal is to handle interfaces and very limited logic.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-ui-components
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-ui-components
(Dependency) sis-header
short description
A header view component for Tables and Charts.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-ui-header
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-ui-header
(Dependency) dotstatsuite components
short description
Is a library of components. [more discription to come]
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-components
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-components
(Dependency) dotstatsuite-sdmxjs
short description
Is a library of components for the parsing of SDMX-JSON messages. [more discription to come]
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-sdmxjs
- package: https://www.npmjs.com/package/@sis-cc/dotstatsuite-sdmxjs
Multi-tenant architecture
demo (staging)
tenant | specs | url |
---|---|---|
oecd | own sdmx oecd staging endpoint, OECD-staging | https://de-demo.siscc.org/ |
technical overview
demo: add/update a tenant
- update list of tenants: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-config-data/-/blob/develop/configs/tenants.json
- add tenant config (data-explorer & sdmx): https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-config/tree/develop/data/dev/configs
- add tenant referenced assets (data-explorer): https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-config-data/-/tree/develop/assets/
- check the tenant at http://de-staging-tenant=
.siscc.org/ - update something in the configuration and check the update
demo: add/update an app for the tenant (siscc workshop hands-on)
- fork from wepapp
- inject pre-coded app (to create)
- declare it somewhere
- check the app at
http://<app>.staging.<tenant>.siscc.org
- update the app
- check the app at
http://<app>.staging.<tenant>.siscc.org
.Stat Data Lifecycle Manager module
Data Data Lifecycle Manager app
short description
This web app is the main GUI for statistical data teams to efficiently produce and disseminate high-quality statistical data and metadata.
demo (light)
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-data-lifecycle-manager
- docker: https://hub.docker.com/r/siscc/dotstatsuite-data-lifecycle-manager
.Stat Core module
technical overview
Transfer service
short description
This web service is used for statistical data (and later referential metadata) for their upload, download and transfer between different .Stat Core Data Stores.
demo (light)
- go to https://transfer-qa.siscc.org/swagger (tenant: oecd, env: qa)
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-transfer
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-core-transfer
SDMX service
(also named SDMX-RI NSI web service (c) Eurostat)
short description
This web service is used for statistical data structures for their upload and download to and from a .Stat Core Data Store. It is based on the SDMX compliant REST web service developed by Eurostat and (through a plugin - see below) enriched with an access to a .Stat Core data storage. The web service allows for retrieval of data structures and data and for submission of data structures.
demo (light)
- go to http://nsi-stable-qa.siscc.org/ (tenant: oecd, env: qa)
technical aspects
- repository: https://citnet.tech.ec.europa.eu/CITnet/stash/projects/SDMXRI/repos/nsiws.net
- docker: https://hub.docker.com/r/siscc/sdmxri-nsi-maapi
- docker of original Eurostat SDMX-RI NSI web service: https://cloud.docker.com/u/siscc/repository/docker/siscc/sdmxri-nsi
Authorisation service
short description
This web service is used for managing user access rights to data structures and data in .Stat Core Data Stores.
demo (light)
- go to http://authz-qa.siscc.org/swagger (tenant: oecd, env: qa)
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-auth-management
- docker: https://cloud.docker.com/u/siscc/repository/docker/siscc/dotstatsuite-core-auth-management
Dependencies
(Dependency) Data Access library to access the .Stat Core Data Store
short description
This library is used by the Transfer service to retrieve or upload statistical data structures from and to a .Stat Core Data Store.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-data-access
- package: https://www.nuget.org/packages/DotStat.DataAccess.NuGet
(Dependency) Core Common library
short description
This library is used for shared code in the .Stat Core components. These inlude logs, localisation and configuration.
technical aspects
- repository: https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-common
- package: https://www.nuget.org/packages/DotStat.Common
DevOps implementation
See: .Stat DevOps implementation
Component list and dependency matrix
Contributing to an open source repository
https://www.selketjah.com/oss/2018/02/06/flow-of-open-source/