使用者羣集管理員操作 - Amazon Redshift

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

使用者羣集管理員操作

如果您是使用者羣集管理員— 請遵循下列步驟:

  1. 列出提供給您的數據庫並查看數據庫的內容。僅當生產者羣集管理員已授權數據庫且使用者羣集管理員已接受並關聯數據庫時,數據庫的內容才可用。如需詳細資訊,請參閱 DESC DESC DATABASE顯示資料庫

    以下示例顯示指定創建者命名空間的入站數據庫的信息。當您以使用者羣集管理員身份運行 DESC DATAHSARE 時,必須指定命名空間和帳户 ID 才能查看入站數據源。對於出站數據庫,請指定數據保護名稱。

    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_數據共享查看數據源,並使用 SVV_數據共享對象來查看數據保護中的對象。

    以下範例顯示使用者羣集中的入站資料庫。

    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. 創建引用數據庫的本地數據庫。從數據保護創建數據庫時,指定命名空間和帳户 ID。如需詳細資訊,請參閱 CREATE DATABASE

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

    您可以查看從數據保護創建的數據庫,方法是查詢數據庫數據庫視圖。您無法連接到這些從數據庫創建的數據庫,並且它們是隻讀的。但是,您可以連接到使用者羣集上的本地數據庫,並對從數據碼創建的數據庫中的數據執行跨數據庫查詢。不能在從現有數據保護創建的數據庫對象之上創建數據保護。但是,您可以將數據複製到使用者羣集上的單獨表中,執行所需的任何處理,然後共享創建的新對象。

  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 GROUP Analyst_group;

    作為使用者羣集管理員,您只能將從數據保護創建的整個數據庫的權限分配給您的用户和組。在某些情況下,您需要對從數據保護創建的數據庫對象子集進行精細控制。如果是這樣,您可以創建指向數據保護中特定方案的外部模式引用,如上一步驟中所述。然後,您可以在架構級別提供精確的權限。您還可以在共享對象之上創建後期綁定視圖,並使用這些視圖分配精細的權限。您還可以考慮讓生產者羣集為您創建具有所需粒度的附加數據源。您可以為從數據保護創建的數據庫創建儘可能多的模式引用。

  5. 查詢數據庫中共享對象中的數據。

    對使用者羣集上的使用者數據庫和方案具有權限的用户和組可以瀏覽和導航任何共享對象的元數據。他們還可以瀏覽和導航使用者羣集中的本地對象。若要執行此操作,請使用 JDBC 或 ODBC 驅動程序或 SVV_ALL 和 SVV_REDSHIFT 視圖。

    生產者羣集可能在每個模式中的數據庫、表和視圖中有許多架構。使用者端的用户只能看到通過數據保護提供的對象子集。這些用户無法看到生產者羣集中的所有元數據。此方法有助於通過數據共享提供精細的元數據安全控制。

    您繼續連線至本地羣集資料庫。但現在,您還可以使用三個部分的數據庫 .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;