Cassandra二级索引原理——新创建了一张表格,同时将原始表格之中的索引字段作为新索引表的Primary Key,并且存储的值为原始数据的Primary Key,然后再通过pk一级索引找到真正的值
1.什么是二级索引?
我们前面已经介绍过Cassandra之中有各种Key,比如Primary Key, Cluster Key 等等。如果您对这部分概念并不熟悉,可以参考之前的文章: [Cassandra教程] (四)使用Key的正确姿势 对于Cassandra来说,一级索引就是Primary Key. 因为查询的时候,可以直接根据Key算出token然后直接获取对应的记录。
而二级索引,作为辅助索引就是为了找到一级索引。然后再通过一级索引找到真正的值
原文链接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/
2. 二级索引的原理
Cassandra之中的索引的实现相对MySQL的索引来说就要简单粗暴很多了。他实际上是 自动偷偷新创建了一张表格,同时将原始表格之中的索引字段作为新索引表的Primary Key!并且存储的值为原始数据的Primary Key
因此,什么样的数据、字段适合做二级索引,也就很清楚了。
我们翻译一下官方的解释:
参考网址: https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_when_use_index_c.html
原文链接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/
3. 什么时候 不适合 用索引
- High-cardinality 列。 相当于这一列的值很多很多的时候。
- 因为查询了很多结果只能取出一小部分数据集
- counter 类型的列
- 删除、更新太过频繁的列
- Cassandra删除、更新数据都会给老数据设置一个Tombstone(墓碑)。当Tombstone的数据查过10K的时候,就会报错
- 再加上需要同步的更新索引表,Tombstone本身的标记也会很消耗资源
- 数据集值太多
- 原文英文没怎么看懂,这是笔者自己的理解。
- 再次强调一下:二级索引里面存储的是原始数据的Primary Key。因此如果一次查询的数据过多就会遇到超时异常
总结一下:
就是索引对应的数据值不能太多也不能太少。 太多就超时,太少就浪费资源(需要创建太多的Primary Key)。 同时索引的列还要稳定,不能频繁的删除或者更新~
所以个人认为, 能不用Cassandra之中的索引就不要用 ,还不如自己显示的创建一个
原文链接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/
4. 如何使用索引
索引的使用非常简单,参考下面的代码以及相应的注释:
-- 创建索引 CREATE INDEX artist_names ON playlists( artist ); -- 查询 SELECT * FROM playlists WHERE artist = 'Fu Manchu'; -- 优化查询 SELECT * FROM playlists WHERE id = 62c36092-82a1-3a00-93d1-46196ee77204 AND artist = 'Fu Manchu';
原文链接:http://www.flyml.net/2016/09/16/cassandra-tutorial-secondary-index/
Cassandra二级索引原理——新创建了一张表格,同时将原始表格之中的索引字段作为新索引表的Primary Key,并且存储的值为原始数据的Primary Key,然后再通过pk一级索引找到真正的值的更多相关文章
- mysql索引原理及创建与查询
索引介绍 一:为什么要有索引 索引是用来优化查询效率(速度)的 没有索引的话,对于大数据的表,就只能每次都遍历一遍,数据量越大,耗时越多有索引的话,可以提升好几个数量级的速度 一般的应用系统,读写比例 ...
- php面试专题---Mysql索引原理及SQL优化
php面试专题---Mysql索引原理及SQL优化 一.总结 一句话总结: 注意:只写精品 1.为表设置索引要付出代价 是什么? 存储空间:一是增加了数据库的存储空间 修改插入变动索引时间:二是在插入 ...
- Mysql高手系列 - 第22篇:深入理解mysql索引原理,连载中
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第22篇. 背景 使用mys ...
- 你真的理解索引吗?从数据结构层面解析mysql索引原理
从<mysql存储引擎InnoDB详解,从底层看清InnoDB数据结构>中,我们已经知道了数据页内各个记录是按主键正序排列并组成了一个单向链表的,并且各个数据页之间形成了双向链表.在数据页 ...
- SQL Server2014 哈希索引原理
SQL Server2014 哈希索引原理 翻译自:http://www.sqlservercentral.com/blogs/sql-and-sql-only/2015/09/08/hekaton- ...
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>
一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...
- MYSQL之索引原理与慢查询优化
一.索引 1.介绍 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的也是最容易出现问题的,还是一些复杂的查询操作,因此对查询语句的优化 ...
- MySQL InnoDB 索引原理
本文由 网易云发布. 作者:范鹏程,网易考拉海购 InnoDB是 MySQL最常用的存储引擎,了解InnoDB存储引擎的索引对于日常工作有很大的益处,索引的存在便是为了加速数据库行记录的检索.以下是 ...
- MySQL之索引原理和慢查询优化
一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...
随机推荐
- 洛谷 P2073 送花
这题其实可以用vector水掉! 定义: 记住要用结构体(c为价格,x为美丽值)! 以c排序. struct Node { int x,c; bool operator < (const &am ...
- hadoop开发MapReduce程序
准备工作: 1.设置HADOOP_HOME,指向hadoop安装目录 2.在window下,需要把hadoop/bin那个目录替换下,在网上搜一个对应版本的 3.如果还报org.apache.hado ...
- Linux学习笔记(3)linux服务管理与启停
一.LINUX 系统服务管理 1.RHEL/OEL 6.X及之前 service命令用于对系统服务进行管理,比如启动(start).停止(stop).重启(restart).查看状态(status)等 ...
- mysql 如何找出两张表之间的关系
分析步骤: #1.先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2.再站在右表的角度去找 是否右表的 ...
- 005-Symbol、Proxy、Reflect
1.Symbol:http://es6.ruanyifeng.com/#docs/symbol 2.Proxy:http://es6.ruanyifeng.com/#docs/proxy Proxy ...
- Ionic 3 项目的工程目录结构(转载)
工程目录结构说明如下图
- Behind The Cloud--浅析分布式系统背后的基础设施
http://blog.csdn.net/it_yuan/article/details/8617127 Behind The Cloud--浅析分布式系统背后的基础设施 分类: 系统架构2013- ...
- 5. Longest Palindromic Substring(最长回文子串 manacher 算法/ DP动态规划)
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- HDU - 6435 Problem J. CSGO 2018 Multi-University Training Contest 10 (二进制枚举+思维)
题意:有N个主武器(MW)和M个副武器(SW),每个武器都有自己的S值,和K个附加属性xi.要选取一对主副武器搭配,搭配后获得的性能由该公式得出: 求获得最大的性能为多少. 分析:由于|xm - xs ...
- 在U盘上安装Damn Small Linux
Damn Small Linux 是一个袖珍Linux发行版,整个系统只有50M左右,所以可以放到U盘中,从而可以在支持U盘启动的电脑上使用Linux,功能与LiveCD相当. 有很多种方法可以将 ...