Database
 sql >> Datenbank >  >> RDS >> Database

Was sind Datenbanken?


Einführung

Datenbanken sind wesentliche Komponenten für viele moderne Anwendungen und Tools. Als Benutzer interagieren Sie möglicherweise jeden Tag mit Dutzenden oder Hunderten von Datenbanken, wenn Sie Websites besuchen, Anwendungen auf Ihrem Telefon verwenden oder Artikel im Lebensmittelgeschäft kaufen. Als Entwickler sind Datenbanken die Kernkomponente, die verwendet wird, um Daten über die Lebensdauer Ihrer Anwendung hinaus zu speichern. Aber was genau sind Datenbanken und warum sind sie so verbreitet?

In diesem Artikel gehen wir auf Folgendes ein:

  • was Datenbanken sind
  • wie sie von Personen und Anwendungen verwendet werden, um verschiedene Arten von Daten zu verfolgen
  • welche Funktionen Datenbanken bieten
  • welche Arten von Garantien sie geben
  • wie sie im Vergleich zu anderen Methoden der Datenspeicherung aussehen

Abschließend besprechen wir, wie Anwendungen auf Datenbanken zum Speichern und Abrufen von Daten angewiesen sind, um komplexe Funktionen zu ermöglichen.



Was sind Datenbanken?

Datenbanken sind logische Strukturen, die verwendet werden, um Daten für die zukünftige Verarbeitung, den Abruf oder die Auswertung zu organisieren und zu speichern. Im Zusammenhang mit Computern werden diese Strukturen fast immer von einer Anwendung verwaltet, die als Datenbankverwaltungssystem bezeichnet wird oder DBMS . Das DBMS verwaltet dedizierte Dateien auf der Festplatte des Computers und bietet eine logische Schnittstelle für Benutzer und Anwendungen.

Datenbankverwaltungssysteme sind in der Regel so konzipiert, dass sie Daten nach einem bestimmten Muster organisieren. Diese Muster werden als Datenbanktypen bezeichnet oder Datenbankmodelle sind die logischen und strukturellen Grundlagen, die bestimmen, wie einzelne Daten gespeichert und verwaltet werden. Es gibt viele verschiedene Datenbanktypen, die jeweils ihre eigenen Vorteile und Einschränkungen haben. Das relationale Modell , das Daten in Tabellen, Zeilen und Spalten mit Querverweisen organisiert, wird oft als das Standardparadigma angesehen.

DBMS können Datenbanken, die sie verwalten, über eine Vielzahl von Mitteln zugänglich machen, darunter Befehlszeilen-Clients, APIs, Programmierbibliotheken und Verwaltungsschnittstellen. Über diese Kanäle können Daten in das System aufgenommen, nach Bedarf organisiert und wie angefordert zurückgegeben werden.



Datenpersistenz vs. flüchtige Speicherung

Datenbanken speichern Daten entweder auf der Festplatte oder im Arbeitsspeicher.

Die Speicherung auf der Festplatte wird im Allgemeinen als persistent bezeichnet , sodass die Daten zuverlässig für später gespeichert werden, auch wenn die Datenbankanwendung oder der Computer selbst neu gestartet wird.

Im Gegensatz dazu wird In-Memory-Speicherung als flüchtig bezeichnet oder flüchtig . Flüchtiger Speicher übersteht das Herunterfahren von Anwendungen oder Systemen nicht. Der Vorteil von In-Memory-Datenbanken besteht darin, dass sie normalerweise sehr schnell sind.

In der Praxis verwenden viele Umgebungen eine Mischung dieser beiden Systemtypen, um die Vorteile jedes Typs zu nutzen. Bei Systemen, die neue Schreibvorgänge auf der flüchtigen Schicht akzeptieren, kann dies erreicht werden, indem flüchtige Daten regelmäßig auf der Festplatte gespeichert werden. Andere Systeme verwenden schreibgeschützte In-Memory-Kopien persistenter Daten, um den Lesezugriff zu beschleunigen. Diese Systeme können die Daten jederzeit aus dem Sicherungsspeicher neu laden, um ihre Daten zu aktualisieren.

Sicherungsspeichertyp Daten überleben Neustarts? Vorteile Beispiele
Auf Festplatte Ja Langlebigkeit der Daten MySQL
Im Speicher Nein Betriebsgeschwindigkeit speichern


Interaktion mit Datenbanken zur Verwaltung Ihrer Daten

Während sich das Datenbanksystem darum kümmert, wie die Daten auf der Festplatte oder im Arbeitsspeicher gespeichert werden, stellt es auch eine Schnittstelle für Benutzer oder Anwendungen bereit. Die Schnittstellen für die Datenbank müssen in der Lage sein, die Operationen darzustellen, die externe Parteien ausführen können, und müssen in der Lage sein, alle Datentypen darzustellen, die das System unterstützt.

