Cassandra允许在C#中过滤

时间:2016-04-21 13:47:09

标签: c# cassandra cql

首先,我是Cassandra数据库的新手并阅读了本手册。现在我正在构建一个基本页面,以便在我的新数据库中插入和选择几行。该数据库只包含1个表,一个如下所示的用户表:

The table

接下来,我使用以下代码从此表中检索数据:

        Connect();
        Row result = session.Execute("select * from users where last_name ='Jansen'").First();
        Console.WriteLine("{1} {2}", result["first_name"], result["last_name"]);
        cluster.Shutdown();

每当我执行select语句时,我都会收到以下错误:

'Cassandra.InvalidQueryException' occurred in Cassandra.dll

附加信息:无法执行此查询,因为它可能涉及数据过滤,因此可能具有不可预测的性能。如果要在性能不可预测的情况下执行此查询,请使用ALLOW FILTERING

但是我从手册中理解的是,允许过滤不应该适用于此查询,所以基本上为什么会发生这种情况?

而我更重要的问题是,如何解决此错误?

更新:表架构如下所示, 表用户( user_id文本PRIMARY KEY, first_name文本, last_name text);

1 个答案:

答案 0 :(得分:4)

  

但是我从手册中理解的是,允许过滤不应该适用于此查询,所以基本上为什么会发生这种情况?

我担心你的理解是错误的。您想要过滤非主键列。在Cassandra中,您需要为此目的添加ALLOW FILTERING

你可以试试吗? select * from users where last_name ='Jansen' ALLOW FILTERING

但请记住,这相当于做 select * from users并过滤结果中的数据。因此,这是一项非常繁重的操作,会对性能产生巨大影响。