Ansichten: Übersicht

In diesem Thema werden Spanner-Ansichten vorgestellt und beschrieben.

Übersicht

Eine Ansicht ist eine virtuelle Tabelle, die durch eine SQL-Abfrage definiert wird. Beim Erstellen einer Datenansicht die SQL-Abfrage an, die es darstellt. Nachdem Sie eine Datenansicht erstellt haben, Abfragen ausführen, die auf die Ansicht wie eine Tabelle verweisen

Wenn eine Abfrage ausgeführt wird, die auf eine Ansicht verweist, erstellt Spanner die virtuelle Tabelle durch Ausführen der in der Ansicht definierten Abfrage. Diese virtuelle Der Inhalt der Tabelle wird von der verweisenden Abfrage verwendet.

Da die Abfrage, die eine Ansicht definiert, jedes Mal ausgeführt wird, wenn eine Abfrage, die sich auf ausgeführt wird, werden Ansichten manchmal als logische oder dynamische Ansichten verwenden, um sie von materialisierten SQL-Ansichten zu unterscheiden, in denen die Ergebnisse der Abfrage, die die Ansicht als tatsächliche Tabelle im Datenspeicher definiert.

In Spanner können Sie eine Ansicht entweder als Rechte des Rechnungsempfängers erstellen Ansicht oder die Rechteansicht eines Definierens. Das sind die beiden Arten von Sicherheitsmodellen, den Zugriff auf eine Ansicht für Nutzer zu steuern.

Rechteansichten des AufrufersRechteansichten von Definitionr
Beschreibung Wenn Sie eine Ansicht mit Aufruferrechten erstellen, muss eine Datenbankrolle Berechtigungen für die Ansicht und alle Schemaobjekte, die in der Ansicht Referenzen zum Abfragen der Ansicht. Weitere Informationen finden Sie unter Rechteansichten des Aufrufers: Wenn Sie eine Ansicht mit Definierenderrechten erstellen, muss eine Datenbankrolle (und nur die Ansicht), um die Ansicht abzufragen. Verwenden Sie neben der Ansicht der Rechtspersönlichkeiten des Definierenden auch eine detaillierte Zugriffssteuerung. Andernfalls Durch die Ansicht der Rechte der Definitionseinheit wird keine zusätzliche Zugriffssteuerung hinzugefügt. Für Weitere Informationen finden Sie unter Rechteansichten des Definitionrs.
Zum Erstellen der Ansicht erforderliche Berechtigungen So erstellen, gewähren und widerrufen Sie wenn Sie Zugriff auf beide Ansichtstypen haben, Berechtigung „spanner.database.updateDdl“.
Zum Abfragen der Ansicht erforderliche Berechtigungen Eine Datenbankrolle benötigt Berechtigungen für die Ansicht und alle zugrunde liegenden Daten Schema-Objekte zum Abfragen der Ansicht verwenden. Eine Datenbankrolle benötigt Berechtigungen für die Ansicht (und nur die Ansicht), um Abfrage der Ansicht.

Vorteile von Aufrufen

Ansichten bieten gegenüber der Aufnahme der von ihnen definierten Suchanfragen Anwendungslogik.

  • Ansichten können für Anwendungen eine logische Datenmodellierung bieten.

    Manchmal sind die Entscheidungen, die für die physische Datenmodellierung Spanner sind nicht die beste Abstraktion für Anwendungen, die Daten lesen diese Daten. Eine Ansicht kann ein alternatives Tabellenschema darstellen, das eine Abstraktion für Anwendungen.

  • In Ansichten sind Abfragedefinitionen zentralisiert, was die Wartung vereinfacht.

    Durch das Erstellen von Ansichten für häufig verwendete oder komplexe Abfragen können Sie Abfragetext aus Anwendungen ausklammern und zentralisieren. Dadurch ist es einfacher, Abfragetext über mehrere Anwendungen hinweg auf dem neuesten Stand zu halten und Abfragen können überarbeitet und optimiert werden, ohne dass sich der Anwendungscode ändern muss.

  • Ansichten bieten Stabilität über Schemaänderungen hinweg.

    Weil die Abfrage, die eine Ansicht definiert, stattdessen im Datenbankschema gespeichert wird. der Anwendungslogik kann und wird Spanner sicherstellen, Schemaänderungen an den Objekten (Tabellen, Spalten usw.), auf die sich die Abfrage bezieht die Abfrage nicht ungültig machen.