Laut Wikipedia erlauben Datenbanken typischerweise die folgenden vier Arten von Interaktionen:

  • Datendefinition :Erstellen, ändern und entfernen Sie Definitionen der Datenstruktur. Diese Operationen ändern die Eigenschaften, die sich darauf auswirken, wie die Datenbank Daten akzeptiert und speichert. Dies ist bei einigen Datenbanktypen wichtiger als bei anderen.
  • Aktualisieren :Daten in der Datenbank einfügen, ändern und löschen. Diese Vorgänge ändern die tatsächlich verwalteten Daten.
  • Abruf :Zugriff auf die gespeicherten Daten gewähren. Daten können unverändert abgerufen oder oft gefiltert oder transformiert werden, um sie in ein nützlicheres Format zu bringen. Viele Datenbanksysteme verstehen umfangreiche Abfragesprachen, um dies zu erreichen.
  • Verwaltung :Andere Aufgaben wie Benutzerverwaltung, Sicherheit, Leistungsüberwachung usw., die notwendig sind, aber nicht direkt mit den Daten selbst zusammenhängen.

Gehen wir diese weiter unten etwas genauer durch.


Datendefinitionen steuern die Form und Struktur von Daten innerhalb des Systems

Das Erstellen und Steuern der Struktur, die Ihre Daten innerhalb der Datenbank annehmen, ist ein wichtiger Teil der Datenbankverwaltung. Dies kann Ihnen helfen, die Form oder Struktur Ihrer Daten zu kontrollieren, bevor Sie sie in das System aufnehmen. Außerdem können Sie Einschränkungen festlegen, um sicherzustellen, dass Ihre Daten bestimmten Parametern entsprechen.

In Datenbanken, die mit sehr regelmäßigen Daten arbeiten, wie z. B. relationale Datenbanken, werden diese Definitionen oft als das Schema der Datenbank bezeichnet . Ein Datenbankschema ist ein strenger Überblick darüber, wie Daten formatiert werden müssen, damit sie von einer bestimmten Datenbank akzeptiert werden. Dies umfasst die spezifischen Felder, die in einzelnen Datensätzen vorhanden sein müssen, sowie Anforderungen an Werte wie Datentyp, Feldlänge, Mindest- oder Höchstwerte usw. Ein Datenbankschema ist eines der wichtigsten Werkzeuge, die ein Datenbankbesitzer beeinflussen und beeinflussen muss Kontrolle der Daten, die im System gespeichert werden.

Datenbankverwaltungssysteme, die Flexibilität über Regelmäßigkeit stellen, werden oft als schemalose Datenbanken bezeichnet . Während dies zu implizieren scheint, dass die in diesen Datenbanken gespeicherten Daten keine Struktur haben, ist dies normalerweise nicht der Fall. Stattdessen wird die Struktur der Datenbank durch die Daten selbst und das Wissen und die Beziehung der Anwendung zu den Daten bestimmt. Die Datenbank hält sich normalerweise immer noch an eine Struktur, aber das Datenbankverwaltungssystem ist weniger an der Durchsetzung von Einschränkungen beteiligt. Dies ist eine Designentscheidung, die je nach Situation Vor- und Nachteile hat.



Datenaktualisierungen zum Aufnehmen, Ändern und Entfernen von Daten aus dem System

Datenaktualisierungen umfassen alle Vorgänge, die:

  • Fügt neue Daten in das System ein
  • Ändert bestehende Einträge
  • Löscht Einträge aus der Datenbank

Diese Fähigkeiten sind für jede Datenbank unerlässlich und stellen in vielen Fällen die Mehrheit der Aktionen dar, die das Datenbanksystem verarbeitet. Diese Arten von Aktivitäten – Vorgänge, die Änderungen an den Daten im System bewirken – werden zusammenfassend als Schreiben bezeichnet Operationen.

Schreibaktionen sind wichtig für jede Datenquelle, die sich im Laufe der Zeit ändert. Sogar das Entfernen von Daten, eine destruktive Aktion, wird als Schreibvorgang betrachtet, da sie die Daten innerhalb des Systems ändert.

Da Schreibvorgänge Daten ändern können, sind diese Aktionen potenziell gefährlich. Die meisten Datenbankadministratoren konfigurieren ihre Systeme so, dass Schreibvorgänge auf bestimmte Anwendungsprozesse beschränkt werden, um die Wahrscheinlichkeit einer versehentlichen oder böswilligen Datenverstümmelung zu minimieren. Beispielsweise benötigen Datenanalysen, die vorhandene Daten verwenden, um Fragen zur Leistung einer Website oder zum Besucherverhalten zu beantworten, nur eine Leseberechtigung. Andererseits muss der Teil der Anwendung, der die Bestellungen eines Benutzers aufzeichnet, in der Lage sein, neue Daten in die Datenbank zu schreiben.



