CQL基本语法介绍|学习笔记

简介: 快速学习CQL:CQL基本语法介绍

开发者学堂课程【Cassandra数据库入门与实战CQL:实战快速搭建弹性web应用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/784


CQL基本语法介绍

一、Cassandra简单介绍

1、Casandra的历史

Casandra的数据库是来自于两篇论文,其中之一是07年亚马逊发表的一篇Dynamo ,在他上面吸取了分布式的架构和思想,另一篇是谷歌的Bigtable,吸取了数据的组织的格式以及表的各种组织的格式。

总体架构

image.png

Cassandra的特性是能做到线性扩展,原因是因为他有一个去中心化的架构,他可以做到高可用,高可用主要是因为它是高副本的,能够保证它的可用性,还有一个是他超高的性能,这取决于它底层的LSM Tree Storage。

图片的左边是一个环,这个还叫DHD环,这个环上有五个节点,每个节点把这个还进行了一个划分,它的每一部分节点都对应一部分数据范围。节点把进行均匀的切分,能够保证每一个节点负责的范围是相对均匀的,这是他分布式层面的情况。

2、Cassandra的初步认识

image.png

在图的左边有abcde五个节点,单独分解b这个节点对应的组成模块,可以看到,最上层是网络层,下面是c ql parser,这个板块是CQL语言进行解析的一个模块,将CQL语言转换成编译的结果。

二、Cassandra CQL介绍

1、CQL是什么?

image.png

上图我们可以看到用Hbase k v api和CQL,去写一条数据的差别,CQL可以简单的写出一条数据,这是一个最原始的社区为什么要做一个cql的原因,就是让用户操作数据库简单化。

CQL总体介绍

Data type,定义的一些比较基础的数据类型,包括他自己实现的集合数据类型,除此之外,还有DDL/DML/ACL,这是他操作数据库一些基本的定义。

2、CQL的几个概念

Cluster,意思是集群最大的储存单位,Datecenter,是数据中心,一个cluster可以包含多个DC;Keyspace是键值空间,类似mysql的data base,定义了数据存储的副本策略,摆放策略下面包括多个表,所有表都遵循key pace的摆放策略;Table,意义是表,类似mysql的table,定义基本的表结构;Primary key意义是主键,可以唯一确定一行数据,由partition key和cluster key ke共同组成;Partition key是分区间,可以确定数据存储的节点;Cluster key意义是cluster键,可以在partition下进行排序,范围操作等;Regular column意义是普通列数据列。

(1)CQL date type

image.png

(2)Native Tapy

基本的string类型、数值类型、IP相关类型、UUIT、时间日期以及counter类型。

例子:

image.png

(3)Collect Type && UDT

UDT必须在key space范围内创建类型

支持:CREATE/ALTER/DROP

例子:

image.png

(4)CQL DDL

image.png

Keyspace

Replication:

Class:SimpleSttategy/NetworkTopologyStrategy:副本摆放策略

Replication_factor:副本数

例子:

image.png

(5)Table

Primary key:必须定义由partition key和cluster key组成

Partition key:必须定义确定数据的摆放物理位置

Cluster key:可以不定义,确定数据在partition下的摆放情况

Default time to live,表级别ttl;

Compaction策略:STCS/LCS/TWCS;

Compression,策略:SNAPPY/LZ4

例子:

image.png

(6)CQL DML

DML:SELECT/INSERT/UPDATE/DELETE/BATCH

SELCCT:

支持获取指定列以及通配符操作;

支持LIMIT/PARTITION LIMIT/ORDE BY/GOUP BY;

支持native function处理操作:Count、max、min、sum、avg等

支持JSON

其他多数丰富操作;

例子:

image.png

(7)UPDATE:

需要指定primary key

如果数据存在就更新,不存在则写入

DELETE:

支持行列、级别删除

例子:

image.png

(8)BATCH:

语法:BEIGIN BATCH 开始,以APPLY BATCH结束,中间可包含多条INSERT/UPDATE/DELETE;

支持LOGGED/UNLOGGED BATCH两种模式。LOGGED BATCH,保证batch数据最终全被写入

提高写入吞吐

例子:

image.png

3、CQL ACL

Role,级别操作支持账户密码role,资源操作

各种资源级别的鉴权

常见grant以及revoke操作

例子:

image.png

4、CQL INDEX

(1)SEcondary Index

Local index索引表数据和数据表数据共存,适用于奇数式中的数据列表

可以指定索引名,若不指定咋自动生成

Counter列不支持二级索引