Gängige Anwendungsfälle

Verwenden Sie Ansichten, wenn Ihre Spanner-Datenbank stark privilegierte Daten enthält die nicht allen Datenbanknutzern zugänglich gemacht werden sollen, Daten kapseln.

Wenn Ihre Ansicht keine zusätzlichen Sicherheitsfunktionen benötigt und alle Aufrufer der Ansicht Zugriff auf alle Schemaobjekte haben, auf die die Ansicht verweist, erstellen der Rechteansicht eines Aufrufers.

Wenn Sie eine Ansicht erstellen möchten, in der nicht alle Aufrufer Zugriff auf alle Schemas haben -Objekte, auf die die Ansicht verweist, erstellen die Rechteansicht einer Definition. Definition sind besser geschützt und unterliegen mehr Einschränkungen, kann der Datenbankadministrator weniger Benutzern Berechtigungen für die Tabellen und Spalten, auf die in der Ansicht verwiesen wird. Die Rechteansichten des Definitionrs sind nützlich, benötigt eine Möglichkeit, sicher auf eine relevante Teilmenge von Spanner zuzugreifen Datenbank. Sie können z. B. die Ansicht der Rechte einer Definition folgende Daten:

  • Persönliche Kontodaten (z.B. Anwendungskunde).
  • Rollenspezifische Daten (z.B. Personalabteilung, Vertriebsmitarbeiter).
  • Standortspezifische Daten.

Rechteansichten des Aufrufers

Wenn eine Ansicht die Rechte eines Aufrufers hat, bedeutet dies, dass beim Ausführen eines Abfrage der Ansicht ausführen, prüft Spanner die Berechtigungen des Nutzers für die Ansicht und alle Schemaobjekte, auf die die Ansicht verweist. Der Nutzer muss Berechtigungen für alle Schemaobjekte haben, um die Ansicht abzufragen.

Rechteansichten von Definitionr

Die Rechteansicht eines Definiereners fügt der Ansicht zusätzliche Sicherheitsfunktionen hinzu. Es bietet unterschiedliche Berechtigungen für die Ansicht und die zugrunde liegenden Schemaobjekte. Wie bei den Aufrufrechten müssen die Benutzer über Berechtigungen auf Datenbankebene verfügen, Ansichten der Definitionsrechte erstellen. Der Hauptunterschied besteht darin, fragt Spanner die Rechteansicht einer Definition ab, überprüft Spanner, Die Rolle hat Zugriff auf die Datenansicht selbst (und nur auf die Datenansicht). Dementsprechend wird selbst wenn der Nutzer, der die Ansicht abfragt, keinen Zugriff auf alle zugrunde liegenden Schema-Objekten erstellt haben, können sie auf die Ansicht zugreifen und ihren Inhalt sehen. Rechte des Definitionrs Ansichten bieten Nutzern Zugriff auf aktuelle Daten, beschränkt auf die in der Ansicht definierten Zeilen.

Spanner-Berechtigungen für Identity and Access Management (IAM) werden am Datenbankebene. Detaillierte Zugriffssteuerung verwenden neben der Rechteansicht der Definierenden. Andernfalls fügt die Rechteansicht zusätzliche Zugriffssteuerung. Wenn der Nutzer Leseberechtigungen hat, für die Datenbank haben, haben sie Leseberechtigungen für alle Schemaobjekte im Datenbank. Nachdem Sie die detaillierte Zugriffssteuerung für Ihre Datenbank konfiguriert haben, Nutzer mit der Berechtigung SELECT für die Datenansicht und Nutzer mit Berechtigungen auf Datenbankebene für die Datenbank können die Ansicht abfragen. Die Der Unterschied besteht darin, dass ein Nutzer mit detaillierter Zugriffssteuerung keine Berechtigungen benötigt, für die zugrunde liegenden Objekte.

Einschränkungen von Ansichten

