cassandra的索引查询和排序
cassandra的查询虽然很弱,但是它也是支持索引和排序的,当然是简陋的查询,这一切都是为了追求性能的代价,所以要使用cassandra,你不能希望它完全适用你的逻辑,而是把你的逻辑设计的更适合cassandra。
第一:索引查询
cassandra是支持创建二级索引的,索引可以创建在除了第一个主键之外所有的列上,当然有些类型除外,例如集合类型。
例如
CREATE TABLE test( a INT, b INT, c INT, d INT, e INT, m INT, PRIMARY KEY(a,b,c)); CREATE INDEX ON test(c); CREATE INDEX ON test(e);
在第一主键a上创建索引是不可以的:
CREATE INDEX ON test(a) X
索引列只可以用=号查询,所以
SELECT * FROM test WHERE e=1; //是可以 SELECT * FROM test WHERE e>1; //就不行了。
如果你的查询条件里,有一个是根据索引查询,那其它非索引非主键字段,可以通过加一个ALLOW FILTERING来过滤实现、
例如:
SELECT * FROM test WHERE e=1 AND m>2 ALLOW FILTERING;
虽然m字段是非索引非主键字段,但是只要加了ALLOW FILTERING条件,它会先根据e=1查出来,再对结果进行m>2过滤
第二:排序
cassandra也是支持排序的,order by。 当然它的排序也是有条件的,
第一:必须有第一主键的=号查询。cassandra的第一主键是决定记录分布在哪台机器上,也就是说cassandra只支持单台机器上的记录排序。
第二:那就是只能根据第二、三、四…主键进行有序的,相同的排序。
第三:不能有索引查询
SELECT * FROM test WHERE a=1 ORDER BY b DESC; SELECT * FROM test WHERE a=1 ORDER BY b DESC, c DESC; SELECT * FROM test WHERE a=1 ORDER BY b ASC; SELECT * FROM test WHERE a=1 ORDER BY b ASC, c ASC;
以上都是可以的。
SELECT * FROM test ORDER BY b DESC; //没有第一主键 不行 SELECT * FROM test WHERE a=1 ORDER BY c DESC; //必须以第二主键开始排序 SELECT * FROM test WHERE a=1 ORDER BY b DESC, c ASC; //不是相同的排序。 SELECT * FROM test WHERE e=1 ORDER BY b DESC; //不能有索引。
其实cassandra的任何查询,最后的结果都是有序的,默认的是b asc, c asc,因为它内部就是这样存储的。
这个我在《cassandra2.0 如何实现分页查询》文章中提到过。所以你使用b desc, c asc 或者b asc,c desc 去排序,cassandra是比较为难的。
当然这个默认存储排序方式,是可以在建表的时候指定的。
CREATE TABLE test( a INT, b INT, c INT, d INT, e INT, m INT, PRIMARY KEY(a,b,c)) WITH CLUSTERING ORDER BY (b DESC, c ASC);
相关推荐
3. 数据插入和查询操作,以及Cassandra不提供写入反馈的特性。比如,文档中提到“写入数据不产生反馈”、“部分插入”、“缺失行”和“分页检索结果”的概念。 4. 数据模型的发展,它强调了为Cassandra设计高效数据...
DevCenter提供了一个表格视图,显示表中的记录,支持筛选、排序和数据导出功能。此外,还支持直接编辑和删除单条或多条记录。 4. **性能监控**:DevCenter能够监控Cassandra集群的性能指标,如读写速率、延迟、节点...
Apache Cassandra是一个开源的、分布式的NoSQL数据库管理系统,特别适用于需要处理大量数据且要求高可用性的应用场景。...通过这个文档,开发者可以更高效地使用CQL来管理和查询Cassandra数据库中的数据。
- **次索引**:为了提高查询性能,Cassandra支持创建次索引。 - **结果排序**:Cassandra支持高效的查询结果排序。 - **即时一致性**:尽管Cassandra主要采用最终一致性模型,但也可以配置为支持即时一致性。 - **...
- **索引**:讲解Cassandra中索引的概念及其作用,包括二级索引和自定义索引的使用。 - **分区策略**:介绍Cassandra中的各种分区策略,如RandomPartitioner、Murmur3Partitioner等。 - **压缩与缓存**:探讨...
它提供了简化数据建模和查询的能力,同时增强了对复杂数据类型的支持。 #### 二、CQL 数据模型 - **数据建模概念**:在 Cassandra 中,数据被组织成 keyspace 和 table。一个 keyspace 可以理解为数据库的概念,...
最后,文档中还提供了一系列使用CQL的基本操作指导,如启动cqlsh(Cassandra的一个命令行工具)、创建和更新***ce、创建表、插入数据、查询系统表等。这些操作指导有利于用户快速上手CQL,并将理论知识应用于实践中...
例如,V0.6引入了与Hadoop的集成和行缓存,V0.7增加了二级索引和在线模式改变,V0.8加入了分布式计数器和堆外行缓存,V1.0引入了CQL,V1.1支持了时间戳UUID和数据排序,V1.2增强了CQL3和引入了行级别的隔离,V2.0则...
每个节点都与其他节点通信,形成一个环状网络结构,实现数据的分布式存储和查询。 2. 一致性哈希:Cassandra 使用一致性哈希算法来确定数据在节点间的分布,这使得添加或删除节点时对系统的影响降到最低,保持了...
### Cassandra与HBase系统架构比对 ...Cassandra强调高可用性和高可扩展性,适合需要频繁写入和查询的应用场景;而HBase则更适合构建大规模的、实时处理的数据应用。选择哪种数据库取决于具体的应用需求和技术背景。
Cassandra提供了丰富的工具和API,如`nodetool`用于集群监控和管理,`cqlsh`用于执行CQL(Cassandra查询语言)命令。这些工具使得运维人员能够轻松地监控、调整和优化集群。 总结来说,Cassandra通过其独特的分布式...
HBase常见于实时大数据分析、监控系统和搜索引擎索引。 综上所述,选择Cassandra还是HBase取决于具体的应用需求。对于需要高度可用性、动态列结构和大量写入的场景,Cassandra可能是更好的选择;而如果需要强一致性...
在SQL查询中,我们还可以使用WHERE子句来设定条件,GROUP BY和HAVING用于分组和过滤,ORDER BY用于排序结果。 2. 数据查询技巧:有效的查询通常需要理解索引、JOIN和子查询。索引可以极大地提高查询速度;JOIN用于...
Apache Cassandra 是一个分布式、高度可扩展的...通过这个项目,你可以深入理解Cassandra的数据模型和查询机制,以及如何根据实际需求调整和优化模型。对于数据工程和NoSQL数据库的实践者来说,这是一项宝贵的技能。
8.5 Apache Cassandra的索引与排序 141 8.6 小结 143 第9章 事务和数据完整性的管理 144 9.1 RDBMS和ACID 144 9.2 分布式ACID系统 147 9.2.1 一致性 149 9.2.2 可用性 149 9.2.3 分区容忍性 149 9.3 维持CAP...
选择合适的Partition Key对于读写性能至关重要,因为它直接影响到数据的分布和查询效率。 - **Clustering Key**:在Partition Key内对数据进行排序,可以有多个Clustering Key。它们共同决定了数据在分区内的物理...
对于经常用于排序和分组的字段,可设置聚集索引。但需要注意,过多的索引会增加写操作的开销,因此要权衡读写性能。 2. **查询设计**:编写高效的SQL语句是优化查询的基础。避免全表扫描,尽量利用索引进行查询。...
Cassandra是一款分布式NoSQL数据库系统,设计用于处理大规模数据,提供高可用性、线性可扩展性和出色的数据持久性。通过有效的数据建模,我们可以确保Cassandra能够高效地处理查询,并在分布式环境中保持良好的性能...
B树和B+树适合处理范围查询和排序,而哈希索引适用于等值查询,位图索引则在处理多对多关系或稀疏数据时表现优秀。 此外,数据库查询优化也是数据库查找中的关键环节。这包括了查询计划的选择、存储过程的使用、...
而NoSQL数据库(如MongoDB、Cassandra)则适用于存储和查询非结构化数据,它们提供了灵活的数据模型和高性能的读写能力。 在大数据查询中,索引技术也扮演着重要角色。为了加速查询,可以在数据上创建索引,但需要...