物化视图:物化视图本质上是由数据库自动维护的标准CQL表。他自动维护符合条件的数据与原表数据的一致性。
限制:
1. 物化视图的primary key必须包含baseTable的所有 primary key; 不允许使用静态列。
2. 视图中的primary key的所有列必须IS NOT NULL.
3. 任何物化视图中必须将一个cql行从base表映射到物化视图的另一行.即view和baseTable之间的行一一对应。
4. 创建物化视图时的select语句where条件中,不能对view的非primary key列进行限制,除过IS NOT NULL

5. 静态列不支持,counter不支持, superColumn不支持,duration类型不支持
源表:
|
1
2
3
4
5
6
7
|
1 CREATE TABLE person (
2 id int,
3 name text,
4 addr text, 5 age int,
6 email text, 7 PRIMARY KEY (id, name));
|
写入一条记录,并查询结果:
1 |
1 insert into person(id, name, age, addr, email) values (0, 'ruby', 26, 'beijing', 'ruby@email.com');
|

创建视图:
|
1
2
3
|
1 CREATE MATERIALIZED VIEW person_addr AS 2 SELECT * from person WHERE id IS NOT NULL AND addr IS NOT NULL AND name IS NOT NULL 3 primary key (addr, id, name);
|
system_schema.views记录了视图和源表的关联关系:

不符合该条件的查询不显示
eg:IS NOT NULL
写入addr为null的记录
1 |
1 insert into person(id, name, age, addr, email) values (1, 'mike', 30, null, 'mike@email.com');
|
原表数据和物化视图数据:

删除物化视图:

