本节我们将在bi-redshift-cluster
上查询另一个集群分享的数据
连接到bi-redshift-cluster
后,将看到tpc数据库以及其中分享过来的表和视图:
使用以下语句查询数据:
SELECT c_mktsegment, o_orderpriority, sum(o_totalprice)
FROM tpc.public.customer_view c
JOIN tpc.public.orders o on c_custkey = o_custkey
GROUP BY c_mktsegment, o_orderpriority;
查询结果:
上面执行查询的时候,使用了three-part notation
,即databasename.schemaname.objectname
(如tpc.public.customer_view
)。将这种方式简化的方式是使用创建一个外部schema,将共享过来的schema映射成为本地的schema:
CREATE EXTERNAL SCHEMA tpcschema
FROM REDSHIFT DATABASE 'tpc' SCHEMA 'public';
查询的时候就不用使用three part notation
, 而是使用本地的schema:
SELECT c_mktsegment, o_orderpriority, sum(o_totalprice)
FROM tpcschema.customer_view c
JOIN tpcschema.orders o on c_custkey = o_custkey
GROUP BY c_mktsegment, o_orderpriority;
因为Data sharing只在RA3(或serverless)上生效,而RA3节点是计算和存储分离的,所以在生产集群关机后,消费集群依然能访问到数据。
将生产集群进行pause
:
Pause过程会持续一会,在此期间,消费集群不能查询数据。如果查询会报如下错误:
在Pause操作完成后,生产集群状态变成Paused
,此时再在消费集群上查询数据,可以查询到结果。
测试完成后重新启动生产集群,以进行后面的实验: