对象

在Hubble中,您可以使用常见的数据库对象,按照SQL标准,分为了catalog,schema,table。我们可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题。从概念上说,一个数据库包含多个catalog,每个catalog又包含多个schema,而每个schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个schema,而该schema又必然属于一个catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突问题了。例如一个数据库表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称

举个例子,比如想查Hubble存储下test库下的test表,可以使用:

select * from hubble.test.test;

catalog

在Hubble中,catalog相当于给数据源一个命名,如hubble、system。

show catalogs;
+---------+
| Catalog |
+---------+
| hubble  |
| system  |
+---------+

这里system是只读的系统源,存放一些系统数据库。如元信息库,运行状态库等。

schema

schema(即database)是存放一组表的目录。

在所在数据库内可以直接使用对象名指代对象,如果要使用其他数据库中的对象,需要使用 <catalog_name>.<database_name>.<object_name> 来指代,例如hubble.my_db.my_table。您也可以用 USE 指令切换使用的数据库。创建库也需要指定连接源,例如:

show schemas from hubble;
create schema hubble.my_db;

Hubble中的表和其他数据库中的表一样,是主要存储数据的地方。按关系型数据库的形式组织数据,即按行和列来组织存储数据。

  • Hubble中的表

操作存储在Hubble中的表与hive兼容,包括支持分区分桶表等,操作语法略有差异,详情请参考SQL语法章节详细内容。

视图

视图使用CREATE VIEW <View_name> AS <Query_SQL>创建,将一个查询建成一张逻辑上的表,创建视图以后,它就可以和 CREATE TABLE <Table_name> AS SELECT所建的表一样用来查询(不能直接insert或update数据,只是逻辑上的表)。但是和表不同的是,Hubble中的视图是非物化(unmaterialized) 的,也就是说视图中没有实际的数据,每次对视图进行查询时,建视图所用的查询语句会被再次执行一次。所以,我们也可以将视图理解为查询的封装。视图不能和表重名。视图的作用很多,比如简化查询、对表中内容的权限控制等。

函数

您可以用函数对Hubble中的数据进行多种计算。Hubble拥有大量的内置函数,这些函数以及它们的用法在函数章节中列出。