Distribuerade datasystem
Datorer och databaser finns snart sagt överallt omkring oss och vi påverkas tydligt när de inte fungerar som vi vill. Genom att tumma på strikthetskraven i vissa datorsystem är det möjligt att få kortare fördröjningar och minska deras känslighet för opassande miljöer. Detta samtidigt som materialkostnaderna minskar. Men är det värt besväret?

Det är idag svårt att hitta datorsystem som inte använder sig av någon form av databas. Databaser kan anta många olika skepnader, från små kundregister i privata företag till de enorma datalager som används för genetisk information inom biologin. Vanligtvis är databasen centraliserad: All data finns på ett ställe och datorerna (processorerna) som ska komma åt informationen kopplas upp via någon form av kommunikationsmedium (se Figur 1).

Figur 1 – En centraliserad databas.

Detta är definitivt den enklaste lösningen för system där många processorer behöver tillgång till samma databas. Det finns dock problem med den här typen av databaser.
Låt säga att en central databas används för att lagra information om var exempelvis alla mobiltelefoner i landet befinner sig. Mobiltelefonsystemet skulle då innehålla en mängd processorer (basstationerna i mobiltelefonnätet) som alla måste komma åt den centrala databasen. Mycket tid kommer i ett sådant system att gå åt enbart för att skicka information över kommunikationsmediet.
Ett annat problem är att den centrala databasen blir en känslig punkt i systemet. Om vår tänkta centrala mobiltelefondatabas går sönder skulle alla basstationer (och alltså alla mobiltelefoner) i landet sluta fungera tills databasen reparerades.
En bättre lösning för system där ovanstående problem gör sig påminda är att istället använda en distribuerad databas. Filosofin bakom en sådan går ut på att eftersom det är olämpligt att låta processorerna komma till databasen, så får istället databasen komma till processorerna. Varje processor har en egen databas (kallad en ”nod” i databasen) som innehåller den data som just den processorn behöver (se Figur 2).

Figur 2 – En distribuerad databas

Sanning och konsistens
I många distribuerade databaser behöver flera av de inblandade processorerna ha tillgång till samma information, som då måste finnas lagrad på flera noder. Exempel:
•	Datorerna på alla bankkontor måste ha dina kontouppgifter för att du ska kunna ta ut pengar var som helst
•	Basstationerna i vårt mobiltelefoniexempel måste veta vilka telefoner som finns i vilket täckningsområde.
De processorer som använder datan måste vara överens om vilket värde den har; om någon uppdaterar den måste övriga noder göras medvetna om ändringen. Detta kallas att hålla datan konsistent.
Vanligtvis måste alla noder som innehåller kopior av data som ska ändras kontaktas före uppdateringen. Detta sker för att försäkra sig om att datan inte ändras samtidigt av flera processorer, något som inte brukar ställa till bekymmer i små system. Problem kan dock uppstå när den distribuerade databasen innehåller många noder med gemensam data, eftersom det då blir tidskrävande att kontakta alla vid varje uppdatering. Kommunikationsavbrott kan ge svåra konsekvenser; du skulle förmodligen bli irriterad om du inte kunde ta ut pengar i Skåne på grund av ett kabelbrott i Kiruna…
En lösning på detta problem är att tillåta enskilda datorer att uppdatera sina lokala data utan att behöva kontakta övriga noder i databasen. Detta innebär dock att två noder kan vara oense om ett visst datavärde. Därför krävs metoder för att upptäcka och lösa den typen av konflikter.
I det ARTES-projekt om distribuerade databaser som bedrivs på Högskolan i Skövde undersöks vilka typer av system som kan dra nytta av den här typen av databas. Högskolan vill också utforska hur valet av konfliktlösningsmetod påverkar hur förlorad data återställs när en nod av någon anledning slutat fungera. Utöver detta undersöks också om det är möjligt att göra en distribuerad databas som helt lagras i primärminne (och således inte lagrar data på någon form av disk). Detta skulle nämligen göra det möjligt att använda teknikerna i miljöer med mycket vibrationer eller strålning såsom gruvor och rymdfärjor, samtidigt som det gör systemen billigare att bygga.
Sanny Gustavsson
sanny@ida.his.se