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;