Was ist eine Storage Definition Language (SDL)?


7

In meiner Vorlesung "Datenbanken" erwähnte der Lehrer, dass SQL nicht nur eine Datendefinitionssprache (DDL), eine Datenmanipulationssprache (DML) und eine Ansichtsdefinitionssprache (VDL) ist, sondern auch eine Speicherdefinitionssprache (SDL). Die letzte Verwendung enthält keine weiteren Erklärungen oder Beispiele.

Die Suche nach zusätzlichen Informationen im Internet zur Verwendung von SQL als SDL liefert keine relevanten Ergebnisse. Könnte jemand ein Beispiel für die Verwendung von SQL als Speicherdefinitionssprache geben ?

Bearbeiten:

Würde eine Spezifikation wie die von MySQL SET storage_engine=MYISAM;als Speicherdefinition gelten ? Es bezieht sich nicht wirklich auf die gespeicherten Daten, sondern darauf, wie sie gespeichert werden.


Haben Sie nach "SDL Storage Definition Language" gesucht? Es scheint mehrere Referenzen zu geben.
Gordon Linoff

Ja, aber leider sind die meisten von ihnen wirklich flache Definitionen oder einfach Definitionen des Akronyms selbst und nichts weiter. Diese Frage habe ich sogar nur auf der zweiten Seite der Google-Ergebnisse gefunden.

2
Ich vermute, dass "Storage Definition Language" sich auf alle Teile einer CREATE TABLEAnweisung bezieht , die die physikalischen Eigenschaften einer Tabelle und / oder die verschiedenen Arten von Indizes für eine Tabelle beschreiben. Ich habe den Begriff noch nie zuvor gehört, aber ich kann sehen, wie ein Akademiker in Bezug auf Spaltenattribute differenzieren möchte. Ich wollte dies zu einer Antwort machen, bin mir aber nicht sicher, ob dies eine gültige SO-Frage ist (obwohl interessant).

Das SDL-Zeug ist fast alles, was nicht durch den SQL-Standard spezifiziert ist, der in jedem DBMS unterschiedlich ist und was irgendetwas damit zu tun hat, wie oder wo die Daten in der relevanten Tabelle gespeichert werden. Also 'ja: SET storage_engine=MYISAMist ein MySQL-spezifisches Beispiel für SDL'.
Jonathan Leffler

Antworten:


2

Möglicherweise möchten Sie Ihren Lehrer bitten, "SDL" zu definieren. Ich glaube nicht, dass der Begriff im SQL-Standard vorkommt. Ich habe diese Referenz gefunden (siehe Seite 3) und bin anderer Meinung: SQL definiert nicht die physische Struktur, die physischen Bytes pro Feld, die Reihenfolge der physischen Felder, die physische Sortierung oder "gemischte Datensätze", was auch immer dies bedeuten mag. SQL definiert überhaupt keine Felder oder Datensätze oder sagt nichts darüber aus, wie die Daten auf der Festplatte gespeichert werden, wenn sie auf der Festplatte gespeichert sind.

Allerdings bietet jeder Anbieter dem Administrator einige Möglichkeiten, um zu definieren, wo die Daten aufbewahrt werden sollen, und viele bieten unterschiedliche Kontrollmöglichkeiten für physische Speicheraspekte (z. B. ISAM, Clustered-Indizes). AFAIK all das Zeug liegt außerhalb des SQL-Standards. Ich habe DBMS verwendet, die SQL DML verstehen, aber völlig getrennte Mechanismen zum Definieren von Tabellen und Speicher.


Das ist eine feine Linie: Die SQL-Spezifikation sagt tatsächlich, dass ein großes int ein "langes langes" ist
Evan Carroll


1

Aus den Grundlagen von Datenbanksystemen (7. Ausgabe) 7. Ausgabe (S. 39)