Abrufen von Daten, um Informationen zu extrahieren oder spezifische Fragen zu beantworten

Das Speichern von Daten ist nicht sehr nützlich, es sei denn, Sie haben eine Möglichkeit, sie bei Bedarf abzurufen. Da die Rückgabe von Daten keine der derzeit in der Datenbank gespeicherten Informationen beeinflusst, werden diese Aktionen als Lesen bezeichnet Operationen. Lesevorgänge sind die primäre Methode zum Sammeln von Daten, die bereits in einer Datenbank gespeichert sind.

Datenbankverwaltungssysteme haben fast immer eine einfache Möglichkeit, auf Daten über einen eindeutigen Bezeichner zuzugreifen, der oft als Primärschlüssel bezeichnet wird . Dies ermöglicht den Zugriff auf einen beliebigen Eintrag durch Angabe des Schlüssels.

Viele Systeme verfügen auch über ausgefeilte Methoden zum Abfragen der Datenbank, um Datensätze zurückzugeben, die mit bestimmten Kriterien übereinstimmen, oder um Teilinformationen zu Einträgen zurückzugeben. Diese Art der Abfrageflexibilität hilft dem Datenbankverwaltungssystem, zusätzlich zu seinen grundlegenden Datenspeicherfähigkeiten als Datenprozessor zu arbeiten. Durch die Entwicklung spezifischer Abfragen können Benutzer das Datenbanksystem veranlassen, nur die Informationen zurückzugeben, die sie benötigen. Diese Funktion wird häufig in Verbindung mit Schreibvorgängen verwendet, um einen bestimmten Datensatz anhand seiner Eigenschaften zu lokalisieren und zu ändern.



Verwaltung des Datenbanksystems, damit alles reibungslos läuft

Die letzte Kategorie von Aktionen, die Datenbanken häufig unterstützen, sind Verwaltungsfunktionen. Dies ist eine breite, allgemeine Klasse von Aktionen, die dabei helfen, die Datenbankumgebung zu unterstützen, ohne die Daten selbst direkt zu beeinflussen. Einige Elemente, die in diese Gruppe passen könnten, sind:

  • Benutzer, Berechtigungen, Authentifizierung und Autorisierung verwalten
  • Einrichten und Verwalten von Sicherungen
  • Konfigurieren des Sicherungsmediums für die Speicherung
  • Verwaltung der Replikation und andere Überlegungen zur Skalierung
  • Bereitstellung von Online- und Offline-Wiederherstellungsoptionen

Diese Reihe von Aktionen entspricht den grundlegenden administrativen Belangen, die jeder modernen Anwendung gemeinsam sind.

Verwaltungsvorgänge sind möglicherweise nicht von zentraler Bedeutung für die Kernfunktionen der Datenverwaltung, aber diese Funktionen heben ähnliche Datenbankverwaltungssysteme häufig von anderen ab. Die Möglichkeit, Daten einfach zu sichern und wiederherzustellen, eine Benutzerverwaltung zu implementieren, die sich in vorhandene Systeme einfügt, oder Ihre Datenbank bedarfsgerecht zu skalieren, sind alles wesentliche Funktionen für den Betrieb in der Produktion. Datenbanken, die diesen Bereichen keine Aufmerksamkeit schenken, haben oft Schwierigkeiten, sich in realen Umgebungen durchzusetzen.




Welche Aufgaben haben Datenbanken?

Wie können wir angesichts der obigen Beschreibung die primären Verantwortlichkeiten verallgemeinern, die Datenbanken haben? Die Antwort hängt stark von der Art der verwendeten Datenbank und den Anforderungen Ihrer Anwendungen ab. Trotzdem gibt es eine gemeinsame Reihe von Verantwortlichkeiten, die alle Datenbanken zu erfüllen versuchen.


Schutz der Datenintegrität durch originalgetreue Aufzeichnung und Rekonstruktion

Die Datenintegrität ist eine grundlegende Anforderung an ein Datenbanksystem, unabhängig von seinem Zweck oder Design. In die Datenbank geladene Daten sollten zuverlässig ohne unerwartete Modifikation, Manipulation oder Löschung abgerufen werden können. Dies erfordert zuverlässige Methoden zum Laden und Abrufen von Daten sowie zum Serialisieren und Deserialisieren der Daten nach Bedarf, um sie auf physischen Medien zu speichern.

