2017-11-01 1 views
1

Ich möchte sicherstellen, dass eine Tabelle in BigQuery keine Einfügungen mehr erhält (sei es "load/batch" -Einfügungen oder "streaming" -Einfügungen).
Gibt es eine Möglichkeit, einen Tisch in einen "Readonly-Modus" zu verwandeln?Umschalten einer BigQuery-Tabelle in den "Nur-Lese-Modus"

Ich möchte vermeiden, mit der Standard-IAM/Zugriffskontrolle zu spielen, deren kleinste Berechtigungsstufe der Dataset-Level ist. Wenn es eine Option gäbe, die "readonly" auf 1 Tabelle für alle Benutzer unabhängig von ihrer Rolle erzwingen würde (genau wie wenn Sie ein Dateisystem im "Nur-Lese-Modus" erzwingen), wäre das großartig.

(Endziel ist eine sichere Zusammenführung einer "Master" - und "Update" -Tabelle, wie hier erklärt: Delete/update table entries by joining 2 tables on Google BigQuery without import/export).

+0

Sie können dies tun, indem Sie alle Tabellen in einem Dataset mit beschränktem Zugriff und dann Erstellen von Ansichten (die natürlich schreibgeschützt sind) über die Tabellen in einem anderen Datensatz. Vertausche eine Tabelle für eine Ansicht, um sie nur lesbar zu machen. Funktioniert es? Einige Organisationen haben zum Beispiel einen Datensatz "Produktion" mit nur Lesezugriff. Ich kann eine vollständigere Antwort aufschreiben, wenn das machbar erscheint. –

+0

Ich dachte darüber nach, aber das würde bedeuten, 2 Datensätze für jede "Master" -Tabelle zu erstellen, die ich habe (1 Datensatz für die aktuelle "update" -Tabelle, die ich zusammenführen möchte, und 1 Datensatz für die neue "update" -Tabelle) wird die neuen Daten erhalten, wenn mein Zusammenführungsprozess beendet ist). Das wird eine Hölle von vielen Datensätzen, fürchte ich. – Sourygna

Antwort

1

Derzeit ist dies in BigQuery nicht möglich. Sie können Feature-Anforderung an https://issuetracker.google.com/issues/new?component=187149&template=0 senden

In der Zwischenzeit wäre Abhilfe Snapshot Dekoratoren zu verwenden.
Also, ohne zu Einschränkung Hinzufügen von Zeilen der Tabelle, können Sie Tabellenstatus jederzeit bekommen (in den letzten zwei Wochen, wenn ich mich richtig erinnere) - so indirekt das Sie geben, was Sie

Snapshot Dekorateure available in Legacy SQL sind wollen und ich denke, dass sie vor kurzem waren added to Standard SQL

+0

Funktioniert in der Tat für die Konsistenz. Ich habe auch darüber nachgedacht, eine Filterung für die EventTimestamp-Spalte zu verwenden, die wir jeder Zeile hinzufügen. Allerdings kann ich mit dieser Methode die "Update-Tabelle" nicht "abschneiden", da DML/delete-Vorgänge nicht für Streaming-Tabellen gemäß https://cloud.google.com/bigquery/docs/reference/ aktiviert sind. Standard-SQL/Data-Manipulation-Sprache (Nun, zumindest könnte ich diesen Ansatz verwenden, wenn ich Micro-Chargen statt Streaming). – Sourygna

+0

Filterung kann Code Code weise und im Fall, wenn Tabelle weiter wachsen - es wird ganze Tabelle Scan (so extra $$). Erwäge, die Antwort zu wählen, wenn es irgendwie geholfen hat: o) –

+0

Wie vorgeschlagen, habe ich eine Feature-Anfrage ausgefüllt: https://issuetracker.google.com/issues/68743496 – Sourygna

Verwandte Themen