Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在cassandra中需要多个索引_Cassandra_Cql3_Datastax_Cassandra 2.0 - Fatal编程技术网

在cassandra中需要多个索引

在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也会选择一个基数较低的列,并且不会使用我创建的其他二级索引。还有其他

我们正在从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上使用复杂的RDBMS模式,只需对应用程序进行最小的更改,是极不明智的。只有当您能够设计一个利用该体系结构的模式时,才能实现Cassandra的性能。即使在这种情况下,您也必须对客户端代码进行重大修改。对于1,此用例的标准建议是,您必须为应用程序中所需的部分或全部索引创建多个表。显然,这意味着要对模式进行非规范化并存储相同数据的多个副本。2根据1,您需要创建多个表,并将所有或大部分WHERE列放入它们的主键中。您将获得很好的性能,但缺点是显著的非规范化。