在cassandra中需要多个索引
我们正在从oracle迁移到cassandra。我们需要对应用程序进行最小的更改 当我对卡桑德拉进行POC时,出现了三个问题 在Oracle中,我们创建了多个复合索引,但我没有发现任何文档说cassandra会支持这一点。是否可以创建多个复合索引?。如果没有任何建议的话 我们的Txn表在where子句中使用了15列中的7列。没有索引,我无法将该列放入where子句中。即使我创建了多个二级索引,在where子句中,Casandra也会选择一个基数较低的列,并且不会使用我创建的其他二级索引。还有其他方法可以提高性能吗 在布尔数据类型上创建索引时出现问题。这就是我们决定创建表/列族的方式 创建表格部门 emp_name varchar, emp_id int, 部门id int, 部门名称varchar, 主动布尔, 主键部门id、emp id 在应用程序中,我们有如下查询 1.从dept_name='software'所在的dept中选择*; 我已经为部门名称创建了二级索引。所以这个问题就解决了 从dept_id=1001和active=Y的dept中选择*; 我觉得很难为这个查询创建索引。由于活动列是布尔类型,因此创建二级索引没有用处。如果没有索引,我将无法在where子句中包含该条件。在cassandra中需要多个索引,cassandra,cql3,datastax,cassandra-2.0,Cassandra,Cql3,Datastax,Cassandra 2.0,我们正在从oracle迁移到cassandra。我们需要对应用程序进行最小的更改 当我对卡桑德拉进行POC时,出现了三个问题 在Oracle中,我们创建了多个复合索引,但我没有发现任何文档说cassandra会支持这一点。是否可以创建多个复合索引?。如果没有任何建议的话 我们的Txn表在where子句中使用了15列中的7列。没有索引,我无法将该列放入where子句中。即使我创建了多个二级索引,在where子句中,Casandra也会选择一个基数较低的列,并且不会使用我创建的其他二级索引。还有其他
对我的查询有什么建议吗?我认为在Cassandra上使用复杂的RDBMS模式,只需对应用程序进行最小的更改,是极不明智的。只有当您能够设计一个利用该体系结构的模式时,才能实现Cassandra的性能。即使在这种情况下,您也必须对客户端代码进行重大修改。对于1,此用例的标准建议是,您必须为应用程序中所需的部分或全部索引创建多个表。显然,这意味着要对模式进行非规范化并存储相同数据的多个副本。2根据1,您需要创建多个表,并将所有或大部分WHERE列放入它们的主键中。您将获得很好的性能,但缺点是显著的非规范化。