在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 - 创建键空间
步骤 2 - 在键空间中创建表
步骤 3 - 在键空间中创建物化视图
步骤 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 = 主键
情况 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;
输出
性质
P_name |
fruit |
taste |
---|---|---|
mango_tree |
mango |
sweet |
lemon_tree |
lemon |
sour |
apple_tree |
apple |
sweet |
情况 2 - 不允许物化视图 -
算法
步骤 1 - 创建物化视图
步骤 2 - 从基表中选择值
步骤 3 - 验证值不为空
步骤 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 不允许物化视图,并因此发现了主键的重要性。