{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"cs/database","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/cs/database/","da":"https://cmaintz.github.io/tech-atlas/da/terms/cs/database/"},"term":{"en":"Database","da":"Database"},"aka":{"en":["DB"],"da":["DB"]},"domain":["cs"],"cluster":"web","layer":"application","status":"current","era":1964,"summary":{"en":"An organised store of data that many programs and users can search, add to and change at the same time without mixing it up.","da":"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."},"body":{"formal":{"en":"A structured collection of data run by a database management system, which lets programs look up, insert, update and delete records through a query language such as SQL while keeping the data correct when many changes happen at once.","da":"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."},"plain":{"en":"Like a well-run warehouse with a stock list - every item has a fixed place and a line in the list, so staff can find, add or move goods in seconds, and two clerks never undo each other's changes.","da":"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."},"inPractice":{"en":"When a customer orders from a Danish web shop, the web application writes the order, the address and the new stock count to the database as one step, so a crash halfway never leaves half an order.","da":"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."},"whyItMatters":{"en":"The database is often where an organisation's most valuable data lives, so who can reach it and what they may ask of it decides how bad a breach can be.","da":"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."}},"deepDive":{"en":"The relational model comes from E. F. Codd's 1970 paper: data as relations (tables) of tuples, identified by keys and manipulated with a closed algebra, independent of physical storage. SQL, standardised as ISO/IEC 9075 since 1987, is the practical realisation. Inside a relational DBMS a query passes through a parser, a cost-based optimiser that uses table statistics to choose access paths and join order, and an execution engine. The storage engine keeps fixed-size pages in a buffer pool and indexes them with B+-trees; log-structured merge trees (RocksDB, Cassandra) trade read cost for much cheaper writes.\n\nTransactions give the ACID guarantees. Atomicity and durability are implemented with write-ahead logging: log records describing a change must reach stable storage before the modified data page does, and a commit is durable once its commit record is flushed; the ARIES algorithm (Mohan et al., 1992) defines the redo and undo passes used for crash recovery. Isolation is weaker than many assume. SQL-92 defines READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ and SERIALIZABLE by which anomalies they forbid (dirty reads, non-repeatable reads, phantoms), and Berenson et al. showed in 1995 that this phenomenon-based definition misses cases such as write skew, which snapshot isolation permits. Engines implement isolation with two-phase locking or multiversion concurrency control; defaults differ (READ COMMITTED in PostgreSQL and SQL Server, REPEATABLE READ in MySQL InnoDB), and Oracle's \"serializable\" is really snapshot isolation.\n\nScaling out introduces replication (synchronous, at the cost of latency, or asynchronous, at the risk of losing recent commits on failover and of stale reads from replicas) and sharding. The CAP theorem (Brewer's conjecture of 2000, proved by Gilbert and Lynch in 2002) states that during a network partition a system must choose between consistency and availability. Non-relational families, namely key-value, document, wide-column and graph stores, relax schema or transactional guarantees for scale or flexibility, while systems such as Google Spanner provide distributed serializable transactions using tightly bounded clock uncertainty.\n\nSecurity failures cluster around a few points. SQL injection (CWE-89, part of A05:2025 Injection in the OWASP Top 10) is prevented structurally by parameterised queries, not by escaping. Applications should connect with least-privilege accounts, never as the database owner. Transparent data encryption protects stolen disks and backups, not data read through a compromised application. Databases exposed directly to the internet without authentication were mass-wiped and held for ransom in the MongoDB and Elasticsearch campaigns of 2017, and point-in-time recovery from archived logs is only as good as the last tested restore.","da":"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.\n\nTransaktioner 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.\n\nSkalering 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.\n\nSikkerhedsfejl 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."},"edges":[{"type":"contrasts-with","to":"cs/file-system","why":{"en":"A file system stores whole files by name; a database stores records it understands, so it can search them and keep many changes in step.","da":"Et filsystem gemmer hele filer under et navn; en database gemmer poster, den forstår, så den kan søge i dem og holde mange samtidige ændringer i trit."},"confidence":"high","strength":"normal"},{"type":"used-with","to":"cs/server","confidence":"high","strength":"normal"},{"type":"used-with","to":"cs/web-application","confidence":"high","strength":"normal"}],"depth":0,"sources":[{"title":"Silberschatz, Korth & Sudarshan, Database System Concepts","tier":"textbook"},{"title":"E. F. Codd, A Relational Model of Data for Large Shared Data Banks (1970)","url":"https://doi.org/10.1145/362384.362685","tier":"reference","publisher":"ACM"}],"draft":true}