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

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

相关文章
|
7月前
|
人工智能 数据可视化 数据挖掘
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
The AI Scientist-v2 是由 Sakana AI 等机构开发的端到端自主科研系统,通过树搜索算法与视觉语言模型反馈实现科学假设生成、实验执行及论文撰写全流程自动化,其生成论文已通过国际顶会同行评审。
471 34
AI竟能独立完成顶会论文!The AI Scientist-v2:开源端到端AI自主科研系统,自动探索科学假设生成论文
|
Java 微服务 Spring
@EnableDiscoveryClient注解的作用
@EnableDiscoveryClient注解的作用 @EnableDiscoveryClient 及@EnableEurekaClient 类似,都是将一个微服务注册到Eureka Server(或其他 服务发现组件,例如Zookeeper、Consul等)
1935 0
|
4月前
|
机器学习/深度学习 算法
WebSailor:探索 WebAgent的超人类推理能力
通义实验室推出WebSailor方案,通过创新的post-training方法显著提升开源模型在复杂网页推理任务中的表现。该方案包括合成高不确定性数据、多轮工具调用轨迹重构及强化学习算法DUPO应用,在多个评测中展现优越性能。
368 1
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
744 0
|
8月前
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
257 5
|
搜索推荐 数据挖掘 UED
中小企业CRM解决方案排名:性价比之选
中小企业在选择CRM系统时面临的主要痛点包括预算有限、需求多样、IT资源匮乏等。因此,他们需要寻找高性价比、功能全面、操作简便且具备灵活性和可扩展性的解决方案。本文推荐了纷享销客、Zoho CRM、Apptivo和简道云CRM等几款适合中小企业的CRM系统,这些系统不仅能满足企业的多样化需求,还能助力企业高效管理客户关系,提升销售业绩。
|
运维 API Apache
《Saltstack:自动化运维的瑞士军刀,让IT管理变得简单而强大》
【8月更文挑战第13天】面对服务器数量激增和网络复杂化,传统手动运维已难以应对。自动化运维工具Saltstack(简称Salt),基于Python开源,采用C/S架构,由Master和Minion构成,实现任务分发与执行。Salt具备配置管理、远程执行及云管理等功能。通过声明式状态文件,可确保系统符合预期配置;远程执行简化批量任务处理;集成云服务API实现资源动态管理。Salt以高效灵活的方式助力IT基础设施管理,成为现代运维不可或缺的利器。
361 1
|
前端开发 JavaScript API
MonacoEditor 加载很慢该怎么优化?
MonacoEditor 加载很慢该怎么优化?
2822 0
|
存储 负载均衡 算法
TiKV简介
【2月更文挑战第27天】本章节旨在为读者提供一个关于TiKV存储引擎的初步认识,包括其基本概念、产生背景、主要特性以及在分布式存储领域中的应用。通过本章节的介绍,读者将能够对TiKV有一个整体的了解,为后续深入学习其存储原理和数据模型奠定基础。
|
传感器 API Android开发
Android摄像头采集选Camera1还是Camera2?
Camera1与Camera2是Android平台上的两种摄像头API。Camera1(API1)在Android 5.0后被标记为过时,新项目应优先选用Camera2(API2)。Camera2提供了更精细的控制选项,如曝光时间、ISO感光度等;支持多摄像头管理;采用异步操作提高应用响应速度;并支持RAW图像捕获及实时图像处理。此外,它还具备更好的适配性和扩展性,适用于各类应用场景,如相机应用开发、视频通话和计算机视觉等。因此,在现代Android开发中推荐使用Camera2。
461 0