本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
共用資料的寫入存取權 (預覽)
您可以在相同 、帳戶和跨區域內共用不同 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 中的跨叢集共用資料。
若要開始資料共用,生產者上的管理員會建立資料共用,並將物件加入至其中:
生產者資料庫擁有者或超級使用者會建立資料共用。資料共用是資料庫物件、權限和取用者的邏輯容器。(取用者是您帳戶和其他帳戶中的叢集或 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;
-
管理員新增結構描述之後,就可以授予結構描述中物件的資料共用權限。這些是讀取和寫入權限 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;
系統管理員會將資料共用的使用權授予帳戶中的特定命名空間。您可以在ARN叢集詳細資訊頁面、Amazon Redshift Serverless 命名空間詳細資訊頁面或執行命令 中找到作為 一部分的命名空間 ID
SELECT current_namespace;
。如需詳細資訊,請參閱 CURRENT_NAMESPACE。GRANT USAGE ON DATASHARE my_datashare TO NAMESPACE '86b5169f-012a-234b-9fbb-e2e24359e9a8';