Architecture and Components
Concept and architecture of the SIDRE components
Categories:
graph TD subgraph SIDRE SIDRE_INDEX end SIDRE_INDEX[**Central Index**] --> repo1[**Repo 1** Edu-Sharing abc] SIDRE_INDEX --> repo2[**Repo 2** DSpace xyz] SIDRE_INDEX --> repo3[**Repo 3** sitemap] SIDRE_INDEX --> repo4[**Repo 4** OAI-PMH] SIDRE_INDEX --> repo5[**Repo 5** Json-API] SIDRE_INDEX --> repo6[...]
Central Index
The metadata of the individual repositories is collected in a central index and made searchable. A process regularly (e.g. daily) harvests the metadata of the repositories, or generally data sources that offer metadata, and indexes them.
Components
- ETL: The ETL-module (extract, transform, load) connects to the individual repositories and fetches metadata updates according to a configured schedule (e.g. daily).
- Import Scripts: Another channel to connect individual metadata repositories and import metadata according to a configured schedule (e.g. daily). Contains scripted imports (e.g. Python)
- API / Backend: Provides interfaces to retrieve data from the index (external) and to import / update data into the index (internal). A read-only user is used to retrieve data. When creating / updating the data, the data is written into an elasticsearch index.
- Frontend: Website that displays the data from the index and offers the possibility to search
graph LR Repo1[**Repo1** OAI-PMH] <--> ETL_OAI-Client Repo2[**Repo2** Sitemap] <--> ETL_Sitemap-Client Repo2[**Repo2** Sitemap] <--> Import_Scripts_Sitemap-Client Repo3[**Repo3** Individual] <--> Import_Scripts_individual-Client subgraph ETL ETL_OAI-Client[OAI Client] <--> ETL_Scheduler[Scheduler] ETL_Sitemap-Client[Sitemap Client] <--> ETL_Scheduler[Scheduler] ETL_Source-Config[Source Config] end subgraph Import_Scripts[Import Scripts] Import_Scripts_individual-Client[individual Client] <--> Import_Scripts_Scheduler[Scheduler] Import_Scripts_Sitemap-Client[Sitemap Client] <--> Import_Scripts_Scheduler[Scheduler] Import_Scripts_Source-Config[Source Config] end ETL --> Backend_Write_Endpoint Import_Scripts --> Backend_Write_Endpoint subgraph Backend[Backend] Backend_Write_Endpoint[Create Update Delete] --> Backend_Service[Service] Backend_Service[Service] <--> Backend_Index[(Elasticsearch)] Backend_Service[Service] --> Backend_Read_Endpoint[Query Service] end subgraph Frontend Search Filter Results end Frontend --> Backend_Read_Endpoint