Zum Inhalt springen

Eingebettete Datenbanken: Ein detaillierter Blick

Was ist eine eingebettete Datenbank?

Es gibt zwei Hauptdefinitionen einer eingebetteten Datenbank:

 

  • Datenbank für eingebettete Systeme- wie mobile Geräte oder Unterhaltungselektronik. Das eingebettete Datenbank muss einen geringen Platzbedarf haben und eine angemessene Leistung in einer Umgebung mit begrenztem Speicher und begrenzten CPU-Fähigkeiten bieten.
  • In Anwendungen eingebettete DatenbankenDies bedeutet, dass die Anwendung nicht mit einem Datenbankserver kommuniziert und über eine integrierte Datenbankkomponente verfügt. Diese Art von Datenbank wird häufig in verwendet Edge-Computing Anwendungen.

 

In beiden Definitionen ist ein eingebettetes Datenbanksystem eine Reihe von Bibliotheken, die dem Anwendungs- oder Firmware-Code zugeordnet sind und der Anwendung oder dem Gerät integrierte Datenbankfunktionen bieten. Dies unterscheidet sich von einem Client / Server-Datenbanksystem, bei dem ein anderer Prozess (Datenbankserver) Datenbankdienste für eine oder mehrere Clientanwendungen bereitstellt.

 

In diesem Artikel erfahren Sie:

 

Eigenschaften eingebetteter Systeme

Ein eingebettetes System ist eine Kombination aus Computerhardware und -software, die zur Ausführung bestimmter Funktionen entwickelt wurde. Beispiele hierfür sind Smartphones, Digitalkameras und vernetzte Autos. Eingebettete Systeme weisen die folgenden Eigenschaften auf:

 

  • Bestehend aus Hardware, Firmware und Software
  • Entwickelt für bestimmte Systemaufgaben, daher ist es normalerweise in ein größeres System integriert
  • Die Rechenleistung wird durch integrierte Schaltkreise bereitgestellt - einen Mikroprozessor oder einen Mikrocontroller
  • Normalerweise erforderlich, um seine Aufgaben unter zeitlichen Einschränkungen auszuführen, um andere Komponenten des größeren Systems zu unterstützen

 

Anforderungen für eingebettete Datenbanken

Berücksichtigen Sie die folgenden Anforderungen, um festzustellen, ob eine Datenbank zur Verwendung als eingebettete Datenbank geeignet ist:

 

  • Unterstützt es CRUD (erstellen, lesen, aktualisieren, löschen)?
  • Unterstützt es ACID (Atomizität, Konsistenz, Isolierung, Haltbarkeit)?
  • Kann ich mit verschiedenen Programmiersprachen und Betriebsplattformen arbeiten?
  • Ist es möglich, Daten einfach in eine zentrale Datenbank zu verschieben?
  • Ist es wartungsfrei, ohne dass Datenbankadministratoren erforderlich sind?

 

In fast allen Situationen mit eingebetteten Datenbanken müssen eingebettete Anwendungen mehrere komplexe Datenströme für Analyse und Aktion speichern. Sie müssen in der Lage sein, Daten aus mehreren Quellen zu empfangen und gleichzeitig Lese- und Schreibvorgänge durchzuführen. Die Datenbank muss nicht nur Daten speichern, sondern auch die Integrität aufrechterhalten und im Falle eines Systemausfalls wiederhergestellt werden können.

 

Sie können grundlegende CRUD-Funktionen zum Ändern von Daten verwenden, dies garantiert jedoch nicht die Datenintegrität. ACID bietet ein viel besseres Maß an Integrität und kann Transaktionsszenarien unterstützen. In eingebetteten Szenarien werden Datensätze in mehreren Anweisungen in die Datenbank geschrieben. So kann ACID diese Anforderungen unterstützen:

 

  • Atomarität erfordert, dass die Datenbank alle Anweisungen zulässt oder ablehnt, aus denen der Datensatz besteht. 
  • Konsistenz Verhindert teilweise Änderungen, die die Daten beschädigen können
  • Isolation Mit dieser Option können Sie mehrere Datensätze gleichzeitig schreiben, ohne sich gegenseitig zu beeinflussen
  • Haltbarkeit bedeutet, dass ein festgeschriebener Datensatz auch dann festgeschrieben bleibt, wenn das System ausfällt

 

Die Nichteinhaltung der ACID-Anforderungen erhöht das Risiko einer Datenbankbeschädigung. In Umgebungen mit Hunderten oder Tausenden von Geräten treten mit größerer Wahrscheinlichkeit Fehler auf, und die Einhaltung von ACIDs wird wichtiger.

 

Arten von eingebetteten Datenbanken

Es gibt drei Haupttypen von Datenbanken, die in eingebetteten Szenarien verwendet werden. 

 

Traditionell SQL-Datenbanken kann in eingebetteten Systemen verwendet werden, muss jedoch häufig Speicherplatz oder Funktionalität opfern. Einige implementieren nur einen Teil der SQL-Syntax oder bieten eine schwach typisierte SQL-Syntax, die keine Integrität garantiert.

 

Zeitreihendatenbanken zeitkritische Datenströme messen, verfolgen, untersuchen und automatisieren. Zeitreihendatenbanken opfern Sie einige ACID-Funktionen für die Geschwindigkeit. Wenn Ihr System beispielsweise versucht, die Anzahl der Schreibvorgänge zu optimieren, werden Datensätze möglicherweise für einen kürzeren Zeitraum gesperrt, was die Konsistenz beeinträchtigen kann.

 