Datenbanken verlassen sich häufig auf Funktionen, um Daten beim Schreiben oder Abrufen zu überprüfen, wie z. B. Prüfsummen, oder um sich vor Problemen zu schützen, die durch unerwartetes Herunterfahren verursacht werden, z. B. mithilfe von Techniken wie Write-Ahead-Protokollen. Die Datenintegrität wird umso schwieriger, je verteilter der Datenspeicher ist, da jeder Teil des Systems den aktuellen gewünschten Zustand jedes Datenelements widerspiegeln muss. Dies wird oft mit robusteren Anforderungen und Antworten von mehreren Mitgliedern erreicht, wenn Daten im System geändert werden.



Angebot einer Leistung, die den Anforderungen der Bereitstellungsumgebung entspricht

Datenbanken müssen angemessen funktionieren, um nützlich zu sein. Welche Leistungsmerkmale Sie benötigen, hängt stark von den besonderen Anforderungen Ihrer Anwendungen ab. Jede Umgebung hat ein einzigartiges Gleichgewicht von Lese- und Schreibanforderungen, und Sie müssen entscheiden, was eine akzeptable Leistung für diese beiden Kategorien bedeutet.

Datenbanken können im Allgemeinen bestimmte Arten von Operationen besser ausführen als andere. Betriebsleistungsmerkmale spiegeln häufig den verwendeten Datenbanktyp, das Datenschema oder die Datenstruktur und den Betrieb selbst wider. In einigen Fällen Funktionen wie Indizierung , das einen alternativen, leistungsoptimierten Speicher für häufig aufgerufene Daten erstellt, kann ein schnelleres Abrufen dieser Elemente ermöglichen. In anderen Fällen passt die Datenbank möglicherweise einfach nicht gut zu den angeforderten Zugriffsmustern. Dies sollten Sie berücksichtigen, wenn Sie entscheiden, welche Art von Datenbank Sie benötigen.



Einrichten von Prozessen zur Ermöglichung eines sicheren gleichzeitigen Zugriffs

Obwohl dies keine strenge Anforderung ist, müssen Datenbanken in der Praxis einen gleichzeitigen Zugriff zulassen. Das bedeutet, dass mehrere Parteien gleichzeitig mit der Datenbank arbeiten können müssen. Datensätze sollten von beliebig vielen Benutzern gleichzeitig lesbar und beschreibbar sein, wenn sie derzeit nicht von einem anderen Benutzer gesperrt sind.

Gleichzeitiger Zugriff bedeutet normalerweise, dass die Datenbank einige andere grundlegende Funktionen wie Benutzerkonten, ein Berechtigungssystem sowie Authentifizierungs- und Autorisierungsmechanismen implementieren muss. Es muss auch Strategien entwickeln, um zu verhindern, dass mehrere Benutzer gleichzeitig versuchen, dieselben Daten zu manipulieren. Datensatzsperrungen und Transaktionen werden oft implementiert, um diese Bedenken auszuräumen.



Einzelnes oder aggregiertes Abrufen von Daten

Eine der grundlegenden Aufgaben einer Datenbank ist die Fähigkeit, Daten auf Anfrage abzurufen. Die Anforderungen können sich auf einzelne Daten beziehen, die einem einzelnen Datensatz zugeordnet sind, oder sie können das Abrufen der Daten umfassen, die in vielen verschiedenen Datensätzen gefunden wurden. Beide Fälle müssen in den meisten Systemen möglich sein.

In den meisten Datenbanken wird während des Abrufs ein gewisses Maß an Datenverarbeitung von der Datenbank selbst bereitgestellt. Dazu können die folgenden Arten von Vorgängen gehören:

  • Suche nach Kriterien
  • Filtern und Einhalten von Beschränkungen
  • Extrahieren bestimmter Felder
  • Mittelung, Sortierung usw.

Diese Optionen helfen Ihnen dabei, die gewünschten Daten und das nützlichste Format zu formulieren.




Alternativen zu Datenbanken

Bevor wir weitermachen, sollten wir kurz einen Blick darauf werfen, welche Möglichkeiten Sie haben, wenn Sie keine Datenbank verwenden.

Die meisten Methoden, die Daten speichern, können als eine Art Datenbank klassifiziert werden. Einige wenige Ausnahmen sind die folgenden.


Lokaler Speicher oder temporäre Dateisysteme

Manchmal produzieren Anwendungen Daten, die nicht nützlich sind oder die nur für die Lebensdauer der Anwendung relevant sind. In diesen Fällen möchten Sie diese Daten möglicherweise im Speicher behalten oder in ein temporäres Dateisystem auslagern, da Sie sie nach dem Beenden der Anwendung nicht mehr benötigen. In Fällen, in denen die Daten nie nützlich sind, möchten Sie möglicherweise die Ausgabe vollständig deaktivieren oder sie in /dev/null protokollieren .



Serializing application data direct to the local filesystem

