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;

猜你喜欢

转载自www.cnblogs.com/tangs1/p/11969723.html
今日推荐