Ansichten haben im Vergleich zu tatsächlichen Tabellen Einschränkungen, sodass sie für bestimmte Anwendungsfälle nicht geeignet sind.

  • Ansichten sind schreibgeschützt. Sie können nicht zum Hinzufügen, Aktualisieren oder Löschen von Daten verwendet werden.

    In DML-Anweisungen (INSERT, UPDATE, DELETE) können keine Ansichten verwendet werden.

  • Bei einer Abfrage, die eine Ansicht definiert, können keine Abfrageparameter verwendet werden.

  • Ansichten können nicht indexiert werden.

  • Bei Verweisen auf Ansichten können keine Tabellenhinweise verwendet werden.

    Die Abfrage, die eine Ansicht definiert, kann jedoch Tabellenhinweise für die Tabellen enthalten, auf die sie verweist.

  • Ansichten werden vom Lesen API verwenden.

  • Rechteansichten des Definitionrs werden mit Spanner nicht unterstützt Daten-Optimierung

    Das Ausführen einer Abfrage, die die Rechteansicht einer Definitionin in Data Boost enthält, führt zu Fehler.

  • Der empfohlene Abfragemodus für Der Zugriff auf die Rechteansicht einer Definitionseinheit ist NORMAL.

    Nutzer, die keinen Zugriff auf die zugrunde liegenden Schemaobjekte eines Definierens haben erhalten einen Fehler, wenn in einem anderen Abfragemodus als normal eine Abfrage durchgeführt wird.

  • Nutzer können eine sorgfältig formulierte Abfrage erstellen, dass Spanner einen Fehler ausgibt, der die Existenz die in der Rechtsansicht der Definitionde nicht verfügbar sind.

    Angenommen, es gibt die folgende Ansicht "QualifiedStudentScores", gibt die Punktzahlen von Studenten zurück, die sich für einen Kurs qualifizieren. Die Kriterien für hängt vom Niveau und den Prüfungsergebnissen des Teilnehmers ab. Wenn die Das Niveau des Schülers/Studenten ist gleich oder kleiner als sechs, die Punktzahl ist wichtig und der Schüler/Student muss die Prüfung mindestens 50 Punkte sammeln, um sich zu qualifizieren. Andernfalls für Stufen gleich oder größer als sechs ist, erfüllt der Schüler/Student standardmäßig die Qualifikation.

      CREATE VIEW QualifiedStudentScores
      SQL SECURITY DEFINER AS
      SELECT
        s.Name,
        s.Level,
        sc.Score
      FROM Students AS s
      JOIN Scores AS sc ON sc.StudentId = s.StudentId
      WHERE
      (CASE
        WHEN (s.Level < 6) OR (s.Level >= 6 AND sc.Score >= 50)
          THEN 'QUALIFIED';
        ELSE 'FAILED';
      END) = 'QUALIFIED';
    

    Ein Nutzer kann eine Abfrage in der Form von SELECT * FROM QualifiedStudentScores s WHERE s.Level = 7 AND 1/(s.Score - 20) = 1; Diese Abfrage kann mit dem Fehler „Division durch Null“ fehlschlagen, wenn ein Schüler/Student in Level 7 mit 20 Punkten, obwohl die Ansicht die Daten auf 50 beschränkt hat Punkte und mehr für dieses Level.

Abfrageleistung bei der Verwendung von Ansichten

Die Leistung einer Abfrage, die auf eine Ansicht verweist, ist vergleichbar mit derselben Abfrage, wenn deren Ansichtsverweis durch die Ansichtsdefinition ersetzt wird.

Für Ansichten geltende Kontingente und Limits

  • Die Seite Kontingente und Limits auf der Seite „Kontingent“ und „Limit“ speziell für Ansichten.

  • Die Verwendung einer Ansicht in einer Abfrage kann die Konformität der Abfrage mit Abfragelimits beeinträchtigen, da die Definition der Ansicht Teil der Abfrage wird.

Auswirkungen auf die Kosten

Die Verwendung von Ansichten hat einen sehr geringen Einfluss auf die Kosten einer Instanz:

  • Die Verwendung von Ansichten hat keinen Einfluss auf die Anforderungen einer Instanz an die Rechenkapazität, im Vergleich zur Einbettung ihres definierten Abfragetextes in Abfragen, die sich auf sie beziehen.

  • Die Verwendung von Ansichten hat einen sehr kleinen Einfluss auf den Datenbankspeicher einer Instanz, da die durch das Ausführen der Abfragedefinition einer Ansicht generierte Tabelle nicht im nichtflüchtigen Datenbankspeicher gespeichert wird.

Nächste Schritte