Ein weiterer Fall, in dem eine Datenbank möglicherweise nicht erforderlich ist, besteht darin, dass eine kleine Datenmenge stattdessen direkt serialisiert und deserialisiert werden kann. Dies ist nur für kleine Datenmengen mit einem vorhersagbaren Verwendungsmuster praktisch, das, wenn überhaupt, nicht viel Parallelität beinhaltet. Dies lässt sich nicht gut skalieren, kann aber in bestimmten Fällen nützlich sein, z. B. bei der Ausgabe lokaler Protokollinformationen.



Speichern dateiähnlicher Objekte direkt auf Festplatte oder Objektspeicher

Manchmal können Daten aus Anwendungen direkt auf die Festplatte oder einen alternativen Speicher geschrieben werden, anstatt sie in einer Datenbank zu speichern. Wenn die Daten beispielsweise bereits in einem dateiorientierten Format wie einer Bild- oder Audiodatei organisiert sind und keine zusätzlichen Metadaten erfordern, ist es möglicherweise am einfachsten, sie direkt auf der Festplatte oder in einem dedizierten Objektspeicher zu speichern.




Wofür werden Datenbanken verwendet?

Fast alle Anwendungen und Websites, die nicht vollständig statisch sind, sind irgendwo in ihrer Umgebung auf eine Datenbank angewiesen. Der Hauptzweck der Datenbank bestimmt häufig den verwendeten Datenbanktyp, die gespeicherten Daten und die verwendeten Zugriffsmuster. Häufig werden mehrere Datenbanksysteme eingesetzt, um unterschiedliche Datentypen mit unterschiedlichen Anforderungen zu verarbeiten. Einige Datenbanken sind flexibel genug, um je nach Art der verschiedenen Datensätze mehrere Rollen zu erfüllen.

Sehen wir uns ein Beispiel an, um die Berührungspunkte zu erörtern, die eine typische Webanwendung mit Datenbanken haben kann. Wir tun so, als ob die Anwendung eine einfache Storefront enthält und Artikel verkauft, die sie in einem Inventar verfolgt.


Speicherung und Verarbeitung von Websitedaten

Eine der Hauptanwendungen für Datenbanken ist das Speichern und Verarbeiten von Daten, die sich auf die Site beziehen. Diese Elemente wirken sich darauf aus, wie Informationen auf der Website organisiert werden, und machen in vielen Fällen den größten Teil des "Inhalts" der Website aus.

In der oben erwähnten Beispielanwendung würde die Datenbank den größten Teil des Inhalts für die Website füllen, einschließlich Produktinformationen, Bestandsdetails und Benutzerprofilinformationen. Das bedeutet, dass jedes Mal, wenn eine Produktliste, eine Produktdetailseite oder ein Benutzerprofil angezeigt werden muss, die Datenbank oder ein zwischengeschalteter Cache konsultiert wird.

Eine Datenbank wäre auch beteiligt, wenn aktuelle und vergangene Bestellungen angezeigt, Versandkosten berechnet und Rabatte angewendet werden, indem Rabattcodes überprüft oder Stammkundenprämien berechnet werden. Unsere Beispielwebsite würde das Datenbanksystem verwenden, um Bestellungen korrekt zu erstellen, indem Produktinformationen, Inventar und Benutzerinformationen kombiniert werden. Die zusammengesetzten Informationen, die in einer Bestellung aufgezeichnet werden, würden erneut in einer Datenbank gespeichert, um die Bestellabwicklung zu verfolgen, Rücksendungen zu ermöglichen, Bestellungen zu stornieren oder zu ändern oder einen besseren Kundensupport zu ermöglichen.



Analysieren von Informationen, um bessere Entscheidungen zu treffen

Die Aktionen in der letzten Kategorie bezogen sich auf die Grundfunktionalität der Website. Diese sind zwar sehr wichtig für die Handhabung der Datenanforderungen der Anwendungsschicht, geben aber nicht das ganze Bild wieder.

Sobald Ihre Webanwendung mit der Registrierung von Benutzern und der Verarbeitung von Bestellungen beginnt, möchten Sie wahrscheinlich detaillierte Fragen dazu beantworten können, wie sich verschiedene Produkte verkaufen, wer Ihre profitabelsten Benutzer sind und welche Faktoren Ihren Umsatz beeinflussen. Dies sind analytische Fragen, die jederzeit ausgeführt werden können, um aktuelle Informationen über die Trends und die Leistung Ihres Unternehmens zu sammeln.

Diese Arten von Vorgängen werden oft als Business Intelligence bezeichnet oder Analysen . Zusammen helfen sie Organisationen dabei, zu verstehen, was in der Vergangenheit passiert ist, und fundierte Änderungen vorzunehmen. Datenbanksysteme speichern die meisten Daten, die während dieser Prozesse verwendet werden, und müssen die entsprechenden Tools oder Abfragefunktionen bereitstellen, um Fragen dazu zu beantworten.

