Was sind Nachschlagetabellen in SQL und wofür werden sie verwendet?

Beste Antwort

Nachschlagetabellen sind weniger eine „SQL-Sache“ als vielmehr eine Verwendung im Datenbankdesign. Sie werden im Allgemeinen verwendet, um bei Datenbanknormalisierung für relativ statische Daten zu helfen, z. B. Tabellen mit Namen von Ländern, Bundesstaaten, Städten usw.

Ich bin mir nicht sicher, ob es im Datenbankdesignkontext eine formale akademische Definition von „Nachschlagetabellen“ gibt, aber wenn ich an sie denke, denke ich normalerweise an Tabellen mit den folgenden Eigenschaften:

  • Sie enthalten Konfigurations- oder Beschreibungsdaten im Vergleich zu Daten, die sich auf einzelne Anwendungsereignisse beziehen.
  • Sie sind im Vergleich zu ereignisbezogenen Tabellen klein.
  • Sie sind Insert-and- Lesen Sie Tabellen, und wenn Aktualisierungen stattfinden, sind sie selten.
  • Joins beginnen oder enden größtenteils in ihnen.
  • Ich betrachte sie oft als Analoga zu „Wörterbuch“ in Wörterbuchkomprimierungsalgorithmen .

Einige Beispiele für Nachschlagetabellen:

  • Anwendungskonfigurationstabellen.
  • Geografische (wie oben erwähnt) oder andere beschreibende Tabellen s B. eine Liste von Anbietern und Lieferanten, eine Produktkatalogtabelle für einen Webshop usw.
  • Listen mit Computernamen und Maschinenhardwareeigenschaften für eine Anwendung, die ein Rechenzentrum verwaltet.
  • Die Benutzerliste und Benutzerprofildaten (Bild, Benutzerbeschreibung usw.) für eine Website. Dinge wie die zuletzt besuchte Seite würden \_nicht\_ in Nachschlagetabellen enthalten sein.

Antwort

Geschwindigkeit ist nicht wirklich der treibende Faktor für den Wechsel zu einer NoSQL-Datenbank. Wenn Sie SQL- und NoSQL-Datenbanken nebeneinander verwenden und einfache Aktualisierungen und Lesevorgänge aus einer Tabelle vergleichen, sollten beide sehr schnell auf solche Abfragen reagieren.

Der Hauptunterschied besteht darin, dass NoSQL-Datenbanken speziell für die einfache Verarbeitung entwickelt wurden Mit Abfragen auf niedriger Ebene können Sie einige andere einfache Dinge wie Bereiche oder Sortierung abrufen, festlegen und möglicherweise festlegen. Ein großer Nachteil ist, dass Sie entscheiden müssen, wie Sie die dort eingegebenen Daten verwenden möchten, und im Voraus ein geeignetes Schema entwerfen müssen, mit dem Sie auf die Daten in dem von Ihnen gewünschten Format zugreifen können.

SQL hingegen kann enorm komplexe Abfragen verarbeiten, sofern die von Ihnen eingegebenen Daten korrekt denormalisiert sind. Sie müssen kein Schema für Ihren speziellen Anwendungsfall entwerfen und es verfügt über die enorme Flexibilität der Abfragesprache, die Daten in jedem Format zurückgeben kann, ohne das zugrunde liegende Schema ändern zu müssen.

Der Grund dafür SQL hat den Ruf, langsam zu sein. Die Verarbeitung einer komplexen Abfrage in einem großen Dataset erfordert zwangsläufig Zeit, während NoSQL die Möglichkeit bietet, langsame komplexe Abfragen überhaupt nicht auszuführen.

Es gibt keine Aus diesem Grund konnten Sie eine SQL-Datenbank nicht genauso verwenden wie eine NoSQL-Datenbank. Stellen Sie alle Ihre Daten in große Tabellen und verwenden Sie nur die grundlegendsten Abfragen. Es würde dann neben einer äquivalenten NoSQL-Datenbank sehr gut funktionieren, aber offensichtlich die meisten der nützlichsten Funktionen verschwenden. Dies ist in der Tat in vielen großen SQL-Datenbanken der Fall. Die Denormalisierung wird unterbrochen und die Flexibilität wird geopfert, um für bestimmte Abfragen zu optimieren.

SQL weist jedoch bestimmte Nachteile auf, und unter bestimmten Umständen werden diese Nachteile zu einem solchen Problem, dass wir bereit sind, die Flexibilität zu opfern, die es bietet überwinden Sie sie.

Erstens skaliert es horizontal nicht gut. Der Versuch, Ihre Daten auf viele kleinere Computer aufzuteilen, ist zwar nicht unmöglich, kann jedoch einen enormen Einfluss auf die Leistung haben. Große SQL-Datenbanken werden in der Regel auf sehr teurer Hochleistungshardware ausgeführt, um eine angemessene Leistung aufrechtzuerhalten, während NoSQL-Datenbanken in der Regel einfach und kostengünstig auf jede Größe skaliert werden können, indem einem Cluster einfach zusätzliche Standardhardware hinzugefügt wird.

Zweitens und vor allem ist SQL nicht fehlertolerant. Ja, es ist möglich, Ihre Daten auf einem zweiten Sicherungscomputer zu replizieren, aber dann verdoppeln Sie Ihre Kosten für spezialisierte Hochleistungshardware, und diese Hardware muss noch leistungsfähiger sein, um die zusätzliche Last der Synchronisierung zu bewältigen. Vergleichen Sie dies beispielsweise mit einem Cassandra-Cluster, und Sie könnten ein Dutzend kleinerer Computer mit Datenreplikation ausführen, die auf Wunsch sogar auf mehrere Rechenzentren verteilt sind. Die Last wird automatisch verteilt, Aktualisierungen werden über den Cluster verteilt und der Verlust eines Computers wird vom Endbenutzer nicht bemerkt.

Diese beiden Gründe sind die eigentlichen Gründe, warum Sie zwischen den beiden Technologien wählen sollten. Wenn Ihre Datenbank klein genug ist, um auf einen einzelnen Computer zu passen, und gelegentliche Ausfallzeiten während der Wiederherstellung aus einem Backup kein Problem darstellen, verwenden Sie SQL. Dies vereinfacht Ihre Entwicklung erheblich und bietet die Flexibilität, sich anzupassen, wenn sich Ihre Anforderungen ändern. Wenn Ihr Datensatz sehr groß sein wird oder Sie enge SLAs haben, entscheiden Sie sich für NoSQL. Überall dazwischen müssen Sie ein Urteil fällen, aber denken Sie daran, dass NoSQL-Kenntnisse derzeit sehr gefragt sind.Es kann sich lohnen, diesen Weg zu gehen, um Erfahrungen zu sammeln.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.