In DBMS, in denen eine klare Trennung zwischen der konzeptionellen und der internen Ebene beibehalten wird, wird die DDL nur zur Angabe des konzeptionellen Schemas verwendet. Eine andere Sprache, die Storage Definition Language (SDL) , wird verwendet, um das interne Schema anzugeben. Die Zuordnungen zwischen den beiden Schemata können in einer dieser Sprachen angegeben werden. In den meisten relationalen DBMS gibt es heute keine bestimmte Sprache, die die Rolle von SDL übernimmt. Stattdessen wird das interne Schema durch eine Kombination von Funktionen, Parametern und Spezifikationen für die Speicherung von Dateien angegeben. Diese ermöglichen es den DBA-Mitarbeitern, die Auswahl der Indizierung und die Zuordnung von Daten zum Speicher zu steuern. Für eine echte Architektur mit drei Schemata benötigen wir eine dritte Sprache, die View Definition Language (VDL)., um Benutzeransichten und deren Zuordnungen zum konzeptionellen Schema anzugeben. In den meisten DBMS wird die DDL jedoch verwendet, um sowohl konzeptionelle als auch externe Schemas zu definieren. In relationalen DBMS wird SQL in der Rolle von VDL verwendet, um Benutzer- oder Anwendungsansichten als Ergebnisse vordefinierter Abfragen zu definieren (siehe Kapitel 6 und 7).

In aktuellen DBMS werden die vorhergehenden Sprachtypen normalerweise nicht als unterschiedliche Sprachen betrachtet. Vielmehr wird eine umfassende integrierte Sprache verwendet, die Konstrukte für die konzeptionelle Schemadefinition, Ansichtsdefinition und Datenmanipulation enthält. Die Speicherdefinition wird normalerweise getrennt gehalten, da sie zum Definieren physischer Speicherstrukturen verwendet wird, um die Leistung des Datenbanksystems zu optimieren, was normalerweise vom DBA-Personal durchgeführt wird. Ein typisches Beispiel für eine umfassende Datenbanksprache ist die relationale SQL-Datenbanksprache (siehe Kapitel 6 und 7), die eine Kombination aus DDL, VDL und DML sowie Anweisungen für die Einschränkungsspezifikation, die Schemaentwicklung und viele andere Funktionen darstellt. Die SDL war eine Komponente in früheren Versionen von SQL, wurde jedoch aus der Sprache entfernt, um sie nur auf konzeptioneller und externer Ebene zu halten.

Dieselbe Quelle fährt fort, auf Seite 201,

Jedes kommerzielle RDBMS verfügt zusätzlich zu den SQL-Befehlen über eine Reihe von Befehlen zum Festlegen von Entwurfsparametern für physische Datenbanken, Dateistrukturen für Beziehungen und Zugriffspfaden wie Indizes. Wir haben diese Befehle in Kapitel 2 als Storage Definition Language (SDL) bezeichnet. Frühere Versionen von SQL verfügten über Befehle zum Erstellen von Indizes. Diese wurden jedoch aus der Sprache entfernt, da sie sich nicht auf der Ebene des konzeptionellen Schemas befanden. Viele Systeme haben noch die CREATE INDEXBefehle; aber sie erfordern ein besonderes Privileg. Wir beschreiben dies in Kapitel 17.

Es scheint, dass diese Begriffe VDL und SDL aus dem Drei-Schema stammen , eine Idee in den 1970er Jahren. Laut diesem Autor wurden sie mehr oder weniger in SQL zusammengeführt, einer umfassenden Sprache, die versucht, all diese Probleme zu lösen.

Ich glaube, sie werden auch in A Preliminary Architectural Design für die funktionale Hierarchie des INFOPLEX-Datenbankcomputers referenziert. (1980) als "Database Sublanguage Faculty" und "View Translation Layer". In den späten 70ern und frühen 80ern fand ich zahlreiche Hinweise auf Modellsprachen und Speichersprachen.

Ein Beispiel nehmen CREATE TABLE f (x int, y varchar(25));. Hier definieren Sie

  • SDL: Der Speicher für die Zeile int, varchar(25).
  • DDL: das Schema: f(x,y)ein relationales Tupel mit zwei Slots.
  • VDL: die "Ansicht", die nur eine Beziehung mit demselben Namen wie die Tabelle ist.

Zusätzlich zu den Dingen, die sich mit dem Speicher zu überschneiden scheinen, erweitern die meisten Datenbanken die Spezifikation, um über Indizes und Speicher-Backends zu sprechen, die sich absolut vom konzeptionellen Modell unterscheiden und sich auf das spezifische Speichermodell .

Sie können dies unter Datenbankverwaltungssysteme: Grundlegendes zur und Anwenden der Datenbanktechnologie (S. 210) als "Data Storage Definition Language (DSDL)" erneut sehen. Es wird viel über CODASYL, RDL (Relational Data Language), NDL (Network Data Language) und IRDIS (Information Resource Dictionary System) gesprochen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.