In unserer Beispielanwendung könnten die Datenbanken abgefragt werden, um Fragen zu Produkttrends, Benutzerregistrierungsnummern, Bundesstaaten, an die wir am häufigsten liefern, oder wer unsere treuesten Benutzer sind, zu beantworten. Diese relativ einfachen Abfragen können verwendet werden, um komplexere Fragen zu verfassen, um Faktoren, die die Produktleistung beeinflussen, besser zu verstehen und zu kontrollieren.



Softwarekonfiguration verwalten

Einige Arten von Datenbanken werden als Repositories für Konfigurationswerte für andere Software im Netzwerk verwendet. Diese dienen als zentrale Wahrheitsquelle für Konfigurationswerte im Netzwerk. Wenn neue Dienste gestartet werden, werden sie so konfiguriert, dass sie die Werte für bestimmte Schlüssel an der Netzwerkadresse der Konfigurationsdatenbank prüfen. Dadurch können Sie alle Informationen, die zum Bootstrap von Diensten benötigt werden, an einem Ort speichern.

Nach dem Bootstrapping können Anwendungen so konfiguriert werden, dass sie die Schlüssel, die sich auf ihre Konfiguration beziehen, auf Änderungen überwachen. Wenn eine Änderung erkannt wird, kann sich die Anwendung neu konfigurieren, um die neue Konfiguration zu verwenden. Dieser Prozess wird manchmal von einem Managementprozess orchestriert, der die neuen Werte im Laufe der Zeit einführt, indem alte Dienste heruntergefahren werden, wenn neue Dienste hinzukommen, und die aktive Konfiguration im Laufe der Zeit geändert wird, um die Verfügbarkeit aufrechtzuerhalten.

Unsere Anwendung könnte diese Art von Datenbank verwenden, um dauerhafte Konfigurationsdaten für unsere gesamte Anwendungsumgebung zu speichern. Unsere Anwendungsserver, Webserver, Load Balancer, Messaging-Warteschlangen und mehr können so konfiguriert werden, dass sie auf eine Konfigurationsdatenbank verweisen, um ihre Produktionseinstellungen abzurufen. Die Entwickler der Anwendung könnten dann das Verhalten der Umgebung ändern, indem sie die Konfigurationswerte an einer zentralen Stelle optimieren.



Erfassen von Protokollen, Ereignissen und anderen Ausgaben

Das Ausführen von Anwendungen, die aktiv Anfragen bedienen, kann viel Output generieren. Dazu gehören Protokolldateien, Ereignisse und andere Ausgaben. Diese können auf die Festplatte oder einen anderen nicht verwalteten Speicherort geschrieben werden, aber dies schränkt ihre Nützlichkeit ein. Das Sammeln dieser Art von Daten in einer Datenbank erleichtert die Arbeit, das Erkennen von Mustern und das Analysieren von Ereignissen, wenn etwas Unerwartetes passiert oder wenn Sie mehr über die historische Leistung erfahren möchten.

Unsere Beispielanwendung könnte zur einfacheren Analyse Protokolle von jedem unserer Systeme in einer Datenbank sammeln. Dies kann uns helfen, Korrelationen zwischen Ereignissen zu finden, wenn wir versuchen, die Ursache von Problemen zu analysieren oder den Zustand unserer Umwelt als Ganzes zu verstehen.

Getrennt davon sammeln wir möglicherweise von unserer Infrastruktur und unserem Code erzeugte Metriken in einer Zeitreihendatenbank , eine Datenbank, die speziell dafür entwickelt wurde, Werte im Laufe der Zeit zu verfolgen. Diese Datenbank könnte verwendet werden, um Überwachungs- und Visualisierungstools in Echtzeit zu betreiben, um die Entwicklungs- und Betriebsteams der Anwendung mit Informationen über Leistung, Fehlerraten usw. zu versorgen.




Wie arbeiten unterschiedliche Rollen mit Datenbanken?

Datenbanken sind von grundlegender Bedeutung für die Arbeit vieler verschiedener Rollen in Organisationen. In kleineren Teams können eine oder wenige Personen für die Erfüllung der Aufgaben verschiedener Rollen verantwortlich sein. In größeren Unternehmen sind diese Verantwortlichkeiten oft in separate Rollen unterteilt, die von engagierten Einzelpersonen oder Teams wahrgenommen werden.


Datenarchitekten

Datenarchitekten sind verantwortlich für die gesamte Makrostruktur der Datenbanksysteme, die Schnittstellen, die sie Anwendungen und Entwicklungsteams zur Verfügung stellen, und die zugrunde liegenden Technologien und Infrastrukturen, die erforderlich sind, um die Datenanforderungen der Organisation zu erfüllen.

