Cassandra 学习七 cassandra研究

  https://www.cnblogs.com/bonelee/p/6306079.html

Allow filtering:

如果你的查询条件里,有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现;

  虽然查询非索引非主键字段,但是只要加了ALLOW FILTERING条件,它会先根据索引查出来的值,再对结果进行过滤;

(如果不加ALLOW FILTERING,而又有非索引列,这样是不允许的; 加上ALLOW FILTERING,相当于在结果后再进行过滤。)

二级索引:

二级索引,作为辅助索引就是为了找到一级索引。然后再通过一级索引找到真正的值:二级索引可以用=, 但是不能用 >; 如果不是二级索引,而是allow filtering的列,可以用>, 但是要带上allow filtering

排序: 

  使用order by的限制。
  1:  必须有所有partition key 的 “=” 查询
  2:排序必须根据clustering key的顺序进行有序的、 相同的升序和降序排序(当然可以在建表时指定有的升序,有的降序;不管如何要保持建表指定的排序和查询               的排序一致)
  3:order by 的查询前面不能有索引查询。 (这个确实是,但是不知道是什么原理)

Cassandra 的 CQL太弱了;

  1. CQL语句不能同时包含order by 和 like

    要使用like语句,需要建立相关索引

CREATE CUSTOM INDEX seller_name_index ON deallistbylineitem (seller_name)
USING ‘org.apache.cassandra.index.sasi.SASIIndex‘;

you can‘t use like and order by in same query(https://stackoverflow.com/questions/49247092/order-by-and-like-in-same-cassandra-query);

2.  Cassandra CQL不支持NOT in/  !=

 3   不支持类似于  limit start, count这样的分页,但是有另外的方法,用token可以实现。          

     4     where 的查询条件中支持 AND 但是不支持  OR。
   
 5    不支持join

总结:

   本连项目打算用cassadra, 研究了一下,发现CQL语句很弱,不适合我们的业务需求;

   Cassandra确实很快,但是不适合与稍微复杂的查询;

   可以通过集成spark、solr来加强CQL语句的功能

原文地址:https://www.cnblogs.com/liufei1983/p/9493708.html

时间: 2024-10-29 00:22:18

Cassandra 学习七 cassandra研究的相关文章

回望2017,基于深度学习的NLP研究大盘点

回望2017,基于深度学习的NLP研究大盘点 雷锋网 百家号01-0110:31 雷锋网 AI 科技评论按:本文是一篇发布于 tryolabs 的文章,作者 Javier Couto 针对 2017 年基于深度学习的自然语言处理研究进行了大盘点.雷锋网 AI 科技评论根据原文进行了编译. 在过去的几年里,深度学习(DL)架构和算法在诸如图像识别和语音处理等领域取得了世人瞩目的进步.然而在最开始的时候,深度学习在自然语言处理(Natural Language Processing, NLP)领域的

springMVC3学习(七)--Interceptor拦截器

Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.handler.HandlerInterceptorAdapter适配器, 实现这个接口或继承此类,能够很方便的实现自己的拦截器. 有下面三个方法: Action之前运行 public boolean preHandle(HttpServletRequest request, HttpServletR

Spark学习七:spark streaming与flume集成

Spark学习七:spark streaming与flume集成 标签(空格分隔): Spark 一,启动flume flume-conf.properties文件 agent002.sources = sources002 agent002.channels = channels002 agent002.sinks = sinks002 ## define sources agent002.sources.sources002.type = exec agent002.sources.sour

CorePlot学习七---坐标轴的详细分析

先看代码,有标注,很详细,看看是如何设定x.y轴的可视范围.移动范围.已经如何确定原点的位置的.还有就是如何固定坐标轴!!! //坐标轴的初始化 -(void)axesInit { // Setup plot space: 设置一屏内可显示的x,y量度范围 CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)[xyGraph defaultPlotSpace]; plotSpace.delegate = self; plotSpace.allowsUser

cesium 学习(七) HeadingPitchRoll

cesium 学习(七) HeadingPitchRoll 一.前言 对于模型旋转变换.相机视角变换以及方向变换的处理操作,也就是改变heading.pitch.roll这三个的值.这三个值代表什么意思呢?接下来就专门介绍一下Cesium的HeadingPitchRoll. 二.HeadingPitchRoll HeadingPitchRoll其实也就是欧拉(Euler)角:   机体坐标系与地面坐标系的关系是三个Euler角:yaw,pitch,roll,反应了飞机相对地面的姿态.也就是说Ya

cassandra学习笔记

cassandra是一个基于kv的nosql数据库,但是自己弄了一套类似slq的cql语法,用起来很有sql的感觉. 对于用户,首先先看看有没有好的管理工具 基于cql的查询工具 自带的cqlsh,除了是cmd,我觉得没有什么缺点了 别的gui工具,在cql方面,离这个cqlsh差远了 集群管理工具 自带的nodetool 性能分析工具 jconsole 两个节点集群测试 db1:192.168.1.111 db2:192.168.1.222 分别修改cassandra.yml 修改cluste

Cassandra 学习三 数据模型

   Cassandra如何存储数据的概述. 集群(Cluster) ·Cassandra数据库分布在几个一起操作的机器上.最外层容器被称为集群.对于故障处理,每个节点包含一个副本,如果发生故障,副本将负责.Cassandra按照环形格式将节点排列在集群中,并为它们分配数据. 键空间 (Keyspace)(相当于关系型数据库的DataBase) 键空间是Cassandra中数据的最外层容器.Cassandra中的一个键空间的基本属性是 - 复制因子 - 它是集群中将接收相同数据副本的计算机数.

cassandra学习 四 数据模型

Keyspace(建空间): 可以理解为Database: Replication factor: 复制因数 :   Replica placement srategy: 复制策略,默认是SimpleStrategy Column Family(列族) / Column (列) 可以理解为table:    Column 包含了Timestamp.作用是当有新数据覆盖的时候,部署直接将老数据从存储介质上删除,而是直接写入新数据.老数据会在一段时间后删除. Row可以理解为一条记录,Column其

Cassandra学习五 使用Key的正确姿势

NoSQL一般是反范式的,比如提倡数据冗余,使得不至于写出非常复杂的SQL语句. Cassandra之中一共包含下面5中Key: Primary Key: 用来获取某一行的数据,可以是一列或多列               PRIMARY KEY(key_part_one, key_part_two)    key_part_one -  partition key   key_part_two - clustering key PRIMARY KEY((k_part_one,k_part_tw