SORES er designet med opslags-performance som den primære drivfaktor, og gør derfor brug af en memory-cache, der skal initialiseres inden den kan besvare requests - og når der er opdateringer i datagrundlaget.
Data-strukturen, der bærer response-data, ligger i pakken dk.sds.nsp.sor.sores.model
, mens logikken i komponenten er inddelt i følgende lag:
Servlet
Servlet-laget ligger i pakken dk.sds.nsp.sor.sores.ws
og er ansvarlig for at håndtere GET-requests og for at udpakke JSON-requestparametre fra POST-requests, kalde servicen i service-laget og formattere svaret som en JSON-struktur i responset.
Service
Service-laget ligger i pakken dk.sds.nsp.sor.sores.service
og er ansvarlig for at hente de forespurgte data fra database-laget.
Cache
Cache-håndteringen ligger i pakken dk.sds.nsp.sor.sores.cache
og kan enten bruge en database eller en XML-struktur som datagrundlag.
Database-strategien baserer sig på SOR2-indlæseren, der ved ibrugtagningen af SORES ikke var tilgængelig i en endelig version. XML-strategien baserer sig på en offentligt tilgængelig eksport fra SOR-projektet, der i modsætning til database-strategien ikke vedligeholder nogen form for historik.
Data gemmes i cachen i hashmaps, med nøglerne hhv. SHAKId, SORId, ParentSORId, ProviderId, CVR og EntityTypeName. Disse maps muliggør effektive opslag på servicen.
Database
Database-laget ligger i pakken dk.sds.nsp.sor.sores.db
. Her foregår opslag i databasen via datasourcen, og data pre-loades i en cache designet til hurtigt at kunne fremfinde de forespurgte data.
Data indlæses fra databasen ved et reload-request, hvis seneste database-timestamps er nyere end seneste cachen-timestamp.
XML
XML-laget ligger i pakken dk.sds.nsp.sor.sores.cache.xml
. System-properties bestemmer stierne til de XML-filer, der parses ved reload.
Data indlæses fra filerne ved et reload-request, hvis timestampet i sor-træet er nyere end det senest indlæste.