adminslog/dokus/js-ts/better-sqlite3.md

4.4 KiB
Raw Permalink Blame History

🛠️ better-sqlite3: Die leistungsstarke SQLite-Bibliothek für Node.js


better-sqlite3 ist eine moderne, synchron arbeitende SQLite-Bibliothek für Node.js, die sich durch hohe Performance, einfache Bedienung und umfassende Funktionalität auszeichnet. Sie wurde entwickelt, um die Schwächen anderer SQLite-Bindings wie node-sqlite3 zu überwinden und bietet eine robuste Alternative für Entwickler, die mit SQLite in JavaScript arbeiten möchten.


📜 Entstehung und Motivation

Die Bibliothek wurde von Joshua Wise entwickelt und wird unter dem GitHub-Projekt WiseLibs/better-sqlite3 gepflegt. Ziel war es, eine SQLite-Binding zu schaffen, die:

  • Synchron arbeitet, um die Komplexität asynchroner APIs zu vermeiden
  • Sicher und effizient ist, ohne auf Low-Level-C-APIs zurückgreifen zu müssen
  • Einfach zu bedienen ist, mit klaren Methoden und verständlicher API

📦 Installation

npm install better-sqlite3

Erfordert Node.js v14.21.1 oder höher. Prebuilt-Binaries sind für LTS-Versionen verfügbar.


⚖️ Lizenz

Die Bibliothek steht unter der MIT-Lizenz, was eine freie Nutzung, Modifikation und Verbreitung erlaubt.


🌐 Community und Unterstützung

  • Über 6.000 GitHub-Stars und eine aktive Entwicklergemeinschaft
  • Unterstützt durch Spenden via GitHub Sponsors, Patreon und PayPal
  • Wird von tausenden Entwicklern täglich verwendet

🚀 Features

  • Schnelle Performance: Benchmarks zeigen, dass better-sqlite3 in vielen Fällen deutlich schneller ist als node-sqlite3
  • Sichere Transaktionen
  • Benutzerdefinierte Funktionen und Aggregate
  • Virtuelle Tabellen und Erweiterungen
  • 64-Bit-Integer-Unterstützung
  • Worker-Thread-Support für große/langsame Abfragen
  • Einfache API: z.B. db.prepare(...).get() für eine einzelne Zeile

🔍 Unterschiede zu node-sqlite3

Merkmal better-sqlite3 node-sqlite3
API-Typ Synchron Asynchron
Speicherverwaltung JavaScript (GC) Low-Level C
Performance Sehr hoch Deutlich langsamer in Benchmarks
Komplexität Einfach Komplexer
Erweiterbarkeit Hoch Eingeschränkt

Benchmarks zeigen z.B. beim Einfügen von 100 Zeilen eine bis zu 15-fache Geschwindigkeitssteigerung gegenüber sqlite3.


🧠 Best Practices

  • WAL-Modus aktivieren für bessere Performance:

    db.pragma('journal_mode = WAL');
    
  • Transaktionen nutzen für Bulk-Inserts:

    const insert = db.prepare('INSERT INTO users (name) VALUES (?)');
    const insertMany = db.transaction((names) => {
      for (const name of names) insert.run(name);
    });
    insertMany(['Alice', 'Bob', 'Charlie']);
    

📚 Quellen


🧩 Fazit

better-sqlite3 ist eine exzellente Wahl für Node.js-Projekte, die SQLite nutzen möchten. Die Kombination aus Performance, einfacher API und aktiver Community macht sie zur bevorzugten Lösung gegenüber traditionellen Bindings wie node-sqlite3.

Wenn du mit SQLite arbeitest und dir Synchronität, Geschwindigkeit und Klarheit wichtig sind dann ist better-sqlite3 dein Werkzeug der Wahl.