Datenbankmotor

A Datenbankmotor (oder Speichermotor) ist die zugrunde liegende Softwarekomponente, die a Datenbankverwaltungssystem (DBMS) verwendet zu Erstellen, lesen, aktualisieren und löschen (CRUD) Daten von einem Datenbank. Die meisten Datenbankverwaltungssysteme umfassen ihre eigenen Programmierschnittstelle (API), mit der der Benutzer mit seiner zugrunde liegenden Engine interagieren kann, ohne die Benutzeroberfläche des DBMS zu durchlaufen.

Der Begriff "Datenbankmotor" wird häufig austauschbar mit "mit" verwendet "Datenbankserver"oder" Datenbankverwaltungssystem ". Eine" Datenbankinstanz "bezieht sich auf die Prozesse und Speicherstrukturen des Ausführens Datenbankmotor.

Speichermotoren

Viele der modernen DBMs unterstützen mehrere Speichermotoren in derselben Datenbank. Zum Beispiel, Mysql Unterstützung InnoDb ebenso gut wie MyiSam.

Einige Speichermotoren sind Transaktions.

Name Lizenz Transaktions
Arie Gpl Nein
Falke Gpl Ja
InnoDb Gpl Ja
MyiSam Gpl Nein
Infinidb Gpl Nein
Tokudb Gpl Ja
WiredTiger Gpl Ja
Xtradb Gpl Ja
Rocksdb GPL v2 oder Apache 2.0 Ja

Zusätzliche Motortypen umfassen:

Entwurfsüberlegungen

Informationen in einer Datenbank werden als Bits gespeichert wie Datenstrukturen im Speicher, das effizient gelesen und an die Eigenschaften von Hardware geschrieben werden kann. In der Regel ist der Speicher selbst so konzipiert, dass er die Anforderungen verschiedener Bereiche erfüllt, die den Speicher ausführlich nutzen, einschließlich Datenbanken. EIN DBMs Im Betrieb wird immer gleichzeitig mehrere Speichertypen (z. B. Speicher und externer Speicher) mit jeweiligen Layoutmethoden verwendet.

Im Prinzip kann der Datenbankspeicher als als angesehen werden linearer Adressraum, wo alle Daten in diesem Adressraum eine eindeutige Adresse haben. In der Praxis werden nur ein sehr kleiner Prozentsatz der Adressen als erste Referenzpunkte gehalten (für die auch Speicher erforderlich ist). Die meisten Daten werden durch Indirektion unter Verwendung von Verschiebungsberechnungen (Entfernung in Bits aus den Referenzpunkten) und Datenstrukturen zugegriffen, die Zugriffspfade (mit Zeiger) auf alle erforderlichen Daten auf effektive Weise definieren, die für die erforderlichen Datenzugriffsvorgänge optimiert sind.

Datenbankspeicherhierarchie

Eine Datenbank im Betrieb, wohnt gleichzeitig in mehreren Arten von Speicher, wobei a bildet a Speicherhierarchie. Durch die Natur zeitgenössischer Computer den größten Teil des Datenbankteils in einem Computer, auf dem die DBMs gehostet werden, befinden sich im volatilen Speicher. Daten (Teile der Datenbank), die verarbeitet/manipuliert werden, befinden sich in einem Prozessor, möglicherweise in Caches des Prozessors. Diese Daten werden aus dem Speicher gelesen/geschrieben, normalerweise über einen Computer Bus (Bisher typischerweise flüchtige Speicherkomponenten). Der Computerspeicher kommuniziert Daten (übertragen auf/von) externer Speicher, typischerweise über Standardspeicherschnittstellen oder Netzwerke (z. B.,, Faserkanal, iscsi). EIN Speicherarray, eine gemeinsame externe Speichereinheit, die normalerweise eigene Speicherhierarchie hat, von einem schnellen Cache, der typischerweise aus (flüchtig und schnell) besteht Dram, was (erneut über Standardschnittstellen) mit Laufwerken verbunden ist, möglicherweise mit unterschiedlichen Geschwindigkeiten wie Flash -Laufwerke und magnetisch Laufwerke (nicht flüchtig). Die Laufwerke können mit verbunden sein mit Magnetbänder, auf denen typischerweise die am wenigsten aktiven Teile einer großen Datenbank oder Datenbanksicherungsgenerationen liegen können.

In der Regel besteht derzeit eine Korrelation zwischen Speichergeschwindigkeit und Preis, während der schnellere Speicher in der Regel volatil ist.

Datenstrukturen

