Cassandra视图

Posted tangs1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cassandra视图相关的知识,希望对你有一定的参考价值。

一.简介

Cassandra作为一个P2P结构的NOSQL数据库,使用与HBase不同的去中心化架构,在国外使用非常广泛,受欢迎程度甚至在Hbase之上。今天这篇文章介绍Cassandra在视图方面设计需要注意的一些点。

二.视图建立

cassandra视图创建的语句如下:

create_materialized_view_statement ::=  CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] view_name AS
                                            select_statement
                                            PRIMARY KEY ( primary_key )
                                            WITH table_options

例子:

CREATE TABLE emp (
    emp_id int PRIMARY KEY,
    emp_city text,
    emp_name text,
    emp_phone varint,
    emp_sal varint
)

create MATERIALIZED VIEW emp_view as 
select * from emp where emp_id is not null 
and emp_name is not null 
primary key(emp_id,emp_name) 
with comment=this is an iew;

基于emp表建立了视图emp_view。在视图创建的过程中主要包含三个部分:select语句,主键定义,视图配置选项。在这三部分中主要需要注意的是前两部分。

select语句:

1.视图中的列必须来自源表,不能在使用select语句时对某列使用任何函数,可以使用*作为选择所有列的快捷方式。

技术图片

2.当源表中拥有static定义的列,则在创建视图时不能使用*,应为使用static声明的列不能包含在物化视图中。

3.它既不能具有排序子句,也不能具有限制,也不能具有ALLOW FILTERING。

主键定义:

1.每个视图必须要有主键,同时它必须包含基表的所有主键列, 这样可以确保视图的每一行都恰好对应于基表的一行。

技术图片

技术图片

2.主键中只能包含一个不是源表中的主键列作为主键

技术图片

3.作为视图中的主键,必须使用not null定义

技术图片

视图配置选项:

在视图创建时,加上一些配置,详情请见

http://cassandra.apache.org/doc/latest/cql/ddl.html#create-table-options

三.删除视图

drop_materialized_view_statement ::=  DROP MATERIALIZED VIEW [ IF EXISTS ] view_name;

技术图片

 

以上是关于Cassandra视图的主要内容,如果未能解决你的问题,请参考以下文章

Cassandra视图

Cassandra 索引与物化视图

回收站视图未显示在片段中

如何从片段内的列表视图打开链接网址?

如何使列表视图出现在片段中?

如何从活动中更改片段中视图的可见性