← Tilbage til databaser

SQLite

SQL

En selvstændig, serverless, zero-configuration embedded SQL database engine.

Beskrivelse

SQLite er en unik database - den kræver ingen separat server process og gemmer hele databasen i en enkelt fil. Dette gør den perfekt til embedded systemer, mobile apps, desktop applikationer og prototyping. SQLite er en af de mest deployed softwaresystemer i verden - den findes i smartphones (iOS og Android), browsers (alle moderne browsers), embedded devices, og desktop apps. Trods sin simplicitet, understøtter SQLite de fleste SQL features inklusiv transactions, triggers, views og subqueries. Den følger ACID principper og har vist sig ekstremt pålidelig - NASA bruger den i spacecraft, og den er testet til 100% branch coverage. SQLite er ideel når du har brug for en lokal database uden overhead af client-server arkitektur. Den kan håndtere databaser op til 281 terabytes og er hurtigere end mange client-server databaser til læseoperationer.

Features

  • Zero-configuration (ingen setup)
  • Serverless (embedded i applikation)
  • Single database file
  • ACID compliant transactions
  • Cross-platform
  • Public domain (ikke engang open-source licens)
  • Full-text search via FTS5
  • JSON support

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 status rapport');

-- Query 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;

-- Full-text search
CREATE VIRTUAL TABLE articles_fts 
USING fts5(title, content);

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

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

Anvendelsesområder

  • Mobile apps (iOS, Android)
  • Desktop applikationer
  • Embedded devices og IoT
  • Prototyping og development
  • Browser storage (IndexedDB backend)

Fordele

  • Ekstremt simpel at bruge
  • Ingen server setup eller administration
  • Perfekt til embedded use cases
  • Meget hurtig til read operations
  • Minimal dependency (bare én fil)

Ulemper

  • Begrænset concurrent writes
  • Ikke skalerbar til multi-user scenarios
  • Ingen user management eller permissions
  • Database størrelse begrænsning (praktisk ~1TB)
  • Ikke ideel til høj write concurrency

Bedst til

  • Mobile og desktop applikationer
  • Embedded systems
  • Single-user applikationer
  • Development og testing
  • Caching og temporary storage

Ikke anbefalet til

  • Multi-user web applikationer
  • Høj write concurrency
  • Meget store datasets (>100GB)
  • Distributed systems
  • Client-server arkitekturer

Relaterede databaser

DuckDBH2HSQLDBDerby