Om databaser

Databaser utgör den centrala infrastrukturen för datahanteringen i våra organisationer. För oss informationsarkitekter är de därmed viktiga att förstå och arbeta med. Relationsdatabasen är standardvalet, men ibland finns det speciella behov som motiverar en annan typ.

Databaser – infrastrukturen för datahantering

För att hantera data i våra organisationer använder vi databaser. Den dominerande typen är relationsdatabasen, men det finns också andra typer för särskilda ändamål. I den här artikeln ska vi titta på relationsdatabasens styrkor och på när andra typer av databaser kommer till sin rätt.

För att bygga, hantera och använda en databas finns det olika produkter på marknaden, så kallade databashanteringssystem. Det finns olika databashanteringssystem, anpassade för olika typer av databaser. Den helt dominerande databastypen, som har funnits med oss länge, är relationsdatabasen (Relational Database, RDB). Den är så vanlig att vi kanske inte alltid tänker på att det är en speciell typ av databas med sina särskilda egenskaper.

Så låt oss börja med att presentera denna verkliga arbetshäst i våra organisationer.

Relationsdatabaser

Det var IBM-forskaren Edgar F. Codd som 1970 introducerade relationsmodellen i forskningsartikeln A Relational Model of Data for Large Shared Data Banks. Men det dröjde till det sena 1980-talet innan det fanns processorkraft för att på allvar ersätta äldre typer som hierarkiska databaser och nätverksdatabaser.

Sedan dess har relationsdatabaser dominerat stort. Av alla aktiva installationer i organisationer världen över bedöms 70–80 procent vara av den typen. Senare har det kommit andra typer av databaser som bygger på andra strukturer. Jag beskriver dem översiktligt längre fram i artikeln.

Relationsdatabasernas dominans beror inte bara på att de är välkända, välbeprövade och standardiserade datahanteringsplattformar med många viktiga funktioner. Kanske ännu viktigare är att de har de egenskaper som behövs för de flesta vanliga former av administrativ datahantering i våra organisationer.

Inte minst har datahanteringsspråket Structured Query Language (SQL) haft stor betydelse. Det är ett standardspråk för att definiera, administrera, manipulera och ställa frågor mot data i relationsdatabaser. SQL introducerades av IBM år 1970 och standardiserades av ANSI 1986.
Relationsdatabaser är så nära förknippade med SQL att de på engelska ofta benämns ”SQL databases” (förkortningen SQL uttalas ofta i engelsktalande sammanhang som ”Sequel”).

De vanligaste relationsdatabashanterarna på marknaden är MySQL, PostgreSQL, Microsoft SQL Server och Oracle Database.

Rader och kolumner

Det som utmärker relationsdatabaser är att data lagras i tabeller med rader och kolumner. Vissa kolumner är avsedda för nyckelvärden som kopplar till relaterade rader i andra tabeller.

Tabell

Representerar ett enskilt begrepp eller en entitet, det vill säga en klass av företeelser, som Kund eller Produkt.

Kolumn

Definierar ett attribut (fält) för den klass av företeelser som tabellen representerar.

Rad

Innehåller en individuell datapost som representerar en förekomst av företeelsen, till exempel en specifik kund eller produkt.

Primärnyckel

En eller flera kolumner som tillsammans unikt identifierar den förekomst eller individuella dataposten som raden representerar.

Främmande nyckel

En eller flera kolumner som tillsammans refererar till en förekomst eller individuell datapost i en annan tabell.

Det är viktigt att notera att relationsdatabaser skapas och hanteras med fördefinierade scheman. Det betyder att alla data som läses in måste följa detta schema exakt. Därför kan en relationsdatabas i grunden inte hantera ostrukturerade data, alltså data som inte följer ett visst förutbestämt format. Det är både en styrka och en svaghet. Styrkan ligger i datakvalitet och enkel hantering av administrativa och transaktionella uppgifter.

Med detta sagt har vanliga relationsdatabashanterare ofta tillägg som gör det möjligt att hantera enklare former av ostrukturerade data.

Relationsdatabasens styrkor

Relationsdatabaser har många styrkor. En del beror på själva dataformatet, andra på att tekniken och produkterna varit dominerande och utvecklats under ett halvsekel.

1. Strukturerad datahantering

Strukturen med rader och kolumner ger ett konsistent och förutsägbart dataformat som gör det enkelt att skriva och läsa data. Det gör det lättare att organisera och hantera data effektivt och minskar risken för fel.

2. Dataintegritet och korrekthet

Strukturen med primärnycklar och främmande nycklar, tillsammans med möjligheten att definiera regler och villkor, till exempel unique constraints, bidrar till att säkerställa dataintegritet och korrekthet.

3. Konsistens

