本文介绍cassandra支持的,目前我所知道的所有查询表达式类型。如果你需要更复杂的查询,单单依靠cassandra是很难做到的,你需要借助其它手段或者工具。
cassandra目前支持的表达式目前有三种:
我们先假设我们的表结构是这样的:
CREATE TABLE test( a INT, b INT, c INT, d INT, e INT, PRIMARY KEY(a,b,c,d) ); CREATE INDEX ON test(e);
1、前缀表达式
就是查询条件必须是主键,且前面的主键是=号,只有最后一个主键是> >= < <=。
举例:
SELECT * FROM test WHERE a=1 AND b>2; SELECT * FROM test WHERE a=1 AND b=1 AND c>2; SELECT * FROM test WHERE a=1 AND b=1 AND c=1 AND d>2; SELECT * FROM test WHERE a=1 AND b=1 AND c>2 AND c<2;
以上都是可行的。
SELECT * FROM test WHERE a>1; //不行,第一主键只能用=号 SELECT * FROM test WHERE a=1 AND c>2; //不行 中间不能有跳跃 SELECT * FROM test WHERE a=1 AND b>2 AND b>=2; //不行,同一个主键不能同时用> >= = 或者< <= =
2、不含第一主键的前缀表达式
这类表达式,需要加上ALLOW FILTERING来查询,这样的查询效率肯定是低一些
举例:
SELECT * FROM test WHERE b>2 ALLOW FILTERING; SELECT * FROM test WHERE b=1 AND c>2 ALLOW FILTERING; SELECT * FROM test WHERE b=1 AND c=1 AND d>2 ALLOW FILTERING; SELECT * FROM test WHERE b=1 AND c>2 AND c<2 ALLOW FILTERING;
3、包含索引列查询
举例:
SELECT * FROM test WHERE e=1; //只含索引 SELECT * FROM test WHERE a=1 AND b=1 AND c>1 AND e=1; //包含索引列和前缀表达式的组合 SELECT * FROM test WHERE b=1 AND c>1 AND e=1; //包含索引列和不含第一主键的前缀表达式的组合 不需要ALLOW FILTERING SELECT * FROM test WHERE c>1 AND e=1 ALLOW FILTERING; //除此之外和任意其它表达式的组合,都可以进行查询, //前提是要加ALLOW FILTERING;
最后说一下,cassandra查询出来的结果,无论什么查询结果,都是先按token(a)排序,再按b排序 再按c排序,再按d排序:
a | b | c | d | e ---+---+---+---+--- 13 | 2 | 3 | 4 | 5 1 | 2 | 1 | 4 | 5 1 | 2 | 3 | 1 | 5 1 | 2 | 3 | 2 | 5 1 | 2 | 3 | 4 | 5 1 | 2 | 3 | 7 | 5 1 | 2 | 6 | 4 | 5 1 | 3 | 2 | 4 | 5 1 | 4 | 3 | 7 | 5 1 | 7 | 3 | 7 | 5 2 | 2 | 3 | 4 | 5 21 | 2 | 3 | 4 | 5
这有助你进行分页查询
相关推荐
在2.1中,CQL的功能更加丰富,支持更多数据类型和复杂的查询表达式,提高了开发效率。 ### 9. 垂直切片和水平切片 Cassandra 支持垂直切片(Row Key + Column Slice)和水平切片(多个Row Key)。2.1版本在查询...
这个驱动程序版本为1.0.0.0,它集成了LINQ(Language Integrated Query)支持,使得C#程序员能够利用熟悉的查询语法来操作Cassandra的数据。同时,该驱动还支持CQL3(Cassandra Query Language第三版),这是...
Prometheus使用Pull模型从目标服务抓取时间序列数据,然后通过表达式查询语言进行分析和可视化。Grafana支持导入Prometheus数据源,使得数据可视化更为便捷。 在“Cassibility-master”这个压缩包子文件名中,...
2. **动态查询DSL**: Achilles提供了动态构建CQL查询的能力,通过QueryBuilder类,开发者可以构建复杂的查询表达式,而不需要手动编写CQL字符串。这使得查询更加安全,减少了SQL注入的风险,并提高了代码的可读性...
《使用Rust构建日志服务代理:连接Cassandra DB的深度解析》 在现代软件开发中,...通过理解Rust的编程特性和Cassandra的数据模型,开发者可以打造出满足大规模日志处理需求的服务,为企业的运维工作提供有力支持。
MongoDB支持JavaScript表达式查询,能在服务器端执行JavaScript函数,提供in-place更新,使用内存映射文件存储数据,注重性能优化。MongoDB适合需要动态查询、索引支持和高性能处理大量数据的应用,比如需要动态查询...
6. **SPARQL处理**:Jena 提供了 SPARQL 查询引擎,可以执行复杂的查询表达式,获取特定的信息。同时,它还支持使用 SPARQL Update 更新模型。 7. **链接数据**:Jena 支持链接数据的概念,允许开发者轻松地发现、...
- **数据访问改进**:提供了对新的数据库支持,如对 Cassandra 的支持。 - **JMS 改进**:继续增强 JMS 的支持。 - **Web 改进**:增强了对现代 Web 技术的支持,如对 HTTP/2 的支持。 - **WebSocket 消息改进**...
这个库支持多种数据存储技术,如关系型数据库(JPA、Hibernate)、NoSQL数据库(MongoDB、Cassandra)以及搜索引擎(Elasticsearch)等。它允许开发者专注于业务逻辑,而无需深陷于底层数据访问的细节。 二、...
例如,列存储如HBase和Cassandra适合存储结构化和半结构化数据,提供高效查询;文档存储如MongoDB和CouchDB允许以类似JSON的格式存储文档型数据,支持部分关系数据库的功能;key-value存储如Tokyo Cabinet/Tyrant和...
13.3.1 正则表达式支持 224 13.3.2 布隆过滤器 224 13.4 Apache Cassandra 225 13.4.1 点对点模型 225 13.4.2 基于Gossip和Antientropy 225 13.4.3 快速写 226 13.4.4 提示移交 226 13.5 Berkeley DB 226 ...
Spring Data项目在4.0版本中也有了显著提升,对各种NoSQL数据库的支持加强,如MongoDB、Cassandra等。同时,JPA和Hibernate集成也得到了优化。 9. **AOP改进**: AOP代理性能得到提升,支持CGLIB和Java代理的混合...
同时,对NoSQL数据库的支持也得到了扩展,如MongoDB、Cassandra等。 7. **AOP增强**: 面向切面编程在Spring 5.0中继续优化,包括更灵活的切入点表达式和更多的通知类型。此外,还提供了对Java代理和CGLIB代理的...
8. **数据访问改进**:对于NoSQL数据库的支持进一步增强,例如MongoDB和Cassandra,使Spring框架能更好地适应多种数据存储方案。 9. **AOP增强**:面向切面编程(AOP)在4.0中也有所增强,包括更灵活的切点表达式...
common模块selection包:支持4种查询表达式(CSS/JSONPath/RegExp/XPath)支持5种查询内容(JSON/HTML/Swing/Text/XML) 2020.05.08 transaction模块:支持7种分布式锁(Cassandra/ElasticSearch/Hazelcast/Hibernate/Mongo...
4. **丰富的查询表达式**:使用 JSON 格式的查询语句,支持内嵌对象和数组的操作。 5. **更新操作**:update() 命令可以更新整个文档或特定字段。 6. **MapReduce**:用于数据的批量处理和聚合操作,通过 Map 函数...
- Spring 4.0引入了对Java 8的全面支持,包括Lambda表达式、Stream API、日期和时间API(java.time)以及默认方法。这使得开发者可以更方便地利用新语言特性编写简洁且功能强大的代码。 2. **反应式编程**: - ...
6. **Data Access增强**:Spring Data项目在4.2中进行了扩展,支持更多的数据访问技术,如MongoDB和Cassandra,同时对JPA和JDBC的集成也得到了优化。 7. **测试框架升级**:Spring Test和Spring Boot Test模块提供...