Personen in dieser Rolle entscheiden im Allgemeinen über ein geeignetes Datenbankmodell und eine Implementierung, die für verschiedene Anwendungen verwendet werden. Sie sind verantwortlich für die Umsetzung von Datenbankentscheidungen, indem sie Optionen untersuchen, sich für eine Technologie entscheiden, sie in vorhandene Systeme integrieren und eine umfassende Datenstrategie für die Organisation entwickeln. Sie beschäftigen sich ganzheitlich mit den Datensystemen und wirken bei der Entscheidung und Umsetzung von Datenmodellen für verschiedene Projekte mit.



DBAs (Datenbankadministratoren)

Datenbankadministratoren oder DBAs sind Personen, die dafür verantwortlich sind, dass Datensysteme reibungslos funktionieren. Sie sind verantwortlich für die Planung neuer Datensysteme, die Installation und Konfiguration von Software, die Einrichtung von Datenbanksystemen für andere Parteien und die Leistungsverwaltung. Sie sind häufig auch dafür verantwortlich, die Datenbank zu sichern, sie auf Probleme zu überwachen und Anpassungen am System vorzunehmen, um Nutzungsmuster zu optimieren.

Datenbankadministratoren sind Experten sowohl für einzelne Datenbanksysteme als auch für deren gute Integration in das zugrunde liegende Betriebssystem und die Hardware, um die Leistung zu maximieren. Sie arbeiten intensiv mit Teams zusammen, die die Datenbanken verwenden, um Kapazität und Leistung zu verwalten und Teams bei der Behebung von Problemen mit dem Datenbanksystem zu unterstützen.



Anwendungsentwickler

Anwendungsentwickler interagieren auf viele verschiedene Arten mit Datenbanken. Sie entwickeln viele der Anwendungen, die mit der Datenbank interagieren. Dies ist sehr wichtig, da dies fast immer die einzigen Anwendungen sind, die steuern, wie einzelne Benutzer oder Kunden mit den vom Datenbanksystem verwalteten Daten interagieren. Leistung, Korrektheit und Zuverlässigkeit sind für Anwendungsentwickler unglaublich wichtig.

Entwickler verwalten die mit ihren Anwendungen verknüpften Datenstrukturen, um ihre Daten auf der Festplatte zu speichern. Sie müssen Mechanismen erstellen oder verwenden, die ihre Programmierdaten auf das Datenbanksystem abbilden können, damit die Komponenten harmonisch zusammenarbeiten können. Wenn sich Anwendungen ändern, müssen sie die Daten und Datenstrukturen innerhalb des Datenbanksystems synchron halten. Wir werden später in diesem Artikel mehr darüber sprechen, wie Entwickler mit Datenbanken arbeiten.



SREs (Site Reliability Engineers) und Betriebsfachleute

SREs (Site Reliability Engineers) und Betriebsfachleute interagieren mit Datenbanksystemen aus Sicht der Infrastruktur und Anwendungskonfiguration. Sie können dafür verantwortlich sein, zusätzliche Kapazität bereitzustellen, Datenbanksysteme einzurichten, sicherzustellen, dass die Datenbankkonfiguration den Unternehmensrichtlinien entspricht, die Betriebszeit zu überwachen und Backups zu verwalten.

Diese Personen haben in vielerlei Hinsicht überlappende Verantwortlichkeiten mit DBAs, konzentrieren sich aber nicht nur auf Datenbanken. Das Betriebspersonal stellt sicher, dass die Systeme, auf die sich die Anwendungen des restlichen Unternehmens verlassen, einschließlich der Datenbanksysteme, zuverlässig funktionieren und minimale Ausfallzeiten haben.



Business Intelligence und Datenanalysten

Business-Intelligence-Abteilungen und Datenanalysten interessieren sich in erster Linie für die Daten, die bereits gesammelt und innerhalb des Datenbanksystems verfügbar sind. Sie arbeiten daran, auf der Grundlage von Trends und Mustern in den Daten Erkenntnisse zu gewinnen, damit sie die zukünftige Leistung vorhersagen, das Unternehmen bei möglichen Änderungen beraten und Fragen zu den Daten für andere Abteilungen wie Marketing und Vertrieb beantworten können.

Datenanalysten können in der Regel ausschließlich mit Lesezugriff auf Datensysteme arbeiten. Die von ihnen ausgeführten Abfragen haben oft dramatisch andere Leistungsmerkmale als die von den primären Anwendungen verwendeten. Aus diesem Grund arbeiten sie oft mit Datenbank-Replikaten oder -Kopien, damit sie lang andauernde und leistungsintensive aggregierte Abfragen durchführen können, die sich andernfalls auf die Ressourcennutzung des primären Datenbanksystems auswirken könnten.




