En databas är ett system för att lagra och hantera data (vilken typ av information som helst). En databas kan innehålla allt från en enkel adresslista till stora mängder affärsdata, sensordata eller innehåll för webbplatser och appar.

En databasmotor kan sortera, ändra eller tillhandahålla informationen i databasen. Själva informationen kan lagras på många olika sätt; före digitala datorer användes kortfiler, tryckta böcker och andra metoder. Nu lagras de flesta uppgifter i datafiler. Databasmotorn (eller DBMS, Database Management System) är programvaran som ansvarar för att spara, hämta, uppdatera och skydda dessa filer.

Ett databassystem är ett datorprogram för hantering av elektroniska databaser. Ett mycket enkelt exempel på ett databassystem är en elektronisk adressbok. Databassystem kan vara fristående program (t.ex. SQLite) eller klient–server-system (t.ex. MySQL, PostgreSQL, Oracle).

Uppgifterna i en databas är organiserade på något sätt. Innan det fanns datorer förvarades uppgifter om anställda ofta i arkivskåp. Det fanns vanligtvis ett kort för varje anställd. På kortet kunde man hitta information som t.ex. den anställdes födelsedatum eller namn. En databas har också sådana "kort". För användaren kommer kortet att se likadant ut som förr i tiden, fast den här gången kommer det att finnas på skärmen. För datorn kan informationen på kortet lagras på olika sätt. Var och en av dessa metoder kallas för en databasmodell. Den vanligaste databasmodellen kallas relationsdatabasmodellen. Den använder relationer och uppsättningar för att lagra data. Normala användare som talar om databasmodellen kommer inte att tala om relationer, utan i stället om databastabeller.

Vad gör en databasmotor och ett databassystem?

  • Lagring: organiserar data på skiva eller i minne.
  • Frågor och hämtning: tillåter att data söks upp och hämtas genom språk som SQL eller API:er.
  • Uppdateringar: hanterar insättning, ändring och borttagning av poster.
  • Transaktioner och integritet: säkerställer att operationer sker helt eller inte alls (ACID-egenskaper i relationsdatabaser).
  • Indexering: skapar index för att snabba upp sökningar.
  • Åtkomstkontroll och säkerhet: hanterar användare, rättigheter och kryptering.
  • Säkerhetskopiering och återställning: ger mekanismer för backup och återställning efter fel.
  • Replikering och skalbarhet: möjliggör kopiering och distribution av data för hög tillgänglighet och bättre prestanda.

Vanliga databasmodeller

Olika modeller passar olika behov. Här är några vanliga:

  • Relationsdatabas (RDBMS): data organiseras i tabeller med rader och kolumner. Nyckelbegrepp är primärnyckel, främmande nyckel, normalisering och SQL. Exempel: MySQL, PostgreSQL, SQLite, Oracle.
  • Dokumentdatabas: lagrar dokument (ofta JSON-liknande strukturer). Bra för flexibla scheman. Exempel: MongoDB, CouchDB.
  • Nyckel–värde (Key–Value): enkel modell för mycket snabba läs-/skrivoperationer. Exempel: Redis, DynamoDB.
  • Kolumnfamiljsdatabas: optimerad för stora mängder data och snabba aggregeringar över kolumner. Exempel: Cassandra, HBase.
  • Grafdatabas: modellerar relationer mellan entiteter som noder och kanter. Bra för sociala nätverk, rekommendationer och grafalgoritmer. Exempel: Neo4j, JanusGraph.
  • Hierarkisk och nätverksmodell: äldre modeller där data organiseras i träd eller nätverk; används fortfarande i vissa specialfall.

Nyckelbegrepp i relationsdatabaser

  • Tabeller: motsvarar entitetstyper (t.ex. kunder, produkter).
  • Rader (poster): enskilda objekt i tabellen.
  • Kolumner: attribut eller fält som beskriver raderna.
  • Primärnyckel: unik identifierare för en rad.
  • Främmande nyckel: referens till primärnyckeln i en annan tabell för att modellera relationer.
  • Join: operation som kombinerar rader från flera tabeller baserat på relationer.
  • Normalisering: process för att minska redundans och förbättra dataintegritet.

När ska man välja vilken typ av databas?

  • Relationsdatabas: när datamodellen är väldefinierad, integritet och transaktioner är viktiga.
  • Dokumentdatabas: när schemat är flexibelt eller när objekt naturligt representeras som dokument.
  • Key–Value: för cachning eller enkla, snabba läs/skrivbehov.
  • Grafdatabas: för komplexa relationer och grafberäkningar.
  • Kolumnfamilj: vid mycket stora datamängder med behov av snabb aggregering per kolumn.

Praktiska exempel och populära system

Några välkända databashanterare är MySQL, PostgreSQL, SQLite, Oracle Database, Microsoft SQL Server (relationsdatabaser), MongoDB (dokument), Redis (key–value), Cassandra (kolumnfamilj) och Neo4j (graf). Valet påverkas av krav på skalbarhet, konsistens, prestanda och kostnad.

Säkerhet, prestanda och drift

Att drifta databaser innebär planering för:

  • Säkerhetskopior och återställning (backup/restore).
  • Övervakning av prestanda (latens, genomströmning).
  • Indexstrategier och optimering av frågor.
  • Åtkomstkontroll och kryptering (av data i vila och under överföring).
  • Replikering och failover för hög tillgänglighet.

Sammanfattning

En databas är ett organiserat sätt att lagra information, medan en databasmotor/databassystem är programvaran som hanterar data, sökningar, uppdateringar och säkerhet. Olika databasmodeller (relations-, dokument-, key–value, kolumnfamilj, graf osv.) passar olika användningsfall. Vid val av databas bör man väga faktorer som datamodell, transaktionskrav, skalbarhet och driftkostnad.