Datenhistorikersysteme Sammeln und Speichern großer Mengen von Daten mit Zeitstempel. Ein Datenhistoriker ist normalerweise in ein Gerät integriert und wird hauptsächlich zum Sammeln und Übertragen von Informationen mit eingeschränkten Analysefunktionen verwendet. Es kann eine SQL-Abfrageschnittstelle bereitstellen und folgt nicht unbedingt der Standard-SQL-Syntax.

 

Eingebettete Datenbanken: SQL vs. APIs

In vielen eingebetteten Systemen kann zwischen dem Aktivieren des SQL-Zugriffs auf die Datenbank (normalerweise mithilfe von JDBC / ODBC) und dem proprietären API-Zugriff gewählt werden. Lassen Sie uns einige der Vor- und Nachteile jedes Ansatzes sehen.

Verwenden von SQL für den Zugriff auf eingebettete Datenbanken

Vorteile

  • SQL ist bekannt und kann für Entwickler und Administratoren sofort nützlich sein, ebenso wie die JDBC- und ODBC-APIs.
  • Bietet flexible Abfragefunktionen.
  • Möglichkeit, eine UPDATE- oder DELETE-Anweisung gleichzeitig auf mehrere Zeilen anzuwenden, während Nicht-SQL-APIs jede Zeile separat behandeln.

Nachteile

  • Der Aufwand für das Parsen, Optimieren und Ausführen von Abfragen ist hoch. Diese Schritte verwenden CPU-Zyklen, Speicher und andere knappe Ressourcen.
  • SQL ist häufig nicht genau mit anderen Systemen kompatibel, beispielsweise mit objektorientierter Programmierung. Dies ist als "Impedanzfehlanpassung" bekannt. Um dies zu beheben, wurde das objektrelationale Mapping (ORM) eingeführt, das jedoch noch mehr Aufwand verursacht.

Verwenden proprietärer APIs für den Zugriff auf eingebettete Datenbanken

Vorteile

  • Vermeidet Impedanzfehlanpassungen, da dasselbe Unternehmen die eingebettete Datenbank und ihre API entwirft.
  • Beseitigt den Aufwand für die Verarbeitung von SQL-Abfragen und gewährt direkten Zugriff auf Daten.

Nachteile

  • Die Verwendung einer proprietären API ist eine spezielle Fähigkeit, die die Teammitglieder erlernen müssen.
  • Sperrt Sie in ein bestimmtes Datenbanksystem, was die Migration erschwert, wenn es nicht den Anforderungen entspricht.

 

CDC (Data Capture) und eingebettete Datenbanken ändern

CDC wird in vielen eingebetteten Systemen verwendet, um festzustellen, welche Daten sich geändert haben, und um die Datenänderung für zukünftige Zwecke zu speichern. Dies kann die Wiederherstellung, Replikation und Verarbeitung von Streaming-Ereignissen in der Datenbank ermöglichen.

 

Es gibt drei Hauptfunktionen, mit denen die Datenerfassung in eingebetteten Datenbanken geändert werden kann:

 

  • Transaktionsprotokollierung- Wird verwendet, um Datenbanktransaktionen nach einem Absturz mithilfe von UNDO- und REDO-Aktionen abzurufen
  • Löst aus- Aktionen, die aufgerufen werden, wenn die Datenbank eine INSERT-, UPDATE- oder DELETE-Operation erkennt
  • Reproduzieren—CDC kann verschiedene Replikationsmodi unterstützen:
    • Kopieren festgeschriebener Transaktionen (Spiegelung oder Transaktionsreplikation)
    • Kopieren von festgeschriebenen und nicht festgeschriebenen Transaktionen (Protokollversand)

 

Raima Embedded Database

Unabhängig davon, ob Sie eine einbettbare Datenbank oder eine Datenbank für eingebettete Systeme benötigen, ist Raima Database Manager die ideale Lösung. Unsere relationale eingebettete Datenbank ist für einen hohen Durchsatz und eine geringe Speichernutzung optimiert.

 

RDM Embedded DB kann über einen Aufruf aus seiner umfangreichen API-Suite verwendet werden, einschließlich der Cursor-Schnittstelle von C / C ++, der JDBC-Schnittstelle von Java und der ADO.NET-Schnittstelle von C#. Es unterstützt auch die Verwendung von Standardtools von Drittanbietern über den ODBC-Treibermanager.

 

Unternehmen stehen heute vor der Herausforderung eines sich beschleunigenden Geschäftstempos am Rande, bei dem Entscheidungen in Echtzeit über die Eingabe von mehreren Geräten von entscheidender Bedeutung sind. Heutige Organisationen fordern, alles sofort zu haben. Raima Database Manager wurde für Anwendungen erstellt, die Echtzeit- und zuverlässige Daten benötigen.

 

Mit der zunehmenden Bereitstellung von Flash- und SSD-Speicher im eingebetteten Markt sind minimierte Schreibvorgänge auf die Medien wichtig, um eine hohe Leistung zu erzielen und gleichzeitig sicherzustellen, dass die mittlere Lebensdauer verlängert wird. Raima ist einer der wenigen Anbieter von eingebetteten Datenbanken, in die diese Funktionalität integriert ist.

 

Die modulare Architektur von Raima wurde entwickelt, um die komplexe Architektur zukünftiger eingebetteter Anwendungen zu erfüllen.