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;

 

posted @   多少幅度  阅读(547)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示