什么时候使用一个索引
cassandra的内建索引适合这样一个表,它有好多列都包含这个索引列的值。这个索引列有更多的值,你的开销越大,主要是对查询和维护索引。例如假设你有一个播放列表的表里面有数十亿首歌曲。很多歌曲可能有共同的艺术家。这个艺术家的列就比较适合作为索引。
什么情况不适合使用索引
不要在以下情况使用索引:
- 这列的值很多的情况下,因为你相当于查询了一个很多条记录,得到一个很小的结果。
- 表中有couter类型的列
- 频繁更新和删除的列
- 在一个很大的分区中去查询一条记录的时候(也就是不指定分区主键的查询)
值很多的列建索引的坏处
如果你在一个有很多值的列上创建了索引,在这个索引的上的查询就会导致多次查询,而最终查到很少的结果。在一个有数十亿首歌曲的表里通过作者(通常每首歌都不一样)去搜索,相比通过艺术家去搜索,是很低效的。更有效的方式是手动维护一个索引表,而不是使用cassandra的内建索引。对于一些特定值的列,使用索引有时候是很方便的,只要不是大量的查询,并且不是持续负载的情况下。
相反只有几个很少值的列也不适合创建索引,例如boolean型的列,这是没有意义的。索引列的每一个值在索引中都是一行。也就是说对于false的值,会形成一个超级大的行。也就是说索引一个值只有foo=false 和foo=true的列是没有意义的。
频繁更新和删除的列建索引的坏处
Cassandra stores tombstones in the index until the tombstone limit reaches 100K cells. After exceeding the tombstone limit, the query that uses the indexed value will fail.
在一个很大的分区中去查询一条记录的坏处
不指定分区key,在一个索引列上查询,相当于在集群中所有的机器上去查询,这种查询会变慢随着机器的增加。你要在你查询中指定分区key,避免这种查询性能问题。
相关推荐
分布式存储系统:Cassandra:Cassandra的高级特性:二级索引与轻量级事务.docx
从描述中我们可以得知,文档中可能包括了为什么选择Cassandra而不是其他数据库系统的比较,Cassandra提供的核心特性,例如水平扩展性、高可用性、写优化、结构化记录、二级索引、高效结果排序、即时一致性、可离散...
- **索引**:讲解Cassandra中索引的概念及其作用,包括二级索引和自定义索引的使用。 - **分区策略**:介绍Cassandra中的各种分区策略,如RandomPartitioner、Murmur3Partitioner等。 - **压缩与缓存**:探讨...
Apache Cassandra 2.2 官方文档是介绍分布式NoSQL数据库Cassandra的版本2.2的详细指南。Cassandra作为一个开源的、分布式的、高性能的数据库,它特别适合存储大量数据,并提供了出色的扩展性以及容错性。 文档首先...
6. **Secondary Indexes**:Cassandra允许为列创建二级索引,以支持非主键的查询,但需要注意二级索引可能影响写性能和额外的磁盘空间占用。 7. **Compaction策略**:为了管理和优化磁盘空间,Cassandra提供了多种...
在Cassandra 3.11.3版本中,我们看到了许多优化和改进,使其成为企业级应用的可靠选择。 首先,Cassandra的核心特性之一是它的分布式架构。它采用了一种主从复制模型,每个节点都可以接受写入和读取请求,使得系统...
标题中的"CassandraKafkaIndex"是一个专为Apache Cassandra设计的特性,它受到了Stargate-core项目的启发,旨在增强Cassandra数据库的索引功能。Apache Cassandra是一个分布式NoSQL数据库系统,常用于处理大规模的...
- **0.7版**(2011年1月发布):引入了二级索引和在线模式变更的能力。 - **0.8版**(2011年6月发布):增加了Cassandra查询语言(CQL)、自我调整的内存表以及零停机升级的支持。 - **1.0版**(2011年10月发布):...
5. 超级行(Super Column):Cassandra中可选的高级数据类型,用于实现类似于关系型数据库中二级索引的功能。 Cassandra的查询语言称为CQL(Cassandra Query Language),它是类似于SQL的查询语句,用于与Cassandra...
- **二级索引**:支持非主键列的查询。 - **构建和维护索引**:使用 `CREATE INDEX` 和 `DROP INDEX` 语句管理索引。 - **修改表**:使用 `ALTER TABLE` 语句。 - **修改列**:增加或删除列。 - **添加集合类型**...
支持物化视图和二级索引元数据 支持集群键顺序frozen和 Cassandra 版本元数据 黑名单、白名单DC和黑名单DC负载均衡策略 自定义身份验证器 具有 SSL 对等身份验证支持的反向 DNS 随机接触点 投机执行 DSE 功能 DSE ...
总而言之,这份关于Cassandra 3.0的文档涵盖了从基础概念、系统架构、数据一致性、存储引擎到具体部署和运维的全面介绍。文档内容详实,对于想要深入学习和使用Cassandra的开发者和系统管理员来说,是一份非常有价值...
7. **Secondary Indexes**:虽然Cassandra最初设计为基于主键的快速查询,但后来引入了二级索引来支持其他查询模式。不过,二级索引使用需谨慎,因为它们可能会对性能产生影响。 8. ** Tombstones & Garbage ...
#### 二、Apache Cassandra 简介 Apache Cassandra 是一款开源分布式 NoSQL 数据库管理系统,以其高度可扩展性和容错性而闻名。它最初由Facebook开发,后来捐赠给了Apache基金会。Cassandra 支持高可用性,并且没有...
- **索引与查询优化**:介绍如何利用二级索引、全文搜索等技术提高查询效率,同时讨论了Cassandra查询语言(CQL)的高效使用技巧。 - **硬件与软件配置**:讨论了如何选择合适的硬件配置,如SSD存储、足够的RAM和...
实验结果表明,该方案相比原生数据库的条件检索速度有了极大提升,相比于基于Solr和HiBase的二级索引方案检索速度也有所提升。这种基于协处理器的HBase内存索引机制可以满足大数据时代的需求,提高HBase的查询效率和...
10. **Secondary Indexes**:虽然Cassandra不推荐大量使用二级索引,但对特定场景下,它们可以提高查询效率。 11. **Java Futures**:Java驱动程序返回的查询结果是`ResultSetFuture`,它是Java的`Future`接口的...
- **二级索引**:Cassandra支持本地二级索引和SASI(Succinct Secondary Indexes),以优化查询性能。 - **数据分区与写入路径**:通过合理的分区键设计,优化数据分布,减少热点问题;写入时遵循特定的流程,确保...