zoukankan      html  css  js  c++  java
  • 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语句的功能

  • 相关阅读:
    使用PHP QR Code生成二维码
    thinkphp伪静态(url重写)
    jQuery Ajax 实例 ($.ajax、$.post、$.get)
    php各种编码集详解和以及在什么情况下进行使用
    PHP无限极分类生成树方法,无限分级
    PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
    Js获取当前日期时间及其它操作
    Spring源码解读Spring IOC原理
    java多线程系列六、线程池
    springMVC中ajax的实现
  • 原文地址:https://www.cnblogs.com/liufei1983/p/9493708.html
Copyright © 2011-2022 走看看