Cassandra 使用表定义创建物化视图
物化视图被定义为一个数据库对象,它包含了特定查询的结果。它可以被称为表的子集。基础表中的任何更改都会在物化视图中反映出来。
语法
CREATE MATERIALISED VIEW view_name
AS SELECT * FROM table_name
WHERE column_name IS NOT NULL
PRIMARY KEY (provide_primary_key)
在这里,
- view_name是物化视图的名称,
-
table_name是基表的名称,
-
column_name是列的名称,
-
provide_primary_key是基表的主键。
示例1
在这个例子中,我们将介绍如何为表创建一个物化视图。
步骤
- 步骤1 − 创建一个keyspace
-
步骤2 − 在keyspace中创建一个表
-
步骤3 − 在keyspace中创建一个物化视图
-
步骤4 − 从表中选择数据
-
步骤5 − 验证值不能为空
-
步骤6 − 提供主键
-
步骤7 − 将值插入表中
-
步骤8 − 从表中选择值以获得期望的输出
代码
CREATE KEYSPACE position WITH REPLICATION= {'class': 'simplestrategy','replication_factor':1}; #keyspace is created
CREATE TABLE position.employee
(e_id int,e_name char(50),dept char(50),salary int)
#table created inside keyspace
CREATE MATERIALISED VIEW position.cell #materialised view named cell is created
AS SELECT e_id,e_name,dept,salary FROM employee #data is selected
WHERE e_id IS NOT NULL AND e_name IS NOT NULL #verifying that primary key values must not be null
PRIMARY KEY (e_id);#primary key provided
INSERT INTO employee values(1,'rahul','developer',40000),
(2,'monu','hr',50000),
(3,'aman','consulting',60000);#data is inserted
SELECT * FROM cell;
输出
e_id | e_name | dept | salary |
---|---|---|---|
1 | rahul | developer | 40000 |
2 | monu | hr | 50000 |
3 | aman | consulting | 60000 |
示例2
在这个示例中,我们将要看到主键的影响,以创建一个有效的物化视图。
在这里,我们首先要创建一个带有已知主键的表。
输入表
PLANT
P_name | fruit | taste |
---|---|---|
mango_tree | mango | sweet |
lemon_tree | lemon | sour |
apple_tree | apple | sweet |
P_name = primary key
案例1 - 允许物化视图
步骤
- 步骤1 - 创建物化视图
-
步骤2 - 从基表中选择值
-
步骤3 - 验证值不能为空
-
步骤4 - 提供主键
-
步骤5 - 选择物化视图的值
代码
CREATE MATERIALISED VIEW nature AS #materialised view created
SELECT * FROM plant #value selected
WHERE p_name IS NOT NULL #condition check for not null
PRIMARY KEY (p_name);# primary key provided
SELECT * FROM nature;
输出
Nature
P_name | fruit | taste |
---|---|---|
mango_tree | mango | sweet |
lemon_tree | lemon | sour |
apple_tree | apple | sweet |
情况2 − 不允许使用物化视图 −
步骤
- 步骤1 − 创建物化视图
-
步骤2 − 从基本表选择值
-
步骤3 − 验证值不为null
-
步骤4 − 提供主键
代码
CREATE MATERIALISED VIEW nature AS#materialised view created
SELECT * FROM plant#value selected
WHERE p_name IS NOT NULL AND fruit IS NOT NULL #condition check for not null
PRIMARY KEY (fruit);# primary key provided
输出
Invalid Primary key
结论
创建物化视图就像创建一个表的子集,以包含特定查询的结果。在第一个例子中,我们通过创建键空间来创建物化视图,而在第二个例子中,我们专注于创建有效的物化视图,并有两种情况:情况1允许创建物化视图,情况2不允许创建,因此我们也发现了主键的重要性。