cassandra使用一个特殊主键(复合键)表示宽行,宽行也叫分区。复合键由一个分区键和一组可选的集群列组成。分区键用于确定存储行的节点,分区键也可以包含多个列。集群键用于控制数据如何排序以及在分区中如何存储。cassandra还支持静态列,这些列用于存储不属于主键但是由一个分区中的所有行共享的那些数据。
主键=分区键(用来确定分区)+集群键(确定一条记录在分区的位置)

集群-->keyspace-->表-->列
可以只查询,更新部分列。不像关系型,不是定义的所有列都会占空间,如果这一列没有值,存储的时候不占空间。CQL中的select,insert,update,delete都是按行操作。
时间戳
向cassandra写入数据,会为更新的各个列值生成一个时间戳。多次写入同一个值,cassandra内部用这个时间戳来解决冲突,一般会以最后的时间戳为准。用writetime()来查询。主键无法用这个函数。writetime也可以被更新,被指定,使用不当会导致新数据被老数据覆盖。
TTL(time to live)
cassandra使用TTL让不在需要的数据过期,用于列,默认为null,表示不会过期。只有可以取到writetime才可以设置ttl,所以主键没有ttl。
除了列级TTL,也有表级TTL。优先以列级为准,然后才是表级。
CQL
int(32),bigint(long),smallint(short),tinyint(byte),varint
float,double,decimal
没有枚举,只能用text代替。
text,varchar:UTF-8字符的同义词。
ascii:ascii字符串
ps:默认地,cqlsh使用反斜线转义显示控制字符和不可打印字符。
timstamp
date,time(2.2才开始支持)
uuid,uuid长度有限,所以没法保证绝对唯一。uuid(): TYPE4 UUID.
timeuuid: TYPE 1 UUID,基于计算机地MAC,系统时间和用来防止复制地一个序列号生成地。常用于无冲突时间戳。
ps:创建一个表,主键是无法修改的,因为决定数据的分布。
boolean
blob:二进制大对象。cassandra不会校验blob的字节。
inet:IPv4,ipv6
counter:提供64位有符号整数,值不能直接设置,只能自增或者自减。不能作为主键。如果使用了计数器,除了主键列,所有其他列都必须是counter。
自增和自减操作不是幂等的。没有直接重置一个counter的方法。可以通过读取counter再让这个值自增或者自减。但还是不可靠。
set:集合类型。无序,但是返回结果一般是字母排序。可以包含用户自定义类型。优点是能够插入额外的元素而无需先读取内容。或者删除,或者清空。 set 集合 + {}; set 集合-{}; set集合={};
list:按照插入顺序排序。[] + xxx ; xxx + []; list[n] = xxx; [] - xxx;
map:键值对。key和value不允许为null(驱动),不允许为counter。
用户自定义类型(UDT):限制在keyspace下面。用户自定义类型会被认为是一种集合类型。cassandra2.2之前不能充分支持。所以有个frozen关键字去修饰,这样可以支持嵌套,前向兼容。未来可能会有unfrozen之类的关键字去解冻。被frozen修饰的集合类型,可以作为主键。

二级索引
对非主键创建索引,可以对集合的值创建索引,删除索引。可以对map的键和值(默认是对值创建索引)单独创建索引,但不能同时创建,2选1。
cassandra数据分布多节点,每个节点得单独维护二级索引,以下场景不适合使用二级索引。
1、有很大基数的列,列的值太多。
2、数据基数非常低,就是这一列的值重复太多,不够离散。导致建索引没什么用,索引包含大量重复行。
3、频繁更新或者删除,墓碑多,compact慢的时候。
最好是另外设计表,或者使用物化视图。
SASI:cassandra 3.4支持。为SSTable添加二级索引。苹果公司开发。为每个SSTable计算SASI,并为每个SSTable文件计算SASI索引,作为SSTable文件存储一部分。原来的二级索引是把索引存储在单独的“隐藏”表中。SASI还是要读取多个节点。支持>,<,like.

cassandra权威指南读书笔记--cassandra查询语言的更多相关文章

  1. cassandra权威指南读书笔记--Cassandra架构(3)

    分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...

  2. cassandra权威指南读书笔记--Cassandra架构(2)

    环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一 ...

  3. cassandra权威指南读书笔记--Cassandra架构(1)

    结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gos ...

  4. cassandra权威指南读书笔记--cassandra概述

    cassandra是一个开源的.分布式.去中心化.弹性可扩展.高可用.容错.可调一致性.面向行数据库,分布式设计基于Amazon Dynamo,数据模型基于Google BigTable.cassan ...

  5. cassandra权威指南读书笔记--安全

    认证和授权driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.密码认证器cassandra还支持自定义,可插拔的认证机制.默认的认证器:or ...

  6. cassandra权威指南读书笔记--客户端

    DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...

  7. cassandra权威指南读书笔记--性能调优

    cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms ...

  8. cassandra权威指南读书笔记--监控&维护

    cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extension ...

  9. cassandra权威指南读书笔记--读写数据

    写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...

随机推荐

  1. String被final修饰

    源码:

  2. CentOS8设置网络镜像安装源

    CentOS8通过引导盘+网络镜像镜像源安装系统,设置网络镜像安装源为: mirrors.aliyun.com/centos/8/BaseOS/x86_64/os

  3. 【MyBatis】MyBatis 延迟加载策略

    MyBatis 延迟加载策略 文章源码 什么是延迟加载 延迟加载,就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据,也被成为懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提 ...

  4. 【C++】《C++ Primer 》第五章

    第五章 语句 一.简单语句 表达式语句:一个表达式末尾加上分号,就变成了表达式语句. 空语句:只有一个单独的分号,记得注释说明提高代码可读性. 复合语句(块):用花括号 {}包裹起来的语句和声明的序列 ...

  5. 肌肤管家SkinRun V3S智能皮肤检测仪,用AI探索肌肤问题

    继肌肤管家SkinRun V3皮肤检测仪之后,肌肤管家SkinRun近期又一重磅推出的肌肤管家SkinRun V3S 智能肌肤测试仪引起了美业人的广泛关注.据了解它汇集百万皮肤数据,利用五光谱原理和人 ...

  6. java环境配置-win10(傻瓜式教程)

    java环境配置 – 小学弟要开始学java了,由于本人较懒,表达能力有限,所以来这,写一篇简单的指导,帮学弟装下java环境. 首先打开浏览器,输入这个网址https://www.oracle.co ...

  7. rac双节点+物理DG

    注:以下文章均是看了黄伟老师的视频,记录为博客供以后使用. 双节点RAC搭建: http://blog.csdn.net/imliuqun123/article/details/76171289 RA ...

  8. SDUST数据结构 - chap3 栈和队列

    一.判断题: 二.选择题: 三.编程题: 7-1 一元多项式求导: 输入样例: 3 4 -5 2 6 1 -2 0 输出样例: 12 3 -10 1 6 0 代码: #include<bits/ ...

  9. Nacos集成学习入门

    微服务注册中心nacos学习:先尝试使用它,然后撸它源码搞懂它. 在这里整理一下自己之前集成nacos的内容. 我的github地址:https://github.com/mrxiaobai-wen/ ...

  10. 基于.NET Core的优秀开源项目合集

    开源项目非常适合入门,并且可以作为体系结构参考的好资源, GitHub中有几个开源的.NET Core项目,这些项目将帮助您使用不同类型的体系结构和编码模式来深入学习 .NET Core技术, 本文列 ...