频繁删除以及update的列不推荐使用

支持多重索引查询,支持集合数据类型上构建索引

(2)SASI:

Local index的一种,支持较多索引模式:prefix ,contain ,sparse支持轻搜索功能

对字符串支持的prefix和contains功能支持,轻模糊匹配

使用analyzer可以对某个列的文本数据做词干分析

丰富的索引构建选项,大小写敏感,索引模式,是否使用anlyzer

不支持collection类型

实验功能,不推荐生产使用

例子:

image.png

适用于任何规模的云原生多模数据库。

相关文章
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行Python自然语言处理和主题建模,包括:1) 安装Gensim;2) 导入`corpora`, `models`, `nltk`等相关模块;3) 对文本数据进行预处理,如分词和去除停用词;4) 创建字典和语料库;5) 使用LDA算法训练模型;6) 查看每个主题的主要关键词。代码示例展示了从数据预处理到主题提取的完整流程。
423 3
|
Kubernetes Cloud Native Oracle
开源FaaS平台(一):Knative
Serverless构架不仅仅在工业界有诸多厂商不断为之努力,在开源领域也是有诸多优秀的开源Serverless项目。在《CNCF Cloud Native Interactive Landscape》的Serverless标签中,我们可以看到包括OpenWhisk、Fission、Knative以及Kubeless等在内的众多优秀开源FaaS平台。
1365 0
|
5月前
|
SQL 缓存 Java
MyBatis场景面试题
MyBatis与MyBatisPlus均属ORM框架,前者擅长复杂SQL及动态查询,后者封装API简化单表操作。常用XML标签如if、foreach提升SQL灵活性。MyBatis支持一级(SqlSession级)与二级(NameSpace级)缓存,提升查询效率。#{}防SQL注入,${}用于动态表名等场景。
300 62
|
人工智能 文字识别 语音技术
Megrez-3B-Omni: 首个端侧全模态理解开源模型
Megrez-3B-Omni是由无问芯穹(Infinigence AI)研发的端侧全模态理解模型,基于无问大语言模型Megrez-3B-Instruct扩展,同时具备图片、文本、音频三种模态数据的理解分析能力。
711 3
Megrez-3B-Omni: 首个端侧全模态理解开源模型
|
弹性计算 缓存 监控
基于“日志审计应用”的 DNS 日志洞察实践
DNS 解析日志是一种记录 DNS 请求和响应的基础信息,监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。日志审计服务支持采集 DNS 内网解析日志、公网权威解析日志、GTM 日志。理解 DNS 日志的字段含义,洞察 DNS 日志背后所代表的网络信息,既可以帮助发现和诊断 DNS 解析相关的问题,还可以检测和识别潜在的安全威胁。
8887 110
|
缓存 NoSQL 数据处理
原生php实现redis缓存配置和使用方法
通过上述步骤,你可以在PHP项目中配置并使用Redis作为高性能的缓存解决方案。合理利用Redis的各种数据结构和特性,可以有效提升应用的响应速度和数据处理效率。记得在实际应用中根据具体需求选择合适的缓存策略,如设置合理的过期时间,以避免内存过度消耗。
369 0
|
安全 网络安全 数据安全/隐私保护
深入理解HTTP协议:工作原理与安全性
【6月更文挑战第28天】HTTP是互联网基础协议,用于浏览器与服务器通信。基于请求-响应模型,无状态且可扩展。但其明文传输、缺乏身份验证和数据完整性校验导致安全问题。HTTPS 加入SSL/TLS,提供加密、身份验证和完整性校验,保障网络安全。了解HTTP原理和安全至关重要。
|
机器学习/深度学习 人工智能 自然语言处理
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
自然语言理解研究中,如何处理语言歧义是个难题。 SyntaxNet 将神经网络和搜索技术结合起来,在解决歧义问题上取得显著进展:SyntaxNet 能像训练有素的语言学家一样分析简单句法。今天,谷歌开源了SyntaxNet,也发布了针对英语的预训练解析程序 Parsey McParseface。除了让更多人使用到最先进的分析技术之外,这次开源举措也有利于公司借助社区力量加快解决自然语言理解难题的步伐,惠及谷歌业务。
1162 0
谷歌开源最精确自然语言解析器SyntaxNet的深度解读:一次关键进步以及一个重要工具
|
安全 网络安全 API
163邮箱imap服务器怎么填写
163邮箱imap服务器怎么填写
|
存储 安全 网络安全
算力网络安全
算力网络安全
1088 0