Skip to main content Skip to footer

Dagens Løsning

Arkitekturskisse dagens løsning Skissen viser en oversikt over arikitekturer bak nettsiden Troms i tall. Denne arkitekturen er hensiktsmessig å dele opp i to, forvaltning av statistikkdata(1) og forvalting/drift av nettside(2).

R-scripts, 1A, strukturerer og legger innsamlet statistikkdata i database 1B. Webtjenesten 1C bruker SQL-spørringer for å hente ut og strukturere statistikkdataen i JSON som den tilgjengeliggjør i et REST-api.

Drift og forvaltning av webapplikasjonen er satt opp med verktøyet Umbraco og Uskinned. Umbraco gir en ferdig oppsatt server og database, 2B, som server en administrasjons-nettside, 2A, og en hovednettside for produktet, 2C. Uskinned er en innkjøpt tilleggsmodul i Umbraco som gir et grensesnitt og komponentbibliotek for å designe nettsiden uten å skrive web-kode. Det er mulig å legge inn egen javascriptkode(web-kode) i komponentene for spesial-tilpassninger og det er det som brukt i denne løsningen for håndtering av statistikkdatene og visning av grafene. Denne javascriptkoden kjører og oppererer fra hovednettsiden når den vises i en nettleser. Javascriptkoden importerer biblioteket/module Highchart til å generere og vise grafer på hovednettsiden basert på konfigurasjon av denne skrevet i javascriptkode.

Detaljer

Statistikkdata

Strukturen på statistikkdataen i databasen 1B bestemmes av R-scriptene som legger den inn. Webtjenesten(1C) bruker *hardkodet SQL-Queries basert på denne strukturen til å hente statistikkdaten fra databasen og strukturer den igjen i en JSON-tekst. Det er satt opp en SQL-Query for hver temaside på Tall i Troms-nettsiden som trigges og gir ut relevant statistikkdata gjennom hvert sitt REST-endepunkt.

Simplifisert eksempel på SQL-Query:

sql SELECT FROM [Befolkningstall2024].[dbo].[Befolkningsvekst_mm] where kommune=5423 and statistikkvariable='folkemengde' JOIN SELECT FROM [Befolkningstall2024].[dbo].[Befolkningsvekst_mm] where kommune=5423 and statistikkvariable='Levende' JOIN SELECT FROM [Befolkningstall2024].[dbo].[Befolkningsvekst_mm] where kommune=5423 and statistikkvariable='Dode' ...

Utsnitt av JSON-tekst data:

json { "kommunenummer": "5532", "kommunenavn": "Balsfjord", "Hc_key": "no-tr-5532", "Population": [ 7485, 7467, ... ], "Living": [ 148, 157, ... ], "Dead": [ 59, 68, ... ] ... }`

Javascriptkoden som kjører på hovednettsiden bruker REST-endepunktene og mottar JSON-teksten med statistikkdataen. Før koden konfigurerer og setter opp grafene ved hjelp av Highchart, strukturerer den JSON-dataen slik at den passer bedre inn i konfigurasjone til Highchart. Denne struktereringen baserer seg på JSON-data strukturen som ble fastsatt av webjenesten bak REST-APIet.

*Hardkodet betyr at data eller definisjoner er skrevet i koden til ett program istedet for at de kommer fra en ekstern kilde. Det betyr at de bare kan endres ved å skrive ny kode og kompilere programmet på nytt.

Utfordringer med dagens løsning

Struktur på statistikkdata er tett koblet opp med koden i løsningen. Når det gjøres endringer på navngiving eller oppsett av tabeller og databaser med statistikkdata - krever det at det gjøres kodeendringer på webtjenesten(1C). Det vil sannsynligvis og gjøre at JSON-dataen som webtjenesten lager endrer seg, som igjen gjør at javascriptkoden også må endres på.

Design og oppsett av grafer krever programmeringskunnskap. Når ny data skal visualiserers i grafer på hovednettsiden, må det gjøres endringer i koden på webtjenesten og i javascript for å få til dette.