NeDB: Eine MongoDB-ähnliche dateibasierte Datenbank für Javascript

von cooper.bin
veröffentlicht am 30.03.2024 aktualisiert am 30.03.2024

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.

nedb-projekt-verzeichnis-mit-lokaler-datenbank-datei ><

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.

Die Themen server und javascript gibt es auch auf dem makesmart Discord-Server! Trete bei, um dich auszutauschen.

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

cooper.bin am 13.02.2024

ESP8266 Webserver: GET-Variablen auslesen

GET-Parameter sind Variablen, die über die URL übergeben werden. Diese Variablen können auf einem ESP8266 ausgelesen werden, um bestimmte Aktionen in der Software auszulösen.

cooper.bin am 17.02.2024

Raspberry Pi FTP-Server installieren

Der FTP-Server ProFTPD lässt sich im Handumdrehen installieren. Er ist leicht zu konfigurieren und läuft ohne Probleme auf einem Raspberry Pi.

cooper.bin am 23.03.2024

ESP8266 D1 Mini WLAN-Relais mit HTTP API

Mit diesem einfachem Webserver auf dem ESP8266 mit HTTP API kannst du ein Relais smart machen! Steuere das Relais über deinen Webbrowser oder automatisiert durch andere Dienste.

cooper.bin am 20.02.2024

MongoDB installieren - Die NoSQL Datenbank auf dem eigenen Server

MongoDB kann neben einer managed Lösung auch einfach und schnell in wenigen Schritten selbst installiert werden. In diesem Tutorial erfährst du wie du MongoDB auf deinem Server installierst

cooper.bin am 01.04.2024