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

113 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🛠️ better-sqlite3: Die leistungsstarke SQLite-Bibliothek für Node.js
- [🛠️ better-sqlite3: Die leistungsstarke SQLite-Bibliothek für Node.js](#-better-sqlite3-die-leistungsstarke-sqlite-bibliothek-für-nodejs)
- [📜 Entstehung und Motivation](#-entstehung-und-motivation)
- [📦 Installation](#-installation)
- [⚖️ Lizenz](#-lizenz)
- [🌐 Community und Unterstützung](#-community-und-unterstützung)
- [🚀 Features](#-features)
- [🔍 Unterschiede zu `node-sqlite3`](#-unterschiede-zu-node-sqlite3)
- [🧠 Best Practices](#-best-practices)
- [📚 Quellen](#-quellen)
- [🧩 Fazit](#-fazit)
---
**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](https://github.com/JoshuaWise) entwickelt und wird unter dem GitHub-Projekt [WiseLibs/better-sqlite3](https://github.com/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
```bash
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:
```js
db.pragma('journal_mode = WAL');
```
- **Transaktionen nutzen** für Bulk-Inserts:
```js
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
- [better-sqlite3 auf npm](https://www.npmjs.com/package/better-sqlite3)
- [GitHub-Projektseite](https://github.com/WiseLibs/better-sqlite3)
- [Vergleich mit node-sqlite3 auf npm](https://www.npmjs.com/package/better-sqlite3)
---
## 🧩 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.