← Tilbage til databaser

SQLite

SQL

En selvstændig, serverløs, nulkonfiguration indlejret SQL-databasemotor.

Beskrivelse

SQLite er en unik database - den kræver ingen separat serverproces og gemmer hele databasen i en enkelt fil. Dette gør den perfekt til indlejrede systemer, mobilapps, desktop-applikationer og prototyping. SQLite er et af de mest udbredte softwaresystemer i verden - den findes i smartphones (iOS og Android), browsere (alle moderne browsere), indlejrede enheder og desktop-apps. Trods sin simplicitet understøtter SQLite de fleste SQL-funktioner inklusiv transaktioner, triggere, views og underforespørgsler. Den følger ACID-principper og har vist sig ekstremt pålidelig - NASA bruger den i rumfartøjer, og den er testet til 100% grenafløbsdækning. SQLite er ideel når du har brug for en lokal database uden overhead af klient-server-arkitektur. Den kan håndtere databaser op til 281 terabytes og er hurtigere end mange klient-server-databaser til læseoperationer.

Features

  • Nulkonfiguration (ingen opsætning)
  • Serverløs (indlejret i applikation)
  • Enkelt databasefil
  • ACID-kompatible transaktioner
  • Cross-platform
  • Public domain (ikke engang open source-licens)
  • Fuldtekstsøgning via FTS5
  • JSON-understøttelse

Query Eksempel

-- SQLite er standard SQL
-- Opret tabel
CREATE TABLE tasks (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  description TEXT,
  completed BOOLEAN DEFAULT 0,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

-- Indsæt data
INSERT INTO tasks (title, description)
VALUES 
  ('Køb ind', 'Mælk, brød, æg'),
  ('Skriv rapport', 'Månedlig statusrapport');

-- Forespørgsel med JSON (SQLite 3.38+)
CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name TEXT,
  metadata JSON
);

INSERT INTO users (name, metadata)
VALUES ('Maria', json('{"age": 28, "city": "København"}'));

SELECT 
  name,
  json_extract(metadata, '$.city') as city
FROM users
WHERE json_extract(metadata, '$.age') > 25;

-- Fuldtekstsøgning
CREATE VIRTUAL TABLE articles_fts 
USING fts5(title, content);

INSERT INTO articles_fts (title, content)
VALUES ('Guide til SQLite', 'SQLite er en indlejret database...');

SELECT * FROM articles_fts 
WHERE articles_fts MATCH 'indlejret database';

Anvendelsesområder

  • Mobilapps (iOS, Android)
  • Desktop-applikationer
  • Indlejrede enheder og IoT
  • Prototyping og udvikling
  • Browserlagring (IndexedDB-backend)

Fordele

  • Ekstremt simpel at bruge
  • Ingen serveropsætning eller administration
  • Perfekt til indlejrede brugsscenarier
  • Meget hurtig til læseoperationer
  • Minimal afhængighed (bare én fil)

Ulemper

  • Begrænset samtidige skrivninger
  • Ikke skalerbar til flerbrugerscenarier
  • Ingen brugerstyring eller rettigheder
  • Praktisk databasestørrelsesbegrænsning (~1TB)
  • Ikke ideel til høj skrivesamtidighed

Bedst til

  • Mobil- og desktop-applikationer
  • Indlejrede systemer
  • Enkeltbrugerapplikationer
  • Udvikling og test
  • Caching og midlertidig lagring

Ikke anbefalet til

  • Flerbruger webapplikationer
  • Høj skrivesamtidighed
  • Meget store datasæt (>100GB)
  • Distribuerede systemer
  • Klient-server-arkitekturer

Relaterede databaser

DuckDBH2HSQLDBDerby