SQLite
SQLEn 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