Cassandra 学习七 cassandra研究

Posted liufei1983

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句的功能








以上是关于Cassandra 学习七 cassandra研究的主要内容,如果未能解决你的问题,请参考以下文章

时间序列的 Cassandra 数据模型

Cassandra 学习三 数据模型

Cassandra基本介绍 - Cassandra概述

cassandra学习 四 数据模型

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

喜欢唱歌和钢琴演奏的Cassandra B.老师