取用者叢集管理員動作 - Amazon Redshift

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

取用者叢集管理員動作

如果您是取用者叢集管理員,請依照下列步驟執行:

  1. 列出可供您使用的資料共用,並檢視資料共用的內容。只有當生產者叢集管理員已授權資料共用,且取用者叢集管理員已接受資料共用並與之建立關聯時,才能使用資料共用的內容。如需詳細資訊,請參閱 DESC DATASHARESHOW DATASHARES

    下列範例會顯示指定生產者命名空間的輸入資料共用資訊。當您以用戶叢集管理員DESCDATAHSARE身分執行時,必須指定NAMESPACE和帳戶識別碼才能檢視輸入資料。對於輸出資料共用,請指定資料共用名稱。

    SHOW DATASHARES LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
    DESC DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name ------------------+--------------------------------------+------------+------------+-------------+--------------------------------- 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_users_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_venue_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_category_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_date_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_event_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_listing_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | table | public.tickit_sales_redshift 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND | salesshare | schema | public (8 rows)

    只有叢集超級使用者才能執行此動作。您也可以使用 SVV _ DATASHARES 來檢視資料庫,並使用 SVV _ DATASHARE _ OBJECTS 來檢視資料清單中的物件。

    下列範例顯示取用者叢集中的輸入資料共用。

    SELECT * FROM SVV_DATASHARES WHERE share_name LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
    SELECT * FROM SVV_DATASHARE_OBJECTS WHERE share_name LIKE 'sales%'; share_type | share_name | object_type | object_name | producer_account | producer_namespace ------------+------------+-------------+---------------------------------+------------------+-------------------------------------- INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d INBOUND | salesshare | schema | public | 123456789012 | dd8772e1-d792-4fa4-996b-1870577efc0d (8 rows)
  2. 建立參照資料共用的本機資料庫。從資料清單建立資料庫時,請指定NAMESPACE和帳戶 ID。如需詳細資訊,請參閱CREATE DATABASE

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';

    如果您想要對本機資料庫中物件的存取進行更精細的控制,請在建立資料庫時使用WITHPERMISSIONS子句。這可讓您在步驟 4 中為資料庫中的物件授予物件層級權限。

    CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';

    您可以透過查詢 SVV_REDSHIFT_DATABASES 檢視來查看您從資料共用中建立的資料庫。您無法連線到從資料共用中建立的這些資料庫,這些資料庫僅限讀取。不過,您可以連線到取用者叢集上的本機資料庫,並執行跨資料庫查詢,從資料共用建立的資料庫中查詢資料。您不能在現有資料共用中建立的資料庫物件頂端建立資料共用。不過,您可以將資料複製到取用者叢集上的個別資料表中,執行所需的任何處理,然後共用已建立的新物件。

  3. (選擇性) 建立外部結構描述,以參照取用者叢集上匯入之取用者資料庫中的特定結構描述,並對其指派精細的許可。如需詳細資訊,請參閱CREATE EXTERNAL SCHEMA

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  4. 視需要,將從資料共用建立的資料庫和結構描述參照的許可授予使用者叢集中的使用者或角色。如需詳細資訊,請參閱 GRANTREVOKE

    GRANT USAGE ON DATABASE sales_db TO Bob;
    GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;

    如果您沒有建立資料庫 WITHPERMISSIONS,則只能將從資料清單建立的整個資料庫的權限指派給您的使用者或角色。在某些情況下,您需要更精細地控制從資料共用中建立的資料庫物件子集。如果是這樣,您可以建立指向資料共用中特定結構描述的外部結構描述參照,如上一個步驟所述。然後,您可以在結構描述層級上提供精細的許可。您也可以在共用物件之上建立近期繫結檢視,並使用這些檢視來指派精細的許可。也可以考慮讓生產者叢集以所需的精細程度為您建立其他資料共用。您可以依需要,為從資料共用中建立的資料庫建立盡可能多的結構描述參照。

    如果您WITHPERMISSIONS在步驟 2 中建立資料庫,則必須為共用資料庫中的物件指派物件層級權限。只有該USAGE權限的使用者無法存取使用建立的資料庫中的任何物件,WITHPERMISSIONS除非獲得其他物件層級權限。

    GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
  5. 查詢資料共用中共用物件的資料。

    在取用者資料庫和取用者叢集結構描述上具有許可的使用者和角色,可以探索和瀏覽任何共用物件的中繼資料。他們也可以探索和瀏覽取用者叢集中的本機物件。要做到這一點,使用JDBC或ODBC驅動程序或 SVV _ ALL 和 SVV _ REDSHIFT 意見。

    生產者叢集在每個結構描述中可能會有多個資料庫、資料表和檢視的結構描述。取用者端的使用者只能看到透過資料共用提供的物件子集。這些使用者無法從生產者叢集看到所有中繼資料。此方法有助於透過資料共用提供精細的中繼資料安全控制

    您可以繼續連線到本機叢集資料庫。但是現在,您也可以使用三部分 database.schema.table 表示法,從資料共用中建立的資料庫和結構描述中讀取。您可以執行跨越任何和所有可見資料庫的查詢。這些資料庫可以是叢集上的本機資料庫,也可以是從資料共用建立的資料庫。取用者叢集無法連線至從資料共用建立的資料庫。

    您可以使用完整資格存取資料。如需詳細資訊,請參閱使用跨資料庫查詢的範例

    SELECT * FROM sales_db.public.tickit_sales_redshift;

    您只能在共享物件上使用SELECT陳述式。不過,您可以從不同本機資料庫中的共用物件查詢資料,在取用者叢集中建立資料表。

    除了執行查詢之外,取用者還可以在共用物件上建立檢視。僅支援近期繫結檢視和具體化視觀表。Amazon Redshift 不支援共用資料的一般檢視。取用者建立的檢視可跨越多個本機資料庫或從資料共用建立的資料庫。如需詳細資訊,請參閱CREATE VIEW

    // Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;