Database
Også kendt som: DB
Et organiseret lager af data, som mange programmer og brugere kan søge i, tilføje til og ændre på samme tid, uden at det bliver rodet.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En struktureret samling af data, som styres af et databasesystem, der lader programmer slå op, indsætte, opdatere og slette poster gennem et forespørgselssprog som SQL, mens data holdes korrekte, når mange ændringer sker på én gang.
Forklaret enkelt
Som et velordnet lager med en vareliste - hver vare har en fast plads og en linje på listen, så personalet kan finde, tilføje eller flytte varer på få sekunder, og to ekspedienter aldrig overskriver hinandens rettelser.
I praksis
Når en kunde bestiller i en dansk webshop, skriver webapplikationen ordren, adressen og det nye lagertal til databasen i ét samlet trin, så et nedbrud midt i processen aldrig efterlader en halv ordre.
Hvorfor det betyder noget
Databasen er ofte der, hvor en organisations mest værdifulde data ligger, så hvem der kan nå den, og hvad de må spørge den om, afgør, hvor slemt et brud kan blive.
Teknisk uddybning
Relationsmodellen stammer fra E. F. Codds artikel fra 1970: data som relationer (tabeller) af tupler, identificeret ved nøgler og behandlet med en lukket algebra, uafhængigt af den fysiske lagring. SQL, standardiseret som ISO/IEC 9075 siden 1987, er den praktiske realisering. Inde i et relationelt databasesystem passerer en forespørgsel en parser, en omkostningsbaseret optimizer, der bruger statistik over tabellerne til at vælge adgangsveje og rækkefølge af joins, og en eksekveringsmotor. Lagringsmotoren holder sider af fast størrelse i en buffer pool og indekserer dem med B+-træer; log-structured merge trees (RocksDB, Cassandra) bytter dyrere læsning for langt billigere skrivning.
Transaktioner giver ACID-garantierne. Atomicitet og holdbarhed realiseres med write-ahead logging: logposter, der beskriver en ændring, skal nå stabilt lager, før den ændrede dataside gør det, og en commit er holdbar, så snart dens commit-post er skrevet ud; ARIES-algoritmen (Mohan m.fl., 1992) definerer de redo- og undo-gennemløb, der bruges ved genopretning efter nedbrud. Isolation er svagere, end mange tror. SQL-92 definerer READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ og SERIALIZABLE ud fra, hvilke anomalier de forbyder (dirty reads, non-repeatable reads, phantoms), og Berenson m.fl. viste i 1995, at denne fænomenbaserede definition overser tilfælde som write skew, som snapshot isolation tillader. Motorerne implementerer isolation med tofaselåsning eller multiversion concurrency control; standarderne varierer (READ COMMITTED i PostgreSQL og SQL Server, REPEATABLE READ i MySQL InnoDB), og Oracles "serializable" er i virkeligheden snapshot isolation.
Skalering ud over én maskine medfører replikering (synkron, på bekostning af svartid, eller asynkron, med risiko for at miste de seneste commits ved failover og for forældede læsninger fra replikaer) og sharding. CAP-teoremet (Brewers formodning fra 2000, bevist af Gilbert og Lynch i 2002) siger, at et system under en netværkspartition må vælge mellem konsistens og tilgængelighed. Ikke-relationelle familier, dvs. key-value-, dokument-, wide-column- og grafdatabaser, slækker på skema eller transaktionsgarantier for at opnå skala eller fleksibilitet, mens systemer som Google Spanner giver distribuerede serialiserbare transaktioner ved hjælp af stramt afgrænset urusikkerhed.
Sikkerhedsfejl samler sig nogle få steder. SQL-injektion (CWE-89, en del af A05:2025 Injection i OWASP Top 10) forhindres strukturelt med parametriserede forespørgsler, ikke med escaping. Applikationer skal forbinde med konti med mindst mulige rettigheder, aldrig som databasens ejer. Transparent data encryption beskytter stjålne diske og backup, ikke data, der læses gennem en kompromitteret applikation. Databaser eksponeret direkte på internettet uden autentificering blev massevis slettet og holdt for løsesum i MongoDB- og Elasticsearch-kampagnerne i 2017, og genopretning til et bestemt tidspunkt fra arkiverede logs er kun så god som den senest testede gendannelse.
Relationer
- Typer
- Vektordatabase
- Åbner for
- SQL injection
- Forveksl ikke med
- Filsystem
- Bruges sammen med
- ServerWebapplikationBackup
Kilder og videre læsning
Opslagsværker
Lærebøger
- Silberschatz, Korth & Sudarshan, Database System Concepts
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Nævnt i
Test dig selv
Indlæser…