Data får aldrig bli motsägelsefulla. Ofta behöver man göra transaktioner, till exempel ta ut ett belopp från ett konto och sätta in det på ett annat. Det är två olika operationer som utförs efter varandra, men de måste alltid hållas ihop som en enhet.

Om något går fel mitt i transaktionen, så att den andra operationen inte kan genomföras, till exempel ett driftsavbrott, måste den första operationen ovillkorligen backas tillbaka. Relationsdatabaser har inbyggda mekanismer som garanterar detta villkor. De bygger på principer som brukar sammanfattas som ACID-transaktioner (Atomicity, Consistency, Isolation, Durability).

4. Åtkomstsäkerhet

Relationsdatabasplattformar har robusta funktioner så att en administratör kan definiera vem som kan komma åt data. Det omfattar användarautentisering (att säkerställa att användaren är den hen säger sig vara), rollbaserad åtkomst (för att definiera åtkomst för roller i stället för enskilda personer) samt kryptering.

5. Stöd för komplexa databasfrågor

Med SQL kan användare ställa frågor som involverar flera tabeller, filtrera data och aggregera resultat.

6. Skalbarhet och prestanda

Dagens relationsdatabasplattformar är designade för att hantera stora datavolymer och stödja många samtidiga användare. Indexering och frågeoptimering underlättar när datamängderna blir stora. Det finns också möjligheter att klustra och spegla databasinstallationer för att uppnå högre tillgänglighet än vad en enskild installation kan ge.

7. Backup och återställning

Det finns funktioner för regelbunden säkerhetskopiering, både full backup (alla data), inkrementell backup (alla ändringar sedan senaste backup) och differentiell backup (alla ändringar sedan senaste full backup).

8. Normalisering av data

Relationsdatabaser främjar normalisering, en metod för att designa datastrukturer så att redundans (duplicering i data) minimeras. Detta är viktigt för effektiv och säker datahantering, särskilt genom att minska risken för inkonsistens vid uppdateringar.

Sammanfattningsvis kan man säga att relationsdatabaser är särskilt väl lämpade för att hantera transaktioner mellan parter, något som präglar en stor del av de vanliga administrativa uppgifterna i verksamheter.

Andra typer av databaser

Relationsdatabasen må vara standardvalet, men ibland finns behov av andra typer av databaser. Under slutet av 00-talet, när kostnaden för datalagring sjönk kraftigt, fick så kallade NoSQL-databaser ett genombrott. De lagrar och hanterar data på andra sätt än relationsdatabaser och används för behov där relationsdatabaser har begränsningar. Det kan vara extrem skalbarhet i data- eller transaktionsvolym eller att man behöver hantera ostrukturerade data eller flexibla datamängder som saknar bestämda scheman som kan uttryckas i tabellform. Det kan till exempel vara poster i sociala medier, bilder, ljud- och videofiler och kartor.

Idag utläses NoSQL inte som ”No SQL” utan som ”Not only SQL” eftersom många NoSQL-databashanterare också erbjuder hantering av strukturerade data och har frågespråk som liknar SQL.

De huvudsakliga typerna av NoSQL-databaser är följande:

Key-Value Stores

Har en enkel typ av datastruktur där varje post lagrar en unik nyckel och ett associerat värde. Lagrade värden kan vara enkla eller komplexa. Den enkla strukturen gör dem extremt snabba och användbara till exempel för att cacha (mellanlagra) användarsessioner. Exempel: Amazon DynamoDB, Redis och ScyllaDB.

Dokumentdatabaser

Lagrar semistrukturerade data som till exempel JSON-objekt (JavaScript Object Notation). Varje dokument är ett objekt som hanteras som en post och kan i sig innehålla olika typer av datastrukturer, till exempel textsträngar, numeriska värden, boolska värden, arrayer och även andra nästlade objekt. Exempel: MongoDB och Couchbase.

Wide-column stores

Lagrar data i tabeller, rader och kolumner, men till skillnad från relationsdatabaser kan olika rader ha olika uppsättningar kolumner. Exempel: Apache Cassandra, Apache HBase och ScyllaDB.

Grafdatabaser

Organiserar data i noder och kanter. Noder representerar typiskt personer, platser och saker, medan kanter representerar relationer mellan noder. Grafdatabaser har sin styrka då det gäller att representera saker som har många relationer till varandra och där typer av relationer och relationsmönster inte är särskilt uppenbara från början. Exempel: Neo4j och Amazon Neptune.

Multimodel-databaser

Stödjer fler än en NoSQL-datamodell inom en och samma databasinstans, så att utvecklare kan välja modell och även kombinera modeller, baserat på tillämpningens behov. Exempel: Cosmos DB och ArangoDB.

Peter Tallungs

26.10.01