En database er et system til opbevaring og håndtering af data (enhver form for information). Databaser gør det muligt både at gemme store mængder information og hurtigt at finde, opdatere eller analysere den.
En databasemotor kan sortere, ændre eller levere oplysningerne i databasen. Selve oplysningerne kan lagres på mange forskellige måder; før digitale computere blev der brugt kortmapper, trykte bøger og andre metoder. Nu opbevares de fleste data på computerfiler, men for brugeren præsenteres data typisk gennem et softwaresystem, som sikrer struktur, søgning, sikkerhed og samtidighed.
Et databasesystem er et computerprogram til forvaltning af elektroniske databaser. Et meget simpelt eksempel på et databasesystem er en elektronisk adressebog, hvor du kan søge efter navne, ændre telefonnumre og tilføje nye kontakter.
Dataene i en database er organiseret på en eller anden måde. Før der fandtes computere, blev medarbejderdata ofte opbevaret i arkivskabe. Der var normalt ét kort for hver medarbejder. På kortet kunne man finde oplysninger som f.eks. medarbejderens fødselsdato eller navn. En database har også sådanne "kort". For brugeren vil kortet se ud på samme måde som i gamle dage, blot vil det denne gang være på skærmen. For computeren kan oplysningerne på kortet gemmes på forskellige måder. Hver af disse måder er kendt som en databasemodel. Den mest almindeligt anvendte databasemodel kaldes den relationelle databasemodel. Den bruger relationer og sæt til at lagre dataene. Almindelige brugere, der taler om databasemodellen, vil ikke tale om relationer; i stedet vil de tale om databasetabeller.
Databasemodeller — oversigt
Der findes flere forskellige databasemodeller, som hver især er tilpasset forskellige behov og typer af data:
- Relationel (RDBMS): Data organiseres i tabeller med rækker og kolonner. Bruges sammen med SQL til forespørgsler, og understøtter typisk transaktioner og ACID-egenskaber. Velegnet til strukturerede data og mange forretningsapplikationer.
- Dokumentorienteret: Lagrer data som dokumenter (fx JSON eller BSON). Passer godt til semistrukturerede data og applikationer, hvor skemaet kan variere (fx MongoDB).
- Nøgle‑værdi: Simpel model hvor hvert element gemmes under en nøgle. Meget hurtig til opslag og ofte brugt til caching og sessionstore (fx Redis).
- Kolonneorienteret: Data gemmes efter kolonner i stedet for rækker. God til analytiske forespørgsler og store datamængder (fx Cassandra, HBase).
- Grafdatabaser: Specialiseret til netværk af relationer — noder og kanter. Effektiv ved komplekse relationelle forespørgsler som sociale netværk eller afhængighedsanalyser (fx Neo4j).
- Objektorienteret: Lagrer objekter direkte, ofte brugt i systemer hvor objektmodellen skal bevares uden meget impedance mismatch.
- Hierarkisk og netværksmodel: Ældre modeller, hvor data organiseres i træer eller netværk; nogle specialiserede systemer bruger stadig disse principper.
Vigtige begreber
- DBMS (Database Management System): Softwaren, der styrer oprettelse, adgang, sikkerhed, backup og samtidighed. Kendte eksempler: MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server, MongoDB.
- SQL: Structured Query Language — standard sprog til at udføre forespørgsler i relationelle databaser.
- Transaktioner: Ensurerer, at en række operationer enten fuldføres helt eller rulles tilbage (ACID: Atomicity, Consistency, Isolation, Durability).
- Index: Datastrukturer, der forbedrer søgehastigheden, men øger omkostningerne ved indlæsning og opdatering.
- Normalisering: Proces til at organisere data for at reducere redundans; modsat kan denormalisering bruges for hastighed i læseintensive systemer.
- Replikation og sharding: Replikation kopierer data til flere noder for høj tilgængelighed; sharding deler data op over flere servere for skalerbarhed.
- Sikkerhed og backup: Adgangskontrol, kryptering og løbende backups er nødvendigt for at beskytte data mod tab og uautoriseret adgang.
ACID vs. NoSQL / BASE
Traditionelle relationelle systemer prioriterer ofte ACID-egenskaber for dataintegritet. Mange moderne NoSQL-databaser vælger i stedet en mere fleksibel tilgang (ofte kaldet BASE: Basically Available, Soft state, Eventual consistency) for at opnå bedre skalerbarhed og performance i distribuerede miljøer.
Praktiske anvendelser og eksempler
- Web‑ og mobilapplikationer: relationelle databaser (MySQL, PostgreSQL) eller dokumentdatabaser (MongoDB).
- Real‑time caching og køer: nøgle‑værdi lagre som Redis eller Memcached.
- Større analytiske workloads og datalakes: kolonneorienterede databaser og big data‑platforme (Cassandra, Hadoop-økosystemet).
- Netværks- og anbefalingssystemer: grafdatabaser (Neo4j).
- Backup, replikering og cloud‑tilbud: administrerede databaser i skyen (f.eks. Amazon RDS, Azure SQL, Google Cloud SQL) giver enkel drift og automatiske backups.
Hvornår vælger man hvilken model?
Valget afhænger af kravene:
- Har du velstrukturerede data og behov for transaktionel integritet? — relationel database.
- Skemaet ændrer sig ofte eller er fleksibelt? — dokumentdatabase.
- Behøver du ekstremt hurtige opslag? — nøgle‑værdi lagre.
- Arbejder du med tætte relationer mellem objekter? — grafdatabase.
- Skal systemet skal kunne skalere horisontalt til store mængder data? — overvej NoSQL-løsninger med sharding eller kolonneorienterede databaser.
Afsluttende bemærkninger
En database er mere end blot en fil med data — det er et system der organiserer, beskytter og giver adgang til information på effektive måder. Når du vælger en databaseløsning, skal du vurdere krav til integritet, ydeevne, skalerbarhed og driftsomkostninger. Kombinationer af databaser (polyglot persistence) er også almindelige: bruge den rigtige type database til hver opgave i samme system.