Eine Datenstruktur ist ein abstraktes Konstrukt, das Daten genau definiert einbettet. Eine effiziente Datenstruktur ermöglicht die Manipulation der Daten auf effiziente Weise. Die Datenmanipulation kann Dateninsertion, Löschung, Aktualisierung und Abrufen in verschiedenen Modi umfassen. Ein bestimmter Datenstrukturtyp kann bei bestimmten Operationen sehr effektiv sein und bei anderen sehr unwirksam. Bei der DBMS -Entwicklung wird ein Datenstrukturtyp ausgewählt, um die für die von ihm enthaltenen Datenstypen erforderlichen Vorgänge am besten zu erfüllen. Art der Datenstruktur, die für eine bestimmte Aufgabe ausgewählt wurde, berücksichtigt in der Regel auch die Art des Speichers, in dem sie sich befindet (z. B. Zugangsgeschwindigkeit, minimale Größe des Zugriffs des Speicherbaus usw.). In einigen DBMSS -Datenbankadministratoren haben Administratoren die Flexibilität, zwischen den Optionen von Datenstrukturen aus den Leistungsgründen Benutzerdaten auszuwählen. Manchmal haben die Datenstrukturen wählbare Parameter, um die Datenbankleistung abzustimmen.

Datenbanken können Daten in vielen Datenstrukturtypen speichern.[1] Häufige Beispiele sind die folgenden:

Datenorientierung und Clusterbildung

Im Gegensatz zu herkömmlicher Zeilenorientierung können auch relationale Datenbanken sein Säulenorientiert oder Korrelation in der Art und Weise, wie sie Daten in einer bestimmten Struktur speichern.

Im Allgemeinen wird eine erhebliche Leistungsverbesserung gewonnen, wenn verschiedene Arten von Datenbankobjekten, die normalerweise zusammen verwendet werden, in der Nähe in der Nähe gelegt werden und "gruppiert" werden. Dies ermöglicht normalerweise, die erforderlichen verwandten Objekte in der minimalen Anzahl von Eingangsvorgängen aus dem Speicher abzurufen (jeweils manchmal wesentlich zeitaufwändig). Selbst für In-Memory-Datenbanken bietet Clustering die Leistungsvorteile aufgrund der häufigen Verwendung großer Caches für Eingabe-Output-Vorgänge im Speicher mit ähnlichem resultierenden Verhalten.

Zum Beispiel kann es vorteilhaft sein, eine Aufzeichnung eines "Elements" auf Lager mit all seinen jeweiligen "Order" -Datensätzen zu klusten. Die Entscheidung, ob bestimmte Objekte abgeholt werden sollen oder nicht, hängt von den Nutzungsstatistiken der Objekte, Objektgrößen, Caches -Größen, Speichertypen usw. ab.

Datenbankindexierung

Die Indexierung ist eine Technik, die einige Speichermotoren zur Verbesserung der Datenbankleistung verwenden. Die vielen Arten von Indizes teilen die gemeinsame Eigenschaft, die sie bei der Ausführung einer Abfrage untersuchen müssen. In großen Datenbanken kann dies die Abfragezeit/Kosten durch Größenordnungen verkürzen. Die einfachste Form des Index ist eine sortierte Liste von Werten, die mit a gesucht werden können binäre Suche Mit einem angrenzenden Verweis auf den Ort des Eintrags, analog zum Index in der Rückseite eines Buches. Dieselben Daten können mehrere Indizes haben (eine Mitarbeiterdatenbank könnte nach Nachnamen und Mietdatum indiziert werden).

Indizes beeinflussen die Leistung, jedoch keine Ergebnisse. Datenbankdesigner können Indizes hinzufügen oder entfernen, ohne die Anwendungslogik zu ändern, wodurch die Wartungskosten reduziert werden, wenn sich die Datenbank wächst und die Datenbanknutzung sich weiterentwickelt. Indizes können den Datenzugriff beschleunigen, sie verbrauchen jedoch Platz in der Datenbank und müssen jedes Mal aktualisiert werden, wenn die Daten geändert werden. Indizes können daher den Datenzugriff beschleunigen, aber die Datenwartung langsam. Diese beiden Eigenschaften bestimmen, ob ein bestimmter Index die Kosten wert ist.

Verweise

  1. ^ Lightstone, S.; Teorey, T.; Nadeau, T. (2007). Physikalisches Datenbankdesign: Der Leitfaden des Datenbankprofis zur Nutzung von Indizes, Ansichten, Speicher und mehr. Morgan Kaufmann Press. ISBN 978-0-12-369389-1.

Externe Links