Trafodion 查看视图定义

来源:互联网 发布:网络直播打赏经济 编辑:程序博客网 时间:2024/05/29 10:09

Trafodion作为一款SQL on Hadoop的数据库引擎,支持标准的SQL功能,支持增删查改DML语句,也支持建表、建索引、建视图等DDL语句。本文主要介绍如何在Trafodion中创建视图,并查询视图的定义。

可能大家都已经了解什么是视图,但这里我还是要稍微提一下数据库中视图的概念。视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

当然,这里我们讨论的视图是数据库中的普通视图,在某些关系型数据库如Oracle中,提供了另外一种视图–即物化视图。物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。物化视图可以基于表查询,视图和其它的物化视图。通常情况下,在复制环境下,物化视图被称为主表,在数据仓库中称为明细表。

因此,从上面的介绍中我们知道,普通视图和物化视图根本就不是一个东西,说区别都是硬拼到一起的,首先明白基本概念,普通视图是不存储任何数据的,他只有定义,在查询中是转换为对应的定义SQL去查询,而物化视图是将数据转换为一个表,实际存储着数据,这样查询数据,就不用关联一大堆表,如果表很大的话,会在临时表空间内做大量的操作。

现在继续回到Trafodion的视图中来,由于目前Trafodion尚没有物化视图的概念,因此后面我们讨论的Trafodion视图都属于普通视图,即不存储任何数据,只有元数据信息。实际上,在Trafodion中,任何对象都有对应的元数据信息,元数据信息存储在单独的Schema “MD“中,通过get tables我们可以看到有哪些元数据表。

>>get tables in schema trafodion."_MD_";Tables in Schema TRAFODION._MD_===============================AUTHSCOLUMNSDEFAULTSINDEXESKEYSLIBRARIESLIBRARIES_USAGEOBJECTSREF_CONSTRAINTSROUTINESSEQ_GENTABLESTABLE_CONSTRAINTSTEXTUNIQUE_REF_CONSTR_USAGEVERSIONSVIEWSVIEWS_USAGE

如果想从元数据信息中查看视图的定义,这涉及到上面列表中的三张表,VIEWS、OBJECTS和TEXT。第一个视图有一个唯一的标识VIEW_ID存储在VIEWS中,每个VIEW_ID对应OBJECTS表中的OBJECT_ID,每个OBJECT_ID在TEXT中对应一个TEXT_ID。另外,OBJECTS表中包含OBJECT_NAME字段,可以通过OBJECT_NAME字段查找特定名称的VIEW_ID,通过VIEW_ID,可以在TEXT表中查看到对应视图的视图定义。因而,我们可以使用以下语句来查看某一个视图名称对应的视图定义,

SQL>select a.* from "_MD_".text a, "_MD_".views b,"_MD_".objects c where a.text_uid = b.view_uid and b.view_uid = c.object_uid and c.object_name = 'TEST2_V' and c.schema_name = 'SEABASE';TEXT_UID             TEXT_TYPE   SUB_ID      SEQ_NUM     FLAGS                TEXT                                                                                                                     -------------------- ----------- ----------- ----------- -------------------- -------------------------------------------------------------------------------------------------------------------------------- 4574677199916640811           0           0           0                    0 CREATE VIEW TRAFODION.SEABASE.TEST2_V AS SELECT TRAFODION.SEABASE.TEST2.A FROM TRAFODION.SEABASE.TEST2                    4574677199916640811           8           0           0                    0 viewUID: 4574677199916640811 viewCol: 0 refUID: 4606766110394796238 refCol: 1 refType: 1;                                --- 2 row(s) selected.

另外,Trafodion提供两个命令可以查询视图的定义,即SHOWDDL和INVOKE,让我们通过下面例子查看视图的定义吧,

QL>showddl seabase.test2_v;CREATE VIEW TRAFODION.SEABASE.TEST2_V AS  SELECT TRAFODION.SEABASE.TEST2.A FROM TRAFODION.SEABASE.TEST2 ;--- SQL operation complete.SQL>invoke seabase.test2_v;-- Definition of Trafodion view TRAFODION.SEABASE.TEST2_V-- Definition current  Wed Dec 13 10:39:49 2017  (    A                                VARCHAR(10) CHARACTER SET ISO88591 COLLATE      DEFAULT DEFAULT NULL SERIALIZED  )--- SQL operation complete.
原创粉丝点击