Auf dieser Seite wird beschrieben, wie Sie benannte Schemas erstellen, verwenden und löschen und wie Sie eine detaillierte Zugriffssteuerung auf Objekte in benannten Schemas anwenden. Weitere Informationen zu benannten Schemas finden Sie unter Benannte Schemas.
Hinweise
Für die Durchführung von Verfahren auf dieser Seite benötigen Sie Folgendes:
- Die Rolle Database Admin roles/spanner.databaseAdmin für Ihr Nutzerkonto.
- Informieren Sie sich über die Funktionsweise der differenzierten Zugriffssteuerung.
Benanntes Schema erstellen
Der Befehl CREATE SCHEMA
(GoogleSQL und PostgreSQL) wird zum Erstellen eines benannten Schemas verwendet.
Öffnen Sie in der Google Cloud Console die Seite Spanner.
Wählen Sie eine Instanz aus der Liste aus.
Wählen Sie eine Datenbank aus.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Öffnen Sie einen neuen Tab. Klicken Sie dazu auf
Neuer SQL-Editor-Tab oder Neuer Tab.Geben Sie auf dem Tab Editor Ihre DDL ein.
GoogleSQL
Führen Sie die Anweisung
CREATE SCHEMA
aus, um das benannte Schema zu erstellen. Beispiel:CREATE SCHEMA sch1;
Fügen Sie dem benannten Schema Datenbankobjekte hinzu. Beispiel:
CREATE SEQUENCE sch1.sequence OPTIONS ( sequence_kind = 'bit_reversed_positive' ); CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX), ) PRIMARY KEY(SingerId); CREATE INDEX indexOnSingers ON Singers(FirstName); CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE; CREATE TABLE Songs ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, TrackId INT64 NOT NULL, SongName STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId, TrackId), INTERLEAVE IN PARENT Albums ON DELETE CASCADE; CREATE TABLE sch1.Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX), ) PRIMARY KEY(SingerId); CREATE INDEX sch1.indexOnSingers ON sch1.Singers(FirstName); CREATE TABLE sch1.Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId), INTERLEAVE IN PARENT sch1.Singers ON DELETE CASCADE; CREATE TABLE sch1.Songs ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, TrackId INT64 NOT NULL, SongName STRING(MAX), ) PRIMARY KEY(SingerId, AlbumId, TrackId), INTERLEAVE IN PARENT sch1.Albums ON DELETE CASCADE; CREATE VIEW sch1.SingerView SQL SECURITY INVOKER AS Select s.FirstName, s.LastName, s.SingerInfo FROM sch1.Singers AS s WHERE s.SingerId = 123456; CREATE VIEW SingerView SQL SECURITY INVOKER AS Select s.FirstName, s.LastName, s.SingerInfo FROM Singers AS s WHERE s.SingerId = 123456;
Mit Spanner können Sie nur einen Index erstellen, der dasselbe Schema wie die Tabelle verwendet, die den Index verwendet. Wir müssen darauf achten, dass Indexnamen und Tabellenschemanamen identisch sind.
PostgreSQL
Führen Sie die Anweisung
CREATE SCHEMA
aus, um das benannte Schema zu erstellen. Beispiel:CREATE SCHEMA sch1;
Fügen Sie dem benannten Schema Datenbankobjekte hinzu. Beispiel:
CREATE SEQUENCE sch1.sequence BIT_REVERSED_POSITIVE CREATE TABLE sch1.singers( singer_id bigint primary key, album_id bigint default(nextval('sch1.sequence'))) CREATE TABLE sch1.albums(k bigint default(nextval('sch1.sequence'))primary key, album_id bigint) CREATE VIEW sch1.singer_view SQL SECURITY INVOKER AS SELECT * FROM sch1.singers CREATE INDEX index_singers ON TABLE sch1.singers(album_id)
Spanner lässt die Indexerstellung nur im selben Schema zu. In Spanner ist dies bei PostgreSQL-Anweisungen standardmäßig der Fall. Sie müssen keine voll qualifizierten Namen verwenden, um Indexe für benannte Schemas zu erstellen.
Sehen Sie sich die benannten Schemas und zugehörigen Objekte im Bereich Explorer an.
Detaillierte Zugriffssteuerung zu benannten Schemas hinzufügen
Die folgenden DDL-Anweisungen fügen eine differenzierte Zugriffssteuerung auf ein benanntes Schema hinzu:
- Mit der Berechtigung
USAGE
werden Berechtigungen für das Schemaobjekt gewährt. Die BerechtigungUSAGE
wird dem Standardschema standardmäßig gewährt. Sie können jedoch die BerechtigungUSAGE
für das Standardschema widerrufen. Seien Sie vorsichtig, wenn Sie den Zugriff widerrufen, da widerrufene Nutzer und Rollen den Zugriff auf Objekte im Standardschema vollständig verlieren. - Mit der
ALL
-Anweisung werden Bulk-Berechtigungen für ALLE Objekte eines Typs im Schema erteilt. - Das Schlüsselwort
DEFAULT
verweist auf das Standardschema in FGAC-DDL-Anweisungen.
Für den Zugriff auf ein Objekt in einem benannten Schema benötigen Sie Nutzungsberechtigung für das benannte Schema und entsprechende Berechtigungen für Datenbankobjekte, die dieses Schema verwenden. Die folgenden Anweisungen stellen diese Berechtigungen bereit:
GRANT ALL
(GoogleSQL und PostgreSQL) gewährt der Rolle die Berechtigung für den Zugriff auf alle Objekte in der Tabelle, die mit dem benannten Schema erstellt wurden. Diese Anweisung gilt nur für Objekte, die zu diesem Zeitpunkt vorhanden sind. Wenn Sie der Tabelle später weitere Objekte hinzufügen, müssen Sie beim Erstellen Zugriff auf diese Objekte gewähren.GRANT USAGE
(GoogleSQL und PostgreSQL) gewährt der Rolle die Berechtigung für den Zugriff auf Objekte im Schema. So kann der Empfänger nach Objekten im Schema suchen.
Öffnen Sie in der Google Cloud Console die Seite Spanner.
Wählen Sie eine Instanz aus der Liste aus.
Wählen Sie eine Datenbank aus.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Öffnen Sie einen neuen Tab. Klicken Sie dazu auf
Neuer SQL-Editor-Tab oder Neuer Tab.Geben Sie auf dem Tab Editor Ihre DDL ein.
GoogleSQL
Erstellen Sie die benutzerdefinierte Rolle für das benannte Schema. Im folgenden Beispiel verwenden wir
role1
undrole2
.CREATE ROLE role1 CREATE ROLE role2
Weisen Sie die Rolle den Tabellen, die das benannte Schema verwenden, mithilfe von
GRANT ALL
zu. Im folgenden Beispiel verwenden wirsch1
für das benannte Schema undrole1
für die Rolle.GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO ROLE role1
Gewähren Sie den von Ihnen erstellten Rollen Nutzung des Schemas. Im folgenden Beispiel gewähren wir
role1
undrole2
Nutzung fürsch1
.GRANT USAGE ON SCHEMA sch1 TO ROLE role1, role2
PostgreSQL
Erstellen Sie die benutzerdefinierte Rolle für das benannte Schema. Im folgenden Beispiel verwenden wir
role1
undrole2
.CREATE ROLE role1 CREATE ROLE role2
Weisen Sie die Rolle den Tabellen, die das benannte Schema verwenden, mithilfe von
GRANT ALL
zu. Im folgenden Beispiel verwenden wirsch1
für das benannte Schema undrole1
für die Rolle.GRANT SELECT ON ALL TABLES IN SCHEMA sch1 TO role1
Gewähren Sie den von Ihnen erstellten Rollen Nutzung des Schemas. Im folgenden Beispiel gewähren wir
role1
undrole2
Nutzung fürsch1
.GRANT USAGE ON SCHEMA sch1 TO role1, role2
Detaillierte Zugriffssteuerung für ein Standardschema hinzufügen und widerrufen
Wenn Sie benannte Schemas haben, heißt das Standardschema default
. Sie müssen den Schemanamen default
verwenden, wenn Sie eine detaillierte Zugriffssteuerung hinzufügen oder widerrufen.
Standardschema eine detaillierte Zugriffssteuerung hinzufügen
Standardmäßig haben alle Nutzer und Rollen die Berechtigung USAGE
für das Standardschema.
Öffnen Sie in der Google Cloud Console die Seite Spanner.
Wählen Sie eine Instanz aus der Liste aus.
Wählen Sie eine Datenbank aus.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Öffnen Sie einen neuen Tab. Klicken Sie dazu auf
Neuer SQL-Editor-Tab oder Neuer Tab.Geben Sie auf dem Tab Editor Ihre DDL ein.
GoogleSQL
Im folgenden Beispiel gewähren wir
role1
Zugriff auf alle Tabellen.GRANT SELECT ON ALL TABLES IN SCHEMA default TO ROLE role1
PostgreSQL
Im folgenden Beispiel gewähren wir
role1
Zugriff auf alle Tabellen.GRANT SELECT ON ALL TABLES IN SCHEMA default TO role1
Detaillierte Zugriffssteuerung für ein Standardschema widerrufen
Mit dem Befehl REVOKE USAGE
können Sie die standardmäßigen Berechtigungen der detaillierten Zugriffssteuerung für das Standardschema widerrufen.
Öffnen Sie in der Google Cloud Console die Seite Spanner.
Wählen Sie eine Instanz aus der Liste aus.
Wählen Sie eine Datenbank aus.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Öffnen Sie einen neuen Tab. Klicken Sie dazu auf
Neuer SQL-Editor-Tab oder Neuer Tab.Geben Sie auf dem Tab Editor Ihre DDL ein.
GoogleSQL
REVOKE USAGE ON SCHEMA DEFAULT FROM ROLE public
PostgreSQL
REVOKE USAGE ON SCHEMA public FROM public
Nachdem der vorherige Befehl ausgeführt wurde, müssen wir den Rollen, die auf das Standardschema zugreifen müssen, explizit Berechtigungen erteilen. Im folgenden Beispiel werden
role1
Berechtigungen gewährt.GoogleSQL
Im folgenden Beispiel gewähren wir
role1
Zugriff auf das Standardschema.SCHEMA default to ROLE role1
PostgreSQL
Im folgenden Beispiel gewähren wir
role1
Zugriff auf das Standardschema.GRANT USAGE ON SCHEMA public To role1
Benannte Schemas ansehen
- Wählen Sie eine Instanz aus der Liste aus.
- Wählen Sie eine Datenbank aus.
- Klicken Sie im Navigationsmenü auf Spanner Studio.
Maximieren Sie im Bereich Explorer die Drop-down-Liste Schemas.
Alternativ können Sie SQL verwenden, um alle Schemas in der Tabelle information_schema.schemata
anzusehen.
Das folgende Beispiel zeigt, wie Schemas für Ansichtsnamen und ihre Inhaber dargestellt werden:
SELECT schema_name, schema_owner
FROM information_schema.schemata
ORDER BY schema_owner
Diese Anweisung liefert eine Liste von Schemas und Inhabern, die in etwa so aussieht:
public spanner_admin
products spanner_admin
analytics spanner_admin
logs spanner_admin
pg_catalog spanner_system
information_schema spanner_system
spanner_sys spanner_system
Benanntes Schema löschen
Der Befehl DROP SCHEMA
(GoogleSQL und PostgreSQL) wird verwendet, um ein benanntes Schema zu löschen.
Öffnen Sie in der Google Cloud Console die Seite Spanner.
Wählen Sie eine Instanz aus der Liste aus.
Wählen Sie eine Datenbank aus.
Klicken Sie im Navigationsmenü auf Spanner Studio.
Öffnen Sie einen neuen Tab. Klicken Sie dazu auf
Neuer SQL-Editor-Tab oder Neuer Tab.Geben Sie auf dem Tab Editor Ihre DDL ein.
GoogleSQL
Im folgenden Beispiel entfernen wir
sch1
.DROP SCHEMA IF EXISTS sch1;
PostgreSQL
Im folgenden Beispiel entfernen wir
sch1
.DROP SCHEMA IF EXISTS sch1;
Nächste Schritte
- Mehr über Best Practices für Schemas erfahren
- Views
- Sekundäre Indexe
- Fremdschlüssel