从2.1迁移到3.x时的Cassandra查询兼容性
我正在将数据从cassandra 2.1迁移到3.x 下面我有一个从2.1迁移到3.x时的Cassandra查询兼容性,cassandra,datastax,datastax-enterprise,cassandra-2.0,cassandra-3.0,Cassandra,Datastax,Datastax Enterprise,Cassandra 2.0,Cassandra 3.0,我正在将数据从cassandra 2.1迁移到3.x 下面我有一个cassandra查询,它在我的'cassandra 2.1'中运行良好,但在'cassandra 3.x'中出现错误 查询:“按用户名desc limit 10从事件用户中选择*,其中app\u id=1234,事件名称='login'和日期('2017-06-11','2017-06-11') Cassandra v2.1:运行良好 Cassandra v3.x:错误 InvalidRequest:Error from ser
cassandra
查询,它在我的'cassandra 2.1'中运行良好,但在'cassandra 3.x'中出现错误
查询:“按用户名desc limit 10从事件用户中选择*,其中app\u id=1234,事件名称='login'和日期('2017-06-11','2017-06-11')代码>
Cassandra v2.1:运行良好
Cassandra v3.x:错误
InvalidRequest:Error from server:code=2200[Invalid query]message=“无法在分区键上同时使用ORDER BY和a IN限制对查询进行分页;您必须删除ORDER BY或IN and sort客户端,或为此查询禁用分页”
正如错误所说,不要同时使用IN和OrderBy,而要在客户端使用排序
排序然后选择前10行在客户端是不可行的
表架构:创建表事件用户(应用程序id bigint、事件名称文本、日期文本、用户名文本、计数计数器、唯一计数计数器、主键((应用程序id、事件名称、日期)、用户名)),聚类顺序为(用户名ASC)
解决此问题的更好方法是什么?两个cassandra版本都会给出错误信息。我已经在2.1.14
和3.10
上对其进行了测试,如果同时使用IN和ORDER BY,则可能需要使用cqlsh中的paging off命令关闭分页。cqlsh>PAGING OFF就是答案。将PAGING OFF
会对性能产生任何影响,默认PAGING on
会做什么如果关闭PAGING OFF,查询结果将在单个请求中提供。默认情况下,分页处于打开状态,结果逐页提供。单个页面中的默认行为100