【发布时间】:2016-03-12 23:45:02
【问题描述】:
我有一个 Cassandra,我想使用 cql "IN" 查询。因此,我必须更改组合主键中元素的顺序(只有最后一块可用于“IN”查询)。该表相当大,但现在不跨越多个节点。
所以我现在尝试的(不起作用)如下:
- 创建具有相同列但主键元素顺序不同的新列族
- 停止写入进程和 nodetool 刷新
- 复制所有 /data/keyspace/columnfamily/ 文件
- 重命名文件以匹配新的列族名称
- 使用 sstable 加载器将文件加载到新列族中
但后来主键就搞砸了:
无法将值“53ccb45d4ab0d3560e8c36fd”(对于列“cent”)解码为 int:解包需要长度为 4 的字符串参数
我也不能使用 COPY ... TO ... 因为这只是超时...
有什么想法吗?
【问题讨论】:
-
不要使用 IN 查询 :-) 它无效(例如,请参阅 lostechies.com/ryansvihla/2014/09/22/…)
-
@jny well scylla 应该可以解决这个问题。但无论如何,如果替代方案只是用许多类似的 quereis(我目前正在做的)锤击数据库,那么性能也很差。我真的很想看到然后 IN 而不是仅仅相信 :-)
-
@jny 也:来自您的链接:““in”关键字有它的位置,例如在查询分区内部时,但总的来说,我希望它不能跨分区执行,我到目前为止修复了很多性能问题,我还没有看到它比单独的查询和异步更快。”,这正是我想要做的。
标签: cassandra cql cassandra-2.0 cql3