Wiki source code of 8 SDMX Registry/Repository

Version 4.1 by Artur on 2025/05/27 15:51

Hide last authors
Artur 1.1 1 {{box title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 == 8.1 Scope of this Chapter ==
6
Helena 2.1 7 [[image:SDMX_2-1_User_Guide_draft_0-1_html_4c1c6e5debb65e85.png||data-xwiki-image-style-alignment="center" height="411" width="679"]]
Artur 1.1 8
Helena 2.1 9 In this guide it has been assumed that the [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] (e.g. [[DSD>>doc:sdmx:Glossary.Data structure definition.WebHome]], [[MSD>>doc:sdmx:Glossary.Metadata structure definition.WebHome]], [[Code List>>doc:sdmx:Glossary.Code list.WebHome]], [[Concept Scheme>>doc:sdmx:Glossary.Concept scheme.WebHome]]) is available to processing applications such as a data extract function of a database or a data visualization function of a website. For many [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] processing applications these [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] must be made available “on demand”.
Artur 1.1 10
Helena 2.1 11 This Chapter explains the role and functions of an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] and how the Registry is used both as a storage, retrieval, and maintenance repository for [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]], and as a mechanism for discovering data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] including the automated “pull” scenario of an automated data reporting system .
Artur 1.1 12
13 == 8.2 The Need for an SDMX Registry ==
14
Helena 2.1 15 First, it should be stated that it is not necessary to operate or have access to an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] in order to use [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]. Many use cases do, however, require access to [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] but these can be retrieved from any web service that can respond to a query for [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] (either the REST query or the “Structure Where” query) - this service does not need to be an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]].
Artur 1.1 16
Helena 2.1 17 Whilst both an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] and a non-Registry web service use exactly the same query mechanism, a Registry differs from non-Registry web service in three important areas:
Artur 1.1 18
Helena 2.1 19 1. The Registry offers a maintenance service for [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] – this is the “Repository” function of the Registry.
Artur 1.1 20 1. The Registry offers a data and metadata Registration service
Helena 2.1 21 1. The Registry offers a [[subscription>>doc:sdmx:Glossary.Subscription.WebHome]] and [[notification>>doc:sdmx:Glossary.Notification.WebHome]] service
Artur 1.1 22
23 The functions of these services are covered in this Chapter.
24
Helena 2.1 25 Software tools that support [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] services are becoming more functional and have reached a point where it is extremely easy to install and operate an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]]. This can be used to support a community of users or be used solely within a single organization in order to have a central repository for [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] which can be maintained and retrieved.
Artur 1.1 26
27 == 8.3 Objective of a Registry ==
28
Helena 2.1 29 The objective of the [[SDMX registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]]/repository is, in broad terms, to allow organisations to publish statistical data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] in known formats such that interested third parties can discover these data and interpret them accurately and correctly. The mechanism for doing this is twofold:
Artur 1.1 30
Helena 2.1 31 1. To maintain and publish [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] that describes the structure and valid content of data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] sources such as databases, [[metadata repositories>>doc:sdmx:Glossary.Metadata repository.WebHome]], [[data sets>>doc:sdmx:Glossary.Data set.WebHome]], [[metadata sets>>doc:sdmx:Glossary.Metadata set.WebHome]]. This [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] enables software applications to understand and to interpret the data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] in these sources.
32 1. To enable applications, organisations, and individuals to share and to discover data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]]. This facilitates data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] dissemination by implementing the data sharing vision of [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]].
Artur 1.1 33
34 == 8.4 SDMX Registry/Repository Architecture ==
35
36 === 8.4.1 Architectural Schematic ===
37
Helena 2.1 38 The architecture of the [[SDMX registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]]/repository is a layered architecture that is founded by a [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] repository which supports a provisioning [[metadata repository>>doc:sdmx:Glossary.Metadata repository.WebHome]] which supports the registry services. These are all supported by the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] schemas. Applications can be built on top of these services which support the reporting, storage, retrieval, and dissemination aspects of the statistical lifecycle as well as the maintenance of the [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] required to drive these applications.
Artur 1.1 39
Helena 2.1 40 [[image:SDMX_2-1_User_Guide_draft_0-1_html_811113a255dfd7e.jpg||data-xwiki-image-style-alignment="center" height="325" width="554"]]
Artur 1.1 41
42 (% style="text-align: center;" %)
43 **{{id name="image_19"/}}Figure 19: Schematic of the Registry Content and Services**
44
45 === 8.4.2 Structural Metadata Repository ===
46
Helena 2.1 47 The basic layer is that of a [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] service which supports the lifecycle of [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]] such as [[Maintenance Agencies>>doc:sdmx:Glossary.Maintenance agency.WebHome]], [[Data Structure Definitions>>doc:sdmx:Glossary.Data structure definition.WebHome]], [[Metadata Structure Definitions>>doc:sdmx:Glossary.Metadata structure definition.WebHome]], [[Provision Agreements>>doc:sdmx:Glossary.Provision agreement.WebHome]], Processes etc. This layer is supported by the Structure Maintenance and Query Service.
Artur 1.1 48
Helena 2.1 49 Note that the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] Submit Structure Request message supports all of the [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] structural [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]]. The only Registry [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]] that are not supported by the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] Submit Structure Request are:
Artur 1.1 50
51 * Registration of data and metadata sources
Helena 2.1 52 * [[Subscription>>doc:sdmx:Glossary.Subscription.WebHome]] and [[Notification>>doc:sdmx:Glossary.Notification.WebHome]]
Artur 1.1 53
Helena 2.1 54 Separate registry-based messages are defined to support these [[artefacts>>doc:sdmx:Glossary.Artefact.WebHome]].
Artur 1.1 55
56 === 8.4.3 Provisioning Metadata Repository ===
57
Helena 2.1 58 The function of this repository is to support the registration of various types of data-store which model [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]-conformant databases or files, and to link to these data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] sources. These links can be specified for a [[data provider>>doc:sdmx:Glossary.Data provider.WebHome]], for a specific data or [[metadata flow>>doc:sdmx:Glossary.Metadataflow.WebHome]]. In the [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] model this is called the [[Provision Agreement>>doc:sdmx:Glossary.Provision agreement.WebHome]].
Artur 1.1 59
60 This layer is supported by the Data and Metadata Registration Service.
61
62 == 8.5 Services of an SDMX Registry/Repository ==
63
64 === 8.5.1 Structure Maintenance and Query Service ===
65
Helena 2.1 66 A Registry offers a web service for the maintenance of [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]]. Whilst this service must comply with the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] Registry Interface, it is common for such registries to also provide a graphical user interface for the submission and maintenance of [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] structures.
Artur 1.1 67
Helena 2.1 68 [[image:SDMX_2-1_User_Guide_draft_0-1_html_1441cca2307b86ac.jpg||data-xwiki-image-style-alignment="center" height="279" width="576"]]
Artur 1.1 69
70 (% style="text-align: center;" %)
71 **{{id name="image_20"/}}Figure 20: Example Graphical User Interface to an SDMX Registry **
72
Helena 2.1 73 The Registry must also offer a query service for [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]].
Artur 1.1 74
75 === 8.5.2 Registration Service ===
76
Helena 2.1 77 The Registration service allows a data or metadata publisher (in [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] terminology this is a [[Data Provider>>doc:sdmx:Glossary.Data provider.WebHome]]) to publish that data or metadata exist. As the Registration is connected to a [[Provision Agreement>>doc:sdmx:Glossary.Provision agreement.WebHome]] which itself is connected to a [[Data Provider>>doc:sdmx:Glossary.Data provider.WebHome]] and Data or [[Metadata Flow>>doc:sdmx:Glossary.Metadataflow.WebHome]], the exact type of data or metadata registered is known, and also its structure (as the Data or [[Metadata Flow>>doc:sdmx:Glossary.Metadataflow.WebHome]] references the [[DSD>>doc:sdmx:Glossary.Data structure definition.WebHome]] or [[MSD>>doc:sdmx:Glossary.Metadata structure definition.WebHome]]).
Artur 1.1 78
Helena 2.1 79 The Registration must include a URL of either a file of [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] containing a data or [[metadata set>>doc:sdmx:Glossary.Metadata set.WebHome]], or a URL of a web service which can be queried to obtain the data.
Artur 1.1 80
Helena 2.1 81 [[image:SDMX_2-1_User_Guide_draft_0-1_html_541961e6279194a1.jpg||data-xwiki-image-style-alignment="center" height="446" width="451"]]
Artur 1.1 82
83 (% style="text-align: center;" %)
84 **{{id name="image_21"/}}Figure 21: Schematic of Registered Data and Metadata Sources in the SDMX-IM**
85
Helena 2.1 86 The Registration can be used both for [[data consumers>>doc:sdmx:Glossary.Data consumer.WebHome]] to find data (this is described below in “Data and Metadata Discovery”) and for automated data reporting systems to harvest the data (the “pull” scenario).
Artur 1.1 87
88 === 8.5.3 Subscription and Notification Service ===
89
Helena 2.1 90 This [[subscription>>doc:sdmx:Glossary.Subscription.WebHome]] service allows a user to monitor Registry events. An event is something that has changed in the Registry. The [[subscription>>doc:sdmx:Glossary.Subscription.WebHome]] can be specified for specific objects such as a new registration of data or a change to a [[code list>>doc:sdmx:Glossary.Code list.WebHome]], or it can be specified for many objects such as any change to a specific type of structure or all registrations. A [[subscription>>doc:sdmx:Glossary.Subscription.WebHome]] can ask for [[notification>>doc:sdmx:Glossary.Notification.WebHome]] by e-mail or [[notification>>doc:sdmx:Glossary.Notification.WebHome]] to a URL (this will be a web service that can act upon the [[notification>>doc:sdmx:Glossary.Notification.WebHome]] such as the automated update of [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] supporting a web dissemination service or the “pull” mechanism for data reporting).
Artur 1.1 91
Helena 2.1 92 When a monitored event is triggered the [[notification>>doc:sdmx:Glossary.Notification.WebHome]] service notifies interested parties of the Registry content that has changed. The [[notification>>doc:sdmx:Glossary.Notification.WebHome]] can be user (email) or application (URL).
Artur 1.1 93
94 == 8.6 Data and Metadata Discovery ==
95
96 === 8.6.1 Choreography ===
97
Helena 2.1 98 Discovering published data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] involves interaction with the Registry to:
Artur 1.1 99
Helena 2.1 100 * optionally (but usually) browsing a subject matter domain [[category scheme>>doc:sdmx:Glossary.Category scheme.WebHome]] to find [[Dataflow>>doc:sdmx:Glossary.Dataflow.WebHome]] Definitions (and hence [[Data Structure Definitions>>doc:sdmx:Glossary.Data structure definition.WebHome]]) and [[Metadataflows>>doc:sdmx:Glossary.Metadataflow.WebHome]] (and hence [[Metadata Structure Definitions>>doc:sdmx:Glossary.Metadata structure definition.WebHome]]) which structure the type of data and/or [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] being sought
101 * build a query, in terms of the selected [[Data Structure Definition>>doc:sdmx:Glossary.Data structure definition.WebHome]] or [[Metadata Structure Definition>>doc:sdmx:Glossary.Metadata structure definition.WebHome]], which specifies what data are required and submitting this to a service that can query an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] which will return a list of (URLs of) data and [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] files and databases which satisfy the query
102 * processing the query result set and retrieving data and/or [[reference metadata>>doc:sdmx:Glossary.Reference metadata.WebHome]] from the supplied URLs
Artur 1.1 103
Helena 2.1 104 [[image:SDMX_2-1_User_Guide_draft_0-1_html_51f6d84398cd8ba3.jpg||data-xwiki-image-style-alignment="center" height="453" width="510"]]
Artur 1.1 105
106 (% style="text-align: center;" %)
107 **{{id name="image_22"/}}Figure 22: Schematic of Data and Metadata Discovery and Query in the SDMX-IM**
108
109 === 8.6.2 Example ===
110
111 A worked example of this scenario can be found in Annex 4 – Data Reader and Data Writer Functions.
112
113 == 8.7 Patterns for Data and Metadata Exchange ==
114
Helena 2.1 115 [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] identifies three basic process patterns and two modes (push and pull) regarding the exchange of statistical data and metadata.
Artur 1.1 116
Helena 2.1 117 [[image:SDMX_2-1_User_Guide_draft_0-1_html_b247734721100020.png||data-xwiki-image-style-alignment="center" height="547" width="680"]]
Artur 1.1 118
Helena 2.1 119 [[image:SDMX_2-1_User_Guide_draft_0-1_html_2a1b6d63f93d6579.png||data-xwiki-image-style-alignment="center" height="300" width="680"]]
Artur 1.1 120
121 (% style="text-align: center;" %)
122 **{{id name="image_23"/}}Figure 23: The Three Basic Patterns of Data and Reference Metadata Exchange**
123
124 In the //push// mode the data/metadata are sent by the reporter to the collector.
125
Helena 2.1 126 In the //pull// mode the [[data consumer>>doc:sdmx:Glossary.Data consumer.WebHome]] retrieves the data from the reporter's web server. The data may be made available for download in an [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]-conformant file, or they may be retrieved from a database in response to an [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]-conformant query, via a web service running on the reporter's server. In both cases, the data are made available to any organisation requiring them, in formats which ensure that data are consistently described by appropriate metadata, whose meaning is common to all parties in the exchange.
Artur 1.1 127
Helena 2.1 128 Data sharing using the pull mode is well adapted to the database-driven and data [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] architectures. Both architectures provide the best benefits for the data producers because they can lessen the burden of publishing the data to multiple counterparties.
Artur 1.1 129
Helena 2.1 130 In both architectures, it is necessary to implement a [[notification>>doc:sdmx:Glossary.Notification.WebHome]] mechanism, providing provisioning metadata in order to alert collecting organisations that data and [[metadata sets>>doc:sdmx:Glossary.Metadata set.WebHome]] are made available by [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]], details about the online mechanism for getting data (for example, a queryable online database or a simple URL) and (% style="color:#e74c3c" %)constraints(%%) regarding the allowable content of the [[data sets>>doc:sdmx:Glossary.Data set.WebHome]] that will be provided.
Artur 1.1 131
Helena 2.1 132 At the heart of a data-sharing architecture there is often an [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]]. This is a central location where structural and provisioning metadata can be found. In fact all the users/applications that need to access data can query the registry in order to know what [[data sets>>doc:sdmx:Glossary.Data set.WebHome]] and [[metadata sets>>doc:sdmx:Glossary.Metadata set.WebHome]] are available from [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]], and how to access them.
Artur 1.1 133
134 === 8.7.1 The Database-driven Architecture ===
135
Helena 2.1 136 The database-driven architecture is implemented by those collecting organisations that periodically need to fetch the data and to load them in their database. In general a batch process is used in order to automate the flow in which a whole or a partial [[dataset>>doc:sdmx:Glossary.Data set.WebHome]], including incremental updating, is used.
Artur 1.1 137
138 From the data management point of view, the pull approach within a database-driven architecture includes the following steps:
139
Helena 2.1 140 1) when new data are available, the [[data provider>>doc:sdmx:Glossary.Data provider.WebHome]] should:
Artur 1.1 141
Helena 2.1 142 a) create an [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] file containing the new data set
Artur 1.1 143
144 __**or**__
145
Helena 2.1 146 b) provide a web service (WS) that builds [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] messages upon request.
Artur 1.1 147
Helena 2.1 148 In both cases a [[provision agreement>>doc:sdmx:Glossary.Provision agreement.WebHome]] must be in place.
Artur 1.1 149
Helena 2.1 150 2) the data collector Pull Requestor is notified of the new registration. Note that it is common for a Registry to provide an RSS mechanism, though this is nit a formal part of the [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] standard. The data collector then:
Artur 1.1 151
Helena 2.1 152 a) retrieves the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] file from the specified URL, if it resides in a URL,
Artur 1.1 153 __**or**__
154
Helena 2.1 155 b) uses the Query Message or REST Query included in the feed to query the [[data provider>>doc:sdmx:Glossary.Data provider.WebHome]] web service, if the data are prepared by the [[data provider>>doc:sdmx:Glossary.Data provider.WebHome]] web service.
Artur 1.1 156
Helena 2.1 157 [[image:SDMX_2-1_User_Guide_draft_0-1_html_ba1159b7bd2e98c4.png||data-xwiki-image-style-alignment="center" height="410" width="469"]]
Artur 1.1 158
159 (% style="text-align: center;" %)
160 **{{id name="image_24"/}}Figure 24: Database-driven Architecture**
161
162 === 8.7.2 The Data Hub Architecture ===
163
Helena 2.1 164 The data [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] architecture consists of an accessible system providing involved actors with the following services:
Artur 1.1 165
Helena 2.1 166 * [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]] can:
Artur 1.1 167
Helena 2.1 168 *
169 ** notify the [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] of new sets of data and corresponding [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] ([[measures>>doc:sdmx:Glossary.Measure.WebHome]], [[dimension>>doc:sdmx:Glossary.Dimension.WebHome]], [[code lists>>doc:sdmx:Glossary.Code list.WebHome]], etc.);
Artur 1.1 170 ** make data available directly from their systems through a querying system.
171
172 * data users can:
173
Helena 2.1 174 *
175 ** browse the [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] to define a [[dataset>>doc:sdmx:Glossary.Data set.WebHome]] of interest via the above [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]];
176 ** retrieve the [[dataset>>doc:sdmx:Glossary.Data set.WebHome]] from the [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]].
Artur 1.1 177
Helena 2.1 178 From the data management point of view, the [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] is also based on agreed hypercubes or [[datasets>>doc:sdmx:Glossary.Data set.WebHome]], but here the hypercubes or [[datasets>>doc:sdmx:Glossary.Data set.WebHome]] are not sent to the central system. Instead the following process operates:
Artur 1.1 179
Helena 2.1 180 1. a user identifies a [[dataset>>doc:sdmx:Glossary.Data set.WebHome]] through the web interface of the central [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] using the [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]], and requests it;
181 1. the central [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] translates the user request in one or more queries and sends them to the related [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]]’ systems;
182 1. [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]]’ systems process the query and send the result to the central [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] in a standard format;
183 1. the central [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] puts together all the results originated by all interested [[data providers>>doc:sdmx:Glossary.Data provider.WebHome]]’ systems and presents them in a human readable format.
Artur 1.1 184
Helena 2.1 185 [[image:SDMX_2-1_User_Guide_draft_0-1_html_1c9984b4c53f1c50.png||data-xwiki-image-style-alignment="center" height="335" width="383"]]
Artur 1.1 186
187 (% style="text-align: center;" %)
188 **{{id name="image_25"/}}Figure 25: Data Hub Architecture**
189
190 === 8.7.3 Data Producer Architectures ===
191
Helena 2.1 192 In order to implement an [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] IT architecture for data-sharing using the pull mode, several steps must be accomplished by a data producer and several questions must be considered:
Artur 1.1 193
Helena 2.1 194 1. which [[statistical domains>>doc:sdmx:Glossary.Statistical subject-matter domain.WebHome]] are involved and where are the data currently stored?
195 1. which [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] are involved, and where are they currently stored?
196 1. what is the business process behind the [[data flow>>doc:sdmx:Glossary.Dataflow.WebHome]] involved in the exercise?
197 1. will the [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] data producer architecture be part of a data warehouse architecture, of a data [[hub>>doc:sdmx:Glossary.Hub (dissemination architecture).WebHome]] architecture or of both?
Artur 1.1 198
Helena 2.1 199 Generally data and [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] that will be involved in the new [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]] information system are stored either in databases or in files. The two cases lead to different architectural approaches:
Artur 1.1 200
Helena 2.1 201 * a. data and [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] are already stored in a database and it is necessary to build suitable software interfaces in order to make the system “[[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]-compliant”.
202 * b. a separate special-purpose database is set up to store data and [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]]. This database will be designed with the main aim of being part of an SDMXcompliant system. In this case the database can be modelled using the [[SDMX Information Model>>doc:sdmx:Glossary.SDMX Information Model.WebHome]]. An [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] is, of course, such a database.
Artur 1.1 203
204 Both cases make it possible to:
205
Helena 2.1 206 * extract [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] files from the database that will be made available to be pulled by data collectors;
Artur 1.1 207 * allow the database to be queried directly through a web service.
208
Helena 2.1 209 Whichever type of data producer architecture is involved, a mapping process between [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]] may be necessary, as explained in 5.3.
Artur 1.1 210
211 == 8.8 Registry Interfaces ==
212
213 === 8.8.1 Registry Interfaces ===
214
215 The Registry Interfaces are:
216
217 * Notify Registry Event
Helena 2.1 218 * Submit [[Subscription>>doc:sdmx:Glossary.Subscription.WebHome]] Request
219 * Submit [[Subscription>>doc:sdmx:Glossary.Subscription.WebHome]] Response
Artur 1.1 220 * Submit Registration Request
221 * Submit Registration Response
222 * Query Registration Request
223 * Query Registration Response
Helena 2.1 224 * Query [[Subscription>>doc:sdmx:Glossary.Subscription.WebHome]] Request
225 * Query [[Subscription>>doc:sdmx:Glossary.Subscription.WebHome]] Response
Artur 1.1 226 * Submit Structure Request
227 * Submit Structure Response
228
Helena 2.1 229 Applications communicate with the Registry using either the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] Registry Interface message (which contains an XML element that defines the actual interface) or individual messages – one for each interface.
Artur 1.1 230
231 In more technical terms the Registry interfaces are invoked in one of two ways:
232
Helena 2.1 233 1. The interface is the name of the root node of the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] document.
234 1. The interface is invoked as a child element of the RegistryInterface message where the RegistryInterface is the root node of the [[SDMX-ML>>doc:sdmx:Glossary.SDMX-ML.WebHome]] document.
Artur 1.1 235
Helena 2.1 236 In addition to these interfaces the Registry must support a mechanism for querying for [[structural metadata>>doc:sdmx:Glossary.Structural metadata.WebHome]].
Artur 1.1 237
Helena 2.1 238 All these interactions with the Registry – with the exception of Notify Registry Event – are designed in pairs. The first document (the one which invokes the [[SDMX Registry>>doc:sdmx:Glossary.SDMX Registry.WebHome]] Interface) is a “Request” document. The message returned by the interface is a “Response” document.
Artur 1.1 239
Helena 2.1 240 It should be noted that all interactions are assumed to be synchronous, with the exception of Notify Registry Event. This document is sent by the [[SDMX>>doc:sdmx:Glossary.Statistical data and metadata exchange.WebHome]]-Registry to all subscribers whenever an even occurs to which any users have subscribed. Thus, it does not conform to the request-response pattern, because it is inherently asynchronous.