Wie arbeite ich als Entwickler mit Datenbanken?

Wie geht man als Anwendungsentwickler eigentlich bei der Arbeit mit Datenbanken vor? Wenn Ihre Anwendung den Zustand verwalten und beibehalten muss, ist die Arbeit mit einer Datenbank auf grundlegender Ebene ein wichtiger Teil Ihres Codes.


Übersetzen von Daten zwischen Ihrer Anwendung und der Datenbank

Sie müssen eine vorhandene Schnittstelle für die Kommunikation mit der Datenbank erstellen oder verwenden. Sie können sich über reguläre Netzwerkfunktionen direkt mit der Datenbank verbinden, einfache Bibliotheken oder übergeordnete Programmierbibliotheken (z. B. Abfrageersteller oder ORMs) nutzen.

ORMs , oder objektrelationale Mapper, sind Abbildungsschichten, die die in relationalen Datenbanken gefundenen Tabellen in die Klassen übersetzen, die in objektorientierten Programmiersprachen verwendet werden, und umgekehrt. Obwohl diese Übersetzung oft nützlich ist, ist sie nie perfekt. Objektbezogene Impedanzfehlanpassung ist ein Begriff, der verwendet wird, um die Reibung zu beschreiben, die durch die unterschiedliche Art und Weise verursacht wird, wie relationale Datenbanken und objektorientierte Programme Daten strukturieren.

Obwohl relationale Datenbanken und objektorientierte Programmierung zwei spezifische Gestaltungsmöglichkeiten beschreiben, ist das Problem der Übersetzung zwischen der Anwendungs- und der Datenbankschicht ein allgemeines Problem, das unabhängig vom Datenbanktyp oder Programmierparadigma existiert. Datenbankabstraktionsschicht ist ein allgemeinerer Begriff für Software mit der Aufgabe, zwischen diesen beiden Kontexten zu übersetzen.



Halten Sie strukturelle Änderungen mit der Datenbank synchron

Eine wichtige Tatsache, die Sie bei der Entwicklung Ihrer Anwendungen entdecken werden, ist, dass die Datenbank, da sie außerhalb Ihrer Codebasis existiert, besondere Aufmerksamkeit erfordert, um mit Änderungen an Ihrer Datenstruktur fertig zu werden. Dieses Problem tritt bei einigen Datenbankdesigns häufiger auf als bei anderen.

Der gebräuchlichste Ansatz zur Synchronisierung der Datenstrukturen Ihrer Anwendung mit Ihrer Datenbank ist ein Prozess namens Datenbankmigration oder Schemamigration (beides umgangssprachlich einfach als Migration bezeichnet). Bei der Migration wird die Struktur Ihrer Datenbank aktualisiert, um Änderungen widerzuspiegeln, wenn sich das Datenmodell Ihrer Anwendung weiterentwickelt. Diese haben normalerweise die Form einer Reihe von Dateien, eine für jede Evolution, die die Anweisungen enthalten, die benötigt werden, um die Datenbank in das neue Format umzuwandeln.



Schutz des Zugriffs auf Ihre Daten und Bereinigung von Eingaben

Eine wichtige Verantwortung bei der Arbeit mit Datenbanken als Entwickler besteht darin, sicherzustellen, dass Ihre Anwendungen keinen unbefugten Zugriff auf Daten zulassen. Datensicherheit ist ein umfassendes, vielschichtiges Problem mit vielen Beteiligten. Letztendlich sind einige der Sicherheitsüberlegungen Ihre Pflicht, sich um sie zu kümmern.

Ihre Anwendung benötigt privilegierten Zugriff auf Ihre Datenbank, um Routineaufgaben auszuführen. Aus Sicherheitsgründen kann das Autorisierungsframework der Datenbank dazu beitragen, die Art der Operationen einzuschränken, die Ihre Anwendung ausführen kann. However, you need to ensure that your application restricts those operations appropriately. For example, if your application manages user profile data, you have to prevent a user from manipulating that access to view or edit other users' information.

One specific challenge is sanitizing user input. Sanitizing input means taking special precautions when operating on any data provided by a user. There is a long history of malicious actors using normal user input mechanisms to trick applications into revealing sensitive data. Crafting your applications to protect against these scenarios is an important skill.




Conclusion

Databases are an indispensable component in modern application development. Storing and controlling the stateful information related to your application and its environment is an important responsibility that requires reliability, performance, and flexibility.

Fortunately, there are many different database options designed to fulfil the requirements of different types of applications. In our next article, we'll take an in-depth look at the different types of databases available and how they can be used to match different types of application requirements.