113 lines
4.4 KiB
Markdown
113 lines
4.4 KiB
Markdown
|
# 🛠️ 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.
|