Stell dir vor, du könntest dein Projekt nicht nur flexibler gestalten, sondern auch dessen Modernität mit einem einfachen Schritt erheblich steigern. Genau hier setzt NeDB an, eine schlanke und leistungsfähige Datenbank für deine Node.JS oder Electron Anwendung. Sie ermöglicht es dir, Daten dauerhaft zu speichern. Im Gegensatz zur Speicherung als .json- oder anderen Dateien bietet NeDB flexible Abfragemöglichkeiten und ein effizienteres Datenmanagement.
In diesem Beitrag befassen wir uns mit NeDB und werden diese in einer Node.js Umgebung verwenden.
Zum Kapitel springen Die Vielfalt der Datenbanken
Die Landschaft der Datenbanken ist vielfältig und reicht von relationalen Systemen wie MySQL und PostgreSQL bis hin zu NoSQL-Varianten wie MongoDB. Jede dieser Datenbanken brilliert in ihrem spezifischen Anwendungsfall. Doch sie alle erfordern einen Datenbankserver. Dies kann für kleinere oder private Projekte eine Hürde darstellen oder manchmal auch einfach nur zu viel des Guten sein.
Als Mitglied der NoSQL-Familie bietet NeDB eine bedienungsfreundliche Alternative ohne Server.
Zum Kapitel springen NeDB als Datenbank
NeDB hebt sich durch seine Einfachheit und Effizienz ab. Als lokale und dateibasierte Datenbank eliminiert sie den Bedarf an einem separaten Datenbankserver. Eine einzige Datei kann die gesamte Datenbank oder Teile davon repräsentieren, was eine intuitive Aufteilung der Daten ermöglicht.
Die Flexibilität von NeDB ermöglicht es, den Speicherort der Datenbankdatei frei zu wählen. Unabhängig von der Wahl des Speicherorts bietet NeDB eine gute Portabilität der Datenbankdatei. Du kannst deine Datenbank jederzeit mühelos an einen anderen Ort verschieben.
Dieser Ansatz macht NeDB zur perfekten Wahl für Projekte, die eine schnelle und unkomplizierte Möglichkeit zur Datenspeicherung suchen.
Zum Kapitel springen Vertrauter MongoDB-Syntax
Für diejenigen, die bereits Erfahrung mit MongoDB gesammelt haben, wird NeDB eine vertraute Umgebung bieten. Dank der Anlehnung an die MongoDB API ist der Einstieg in NeDB nicht nur intuitiv, sondern auch effizient und einfach. Die Nähe zum MongoDB-Ökosystem macht es leicht, die Vorteile einer eingebetteten Datenbank zu genießen. Auch wenn nicht alle Abfragefunktionalitäten einer MongoDB unterstützt werden, kann meist auf bekannte Muster und Praktiken zurückgegriffen werden.
Zum Kapitel springen Installation von NeDB
Das offizielle NeDB-Paket hat schon einige Jahre auf dem Buckel und wird nicht mehr gepflegt. Glücklicherweise sorgt ein Fork von seald-io für ein aktuelles Paket und somit das Weiterleben dieser tollen Datenbank.
npm install @seald-io/nedb
Mit diesem Befehl rüstest du dein Projekt mit der aktuellsten Version von NeDB aus. Danach kann direkt die einfache Einrichtung der Datenbank im Projekt erfolgen:
const Datastore = require('@seald-io/nedb');
const database = new Datastore({ filename: './myDatabase.db', autoload: true });
Mit nur zwei Zeilen Code entsteht eine neue Datenbankdatei in deinem Projektverzeichnis. Diese Datei dient nun als Datenbank und wird deine Daten sicher und persistent speichern.
Zum Kapitel springen Datensätze speichern
Das Hinzufügen von Einträgen ist ein Kinderspiel. Ein einfaches Beispiel demonstriert, wie du Daten in der Datenbank speichern kannst.
async function main() {
const document = {
title: "Mein erstes NeDB-Dokument",
public: true,
createdAt: new Date(),
tags: ['erste Schritte', 'NeDB', 'Datenspeicherung']
};
try {
const result = await database.insertAsync(document);
console.log("Das Dokument wurde erfolgreich gespeichert:", result);
} catch (error) {
console.error("Fehler beim Speichern des Dokuments:", error);
}
}
main();
Das Dokument wurde erfolgreich gespeichert: {
title: 'Mein erstes NeDB-Dokument',
public: true,
createdAt: 2024-02-29T14:40:02.036Z,
tags: [ 'erste Schritte', 'NeDB', 'Datenspeicherung' ],
_id: 'QukTLtCpdhSbAePK'
}
Zum Kapitel springen Datensätze finden
Die Fähigkeit, Daten schnell und präzise abzufragen, ist ein Schlüsselelement jeder Datenbank. Mit NeDB müssen wir dabei keinerleit Abstriche machen. Dies spiegelt sich insbesondere in der Vielfalt und Handhabung der Operatoren, die für Abfragen zur Verfügung stehen, wider. Ähnlich wie bei MongoDB ermöglicht NeDB die Nutzung einer reichen Auswahl an Operatoren, die es uns erlauben, komplexe Abfragen mit Leichtigkeit zu konstruieren.
Von Vergleichsoperatoren wie $gt (größer als), $lt (kleiner als) bis hin zu logischen Operatoren wie $or und $and und sogar $regex bietet NeDB eine vertraute und mächtige Abfragesprache. Diese Parallelen zur MongoDB-Abfragesyntax erlauben eine intuitive Nutzung für diejenigen, die bereits mit MongoDB vertraut sind.
Zum Kapitel springen Vergleichsoperatoren
Syntay | Bedeutung | Beschreibung |
---|---|---|
$lt | less than | kleiner als |
$lte | less then or equivalent | kleiner gleich |
$gt | greater then | größer als |
$gte | greater equivalent | größer gleich |
$in | member of | Der Key kommt in einem gegebenen Array vor |
$nin | not in | Der Key kommt nicht in einem gegebenen Array vor |
$ne | not equivalent | ungleich |
Zum Kapitel springen Logische Operatoren
Syntay | Bedeutung | Beschreibung |
---|---|---|
$or | or | oder |
$and | and | and |
$not | not | not |
$where | where | wenn |
Zum Kapitel springen Regex
Neben den Vergleichs- und logischen Operatoren kann man auch Anhand eines Regex-Pattern suchen. Dies passiert in einfachen Queries direkt im Key des zu suchenden Elements oder mit dem $regex
Operator.
Zum Kapitel springen Beispiele
Um sämtliche Dokumente in der Datenbank abzurufen, genügt ein Aufruf von findAsync()
mit einem leeren Objekt als Parameter. Diese Methode liefert eine umfassende Übersicht über alle gespeicherten Einträge. Für gezieltere Suchvorgänge bietet NeDB die Möglichkeit, die zuvor erwähnten Operatoren einzusetzen. Durch ihre Anwendung kannst du die Abfrage präzise auf deine spezifischen Bedürfnisse zuschneiden und genau die Datensätze extrahieren, die relevant sind.
Hier sind ein paar Beispiele für einfach konstruierte Abfragen:
// Alle Dokumente finden
const allDocuments = await database.findAsync({ });
console.log(allDocuments);
// Dokumente finden, bei denen `public` true ist
const publicDocuments = await database.findAsync({
public: true
});
console.log(publicDocuments);
// Dokumente finden, die mindestens einen der gegebenen Tags enthalten
const apiDocuments = await database.findAsync({
tags: {
$in: [ 'NeDB', 'MongoDB' ]
}
});
console.log(apiDocuments);
// Dokumente finden, die vor einem bestimmten Datum erstellt wurden und bestimmte Tags enthalten
const olderDocumentsWithTags = await database.findAsync({
createdAt: {
$lt: new Date('2023-01-01')
},
tags: {
$in: ['Projekt', 'Wichtig']
}
});
console.log(olderDocumentsWithTags);
// Dokumente finden, die entweder öffentlich sind oder bestimmte Tags enthalten, aber nicht beide Kriterien gleichzeitig erfüllen
const specificCriteriaDocuments = await database.findAsync({
$or: [
{ public: true },
{
tags: {
$in: ['Intern', 'Geheim']
},
public: {
$ne: true
}
}
]
});
console.log(specificCriteriaDocuments);
// Dokumente finden, deren Titel mit "Projekt" beginnen
const regexDocuments = await database.findAsync({
title: {
$regex: new RegExp('^Projekt')
}
});
console.log(regexDocuments);
Abschließend lässt sich festhalten, dass NeDB eine ausgezeichnete Wahl einer effizienten, leichtgewichtigen Datenbanklösung darstellt. Mit der Anlehnung an MongoDB, kombiniert mit der Einfachheit und Flexibilität einer dateibasierten Speicherung, bietet NeDB eine robuste Plattform für deine datengesteuerten Anwendungen. Ich hoffe dieser Einblick in NeDB hat dein Interesse geweckt hat und dich ermutigt, diese Datenbank in deinen zukünftigen Projekten zu verwenden. Für tiefergehende Einblicke und fortgeschrittene Nutzungsszenarien steht die Dokumentation von NeDB bereit.