更新时间:2024-06-19 GMT+08:00

跨逻辑集群数据读写

场景介绍

创建关联逻辑集群用户后,用户提交的查询或修改(包括Insert、Delete、Update等)会在其关联的逻辑集群上进行计算执行。当提交查询或修改的用户与需要查询和修改的基表在不同的逻辑集群上时,数据需要在表所在的逻辑集群和用户关联的逻辑集群间进行查询和修改,此时优化器会生成一个跨逻辑集群的查询或修改计划,保证用户关联的逻辑集群可以查询或修改表的数据。

图1 跨逻辑集群实现数据查询

图2 跨逻辑集群实现数据写入

操作步骤

  1. 参见创建DWS 3.0集群创建DWS 3.0集群,集群创建后默认会转换成逻辑集群v3_logical。
  2. 通过节点扩容方式增加3个节点到弹性集群,再添加逻辑集群lc2。
  3. 创建用户u1,并关联逻辑集群v3_logical。

    1
    CREATE USER u1 with SYSADMIN NODE GROUP "v3_logical" password  "Password@123";
    

  4. 创建用户u2,并关联逻辑集群lc2。

    1
    CREATE USER u2 with SYSADMIN NODE GROUP "lc2" password  "Password@123";
    

  5. 以u1登录数据库,创建表t1和t2,并插入测试数据。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    CREATE TABLE  public.t1 
    ( 
    id integer not null,  
    data integer, 
    age integer 
    )  
    WITH (ORIENTATION =COLUMN, COLVERSION =3.0) 
    DISTRIBUTE BY ROUNDROBIN; 
    
    CREATE TABLE public.t2 
    ( 
    id integer not null,  
    data integer, 
    age integer 
    )  
    WITH (ORIENTATION = COLUMN, COLVERSION =3.0) 
    DISTRIBUTE BY ROUNDROBIN;
    
    INSERT INTO public.t1 VALUES (1,2,10),(2,3,11);
    INSERT INTO public.t2 VALUES (1,2,10),(2,3,11);
    

  6. 以u2登录数据库,执行以下命令查询t1和写入数据。

    从结果可得出,实现用户u2跨逻辑集群进行查询和写入数据的能力。
    1
    2
    SELECT * FROM t1;
    INSERT INTO t1 SELECT * FROM t2;