本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
共用資料的寫入權限 (預覽)
您可以跨不同 Amazon Redshift 叢集或 Amazon Redshift 無伺服器工作群組共用讀取和寫入的資料庫物件 AWS 帳戶,也可以跨帳戶和跨區域共用相同的 Amazon Redshift 無伺服器工作群組。本主題中的程序說明如何設定包含寫入權限的資料共用。您可以針對不同的資料表授與權限,例如 SELECT、INSERT 和 UPDATE,以及架構的「使用」和「建立」。一旦確認寫入交易,資料即可供所有倉儲使用。生產者帳戶管理員可以決定特定的命名空間或區域是否獲得唯讀 read-and-write,還是對資料的任何存取權。
以下各節說明如何設定資料共用。這些過程假設您正在佈建的叢集或 Amazon Redshift Serverless 工作群組中的資料庫中工作。
唯讀資料共用與讀寫資料共用
之前資料共用中的物件在所有情況下都是唯讀的。寫入資料共用中的物件是一項新功能。只有當生產者特別授予寫入權限 (如 INSERT 或 CREATE) 給資料共用的物件時,資料共用中的物件才能啟用寫入功能。此外,對於跨帳戶共享,生產者必須授權寫入的數據存儲,並且消費者必須關聯特定的叢集和工作群組以進行寫入。本主題後續章節中的詳細資訊如下。
您可以授予資料庫的權限 (預覽)
您可以在資料共用內容中授予不同的物件類型和各種權限。
結構描述:
USAGE
CREATE
資料表:
SELECT
INSERT
UPDATE
DELETE
TRUNCATE
DROP
REFERENCES
函數:
EXECUTE
資料庫:
CREATE
預覽版資料共用的要求和限制
連線 — 您必須直接連線至資料清理資料庫,或執行 USE 指令來寫入資料存放區。不過我們很快將能夠透過三部分記號來實現這項操作。
可用性 — 您必須使用無伺服器工作群組、ra3.4xl 叢集或 ra3.16xl 叢集才能使用此功能。已規劃為 ra3.xlplus 叢集提供支援。
中繼資料探索 — 當您是透過 Redshift JDBC、ODBC 或 Python 驅動程式直接連線至資料存取資料庫的取用者時,您可以透過下列方式檢視目錄資料:
SQL SHOW 命令。
查詢 information_schema 資料表和視觀表。
查詢 SVV 中繼資料檢視。
資料 API — 您無法透過資料 API 連線至資料清單資料庫。即將提供相關支援。
權限可見性 — 取用者看不到授與資料庫的權限。我們很快就會新增這項功能。
加密 — 對於跨帳戶資料共用,生產者和消費者叢集都必須加密。
隔離層級 — 資料庫的隔離層級必須是快照隔離,才能允許其他無伺服器工作群組和叢集寫入資料庫。
auto 操作 — 寫入資料清單物件的消費者不會觸發自動分析操作。因此,生產者必須在將資料插入資料表後手動執行分析,才能更新資料表統計資料。如果沒這麼做,查詢計劃可能不是最好的。
多重陳述式查詢和交易 — 目前不支援交易區塊以外的多重陳述式查詢。因此,如果您使用像 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;
您可以繼續執行像 ALTER DATASHARE 這樣的命令來新增資料表。當您這麼做時,只會授予新增物件的 SELECT 權限。
ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
系統管理員會將資料共用的使用權授予帳戶中的特定命名空間。您可以在叢集詳細資料頁面、Amazon Redshift Serverless 命名空間詳細資料頁面,或藉由執行命令
SELECT current_namespace;
,來尋找命名空間 ID 以做為 ARN 的一部分。如需詳細資訊,請參閱 CURRENT_NAMESPACE前。GRANT USAGE ON DATASHARE my_datashare TO NAMESPACE '86b5169f-012a-234b-9fbb-e2e24359e9a8';