共用資料的寫入存取權 (預覽) - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

共用資料的寫入存取權 (預覽)

您可以在相同 、帳戶和跨區域內共用不同 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組 AWS 帳戶的讀取和寫入資料庫物件。本主題中的程序說明如何設定包含寫入許可的資料共用。您可以授予許可SELECT,例如UPDATE不同資料表的 INSERT、 和 ,以及結構描述CREATE的 USAGE和 。一旦確認寫入交易,資料即可供所有倉儲使用。生產者帳戶管理員可以判斷特定命名空間或區域是否取得唯讀 read-and-write,或任何對資料的存取。

以下各節說明如何設定資料共用。這些過程假設您正在佈建的叢集或 Amazon Redshift Serverless 工作群組中的資料庫中工作。

唯讀資料共用與讀寫資料共用

之前資料共用中的物件在所有情況下都是唯讀的。寫入資料共用中的物件是一項新功能。只有當生產者特別將類似INSERT或CREATE針對物件的寫入權限授予資料共用時,資料共用中的物件才會啟用寫入。此外,對於跨帳戶共用,生產者必須授權資料共用以進行寫入,而取用者必須關聯特定叢集和工作群組以進行寫入。本主題後續章節中的詳細資訊如下。

您可以授予資料共用的許可 (預覽)

您可以在資料共用內容中授予不同的物件類型和各種權限。

結構描述:

  • USAGE

  • CREATE

資料表:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • TRUNCATE

  • DROP

  • REFERENCES

函數:

  • EXECUTE

資料庫:

  • CREATE

預覽版資料共用的要求和限制

  • 連線 – 您必須直接連線至資料共用資料庫,或執行 USE命令以寫入資料共用。不過我們很快將能夠透過三部分記號來實現這項操作。

  • 可用性 – 您必須使用無伺服器工作群組、ra3.4xl 叢集或 ra3.16xl 叢集才能使用此功能。

  • 中繼資料探索 – 當您透過 Redshift ODBC、 JDBC或 Python 驅動程式直接連線至資料共用資料庫的取用者時,您可以透過下列方式檢視目錄資料:

  • 資料 API – 您無法透過資料 連線至資料共用資料庫API。即將提供相關支援。

  • 許可可見性 – 取用者看不到授予資料共用的許可。我們很快就會新增這項功能。

  • 加密 – 對於跨帳戶資料共用,生產者和取用者叢集都必須加密。

  • 隔離層級 – 資料庫的隔離層級必須是快照隔離,才能允許其他無伺服器工作群組和叢集寫入。

  • 自動操作 – 寫入資料共用物件的取用者不會觸發自動分析操作。因此,生產者必須在將資料插入資料表後手動執行分析,才能更新資料表統計資料。如果沒這麼做,查詢計劃可能不是最好的。

  • 多陳述式查詢和交易 – 目前不支援交易區塊以外的多陳述式查詢。因此,如果您使用 dbeaver 之類的查詢編輯器,並且您有多個寫入查詢,則需要將查詢包裝在明確的 BEGIN...END 交易陳述式中。

SQL 支援的 陳述式

以下陳述式適用於透過寫入進行資料共用的公開預覽版本:

  • BEGIN | START TRANSACTION

  • END | COMMIT | ROLLBACK

  • COPY 沒有 COMPUPDATE

  • { CREATE | DROP } SCHEMA

  • { CREATE | DROP | SHOW } TABLE

  • CREATE TABLE table_name AS

  • DELETE

  • { GRANT | REVOKE } privilege_name ON OBJECT_TYPE object_name TO consumer_user

  • INSERT

  • SELECT

  • INSERT INTO SELECT

  • TRUNCATE

  • UPDATE

  • 超級資料類型列欄

不支援的陳述式類型 — 不支援下列項目:

  • 寫入生產者時,對取用者倉庫進行多陳述式查詢。

  • 並行擴縮查詢從取用者寫入生產者。

  • 從取用者寫入到生產者的自動複製作業。

  • 從取用者到生產者的串流工作寫入。

  • 消費者在生產者叢集上建立零ETL整合資料表。如需零ETL整合的詳細資訊,請參閱使用零ETL整合。

  • 使用交錯排序索引鍵寫入資料表。

以生產者帳戶管理員身分,在具有寫入許可的帳戶中共用資料 (預覽)

之前資料共用中的物件在所有情況下都是唯讀的。寫入資料共用中的物件是一項新功能。只有當生產者特別將類似INSERT或CREATE針對物件的寫入權限授予資料共用時,資料共用中的物件才會啟用寫入。本主題後續章節中的詳細資訊如下。

如果您正在尋找唯讀資料共用的現有文件,請參閱 Amazon Redshift 中的跨叢集共用資料

若要開始資料共用,生產者上的管理員會建立資料共用,並將物件加入至其中:

  1. 生產者資料庫擁有者或超級使用者會建立資料共用。資料共用是資料庫物件、權限和取用者的邏輯容器。(取用者是您帳戶和其他帳戶中的叢集或 Amazon Redshift Serverless 命名空間。) 每個資料共用都與其建立的資料庫相關聯,只能新增來自該資料庫的物件。以下命令會建立資料共用。

    CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];

    設定 PUBLICACCESSIBLE = TRUE 允許取用者從可公開存取的叢集和佈建的工作群組查詢資料共用。如果您不允許,請將其忽略,或明確地將其設定為 false。

    資料共用擁有者必須在要新增至資料共用的結構描述USAGE上授予 。GRANT 命令是新的。它用於在結構描述上授予各種動作,包括 CREATE和 USAGE。結構描述包含共用物件:

    CREATE SCHEMA myshared_schema1; CREATE SCHEMA myshared_schema2; GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare; GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;

    或者,管理員可以繼續執行ALTER命令,將結構描述新增至資料共用。只有以這種方式新增結構描述時才會授予USAGE許可。

    ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
  2. 管理員新增結構描述之後,就可以授予結構描述中物件的資料共用權限。這些是讀取和寫入權限 GRANT ALL 範例顯示如何授予所有許可。

    GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1 TO DATASHARE my_datashare; GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;

    您可以繼續執行類似新增資料表ALTERDATASHARE的命令。執行此操作時,只會對新增的物件授予SELECT許可。

    ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
  3. 系統管理員會將資料共用的使用權授予帳戶中的特定命名空間。您可以在ARN叢集詳細資訊頁面、Amazon Redshift Serverless 命名空間詳細資訊頁面或執行命令 中找到作為 一部分的命名空間 IDSELECT current_namespace;。如需詳細資訊,請參閱 CURRENT_NAMESPACE

    GRANT USAGE ON DATASHARE my_datashare TO NAMESPACE '86b5169f-012a-234b-9fbb-e2e24359e9a8';