使用AWS Data Exchange作為消費者的資料庫 - Amazon Redshift

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

使用AWS Data Exchange作為消費者的資料庫

如果您是消費者,請按照以下步驟查找包含AWS Data Exchange數據庫和查詢 Amazon Redshift 數據:

  1. 在AWS Data Exchange控制台,發現和訂閲包含AWS Data Exchange數據庫。

    訂閲開始後,您可以訪問許可的 Amazon Redshift 數據,這些數據作為資產導入到包含AWS Data Exchange數據庫。

    若要解如何開始使用包含AWS Data Exchange資料庫,請參訂閲數據產品AWS Data Exchange

  2. 在亞馬遜 Redshift 控制台上,根據需要創建 Amazon Redshift 集羣。

    如需如何建立叢集的資訊,請參建立叢集

  3. 列出可供您使用的數據源並查看數據庫的內容。如需詳細資訊,請參閱 DESC DESC DATABASE顯示資料庫

    以下示例顯示指定創建者命名空間的入站數據庫的信息。當您以使用者羣集管理員身份運行 DESC DATASHARE 時,必須指定帳户和命名空間選項以查看入站數據源。

    DESC DATASHARE salesshare of ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------ 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | schema | public | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | view | public.sales_data_summary_view |

    只有羣集超級用户才能執行此操作。您還可以使用 SVV_數據共享查看數據源,並使用 SVV_數據共享對象來查看數據保護中的對象。

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

    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 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
  4. 創建引用數據庫的本地數據庫。必須指定「帳户」和「命名空間」選項才能為AWS Data Exchange數據庫。如需詳細資訊,請參閱 CREATE DATABASE

    CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

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

    或者,您也可以使用 Amazon Redshift 主控台從資料庫建立資料庫。如需詳細資訊,請參閱 從數據庫創建數據庫

  5. (可選)創建外部架構,以引用使用者羣集上導入的使用者數據庫中的特定方案並向其分配精細權限。如需詳細資訊,請參閱 CREATE EXTERNAL SCHEMA

    CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
  6. 根據需要將從數據庫創建的數據庫和架構引用的權限授予使用者羣集中的用户組。如需詳細資訊,請參閱GRANTREVOKE

    GRANT USAGE ON DATABASE sales_db TO Bob;
    GRANT USAGE ON SCHEMA sales_schema TO GROUP Analyst_group;

    作為使用者羣集管理員,您只能將從數據保護創建的整個數據庫的權限分配給您的用户和組。在某些情況下,您需要對從數據保護創建的數據庫對象子集進行精細控制。如果是這樣,您可以創建指向數據保護中的特定方案的外部模式引用(如上一步所述),並在架構級別提供精細權限。

    您還可以在共享對象之上創建後期綁定視圖,並使用這些視圖分配精細的權限。您還可以考慮讓生產者羣集為您創建具有所需粒度的附加數據源。您可以為從數據保護創建的數據庫創建儘可能多的模式引用。

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

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

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

    您繼續連線至本地羣集資料庫。但現在,您還可以使用三個部分的數據庫 .schema.table 符號從數據保護創建的數據庫和架構中讀取。您可以執行跨您可見的任何和所有數據庫的查詢。這些數據庫可以是集羣上的本地數據庫,也可以是從數據庫創建的數據庫。使用者羣集無法連接到從數據庫創建的數據庫。

    您可以使用完全資格來存取資料。如需詳細資訊,請參閱 使用跨數據庫查詢的示例

    SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728.00 | 109.20 | 2008-02-18 02:36:48 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350.00 | 52.50 | 2008-06-06 08:26:17 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175.00 | 26.25 | 2008-06-09 08:38:52 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154.00 | 23.10 | 2008-08-31 09:17:02

    您只能在共享對象上使用 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;