我正在尝试使用 32 位有符号整数的比较器/验证器创建动态列。这显然将节省存储空间以及其他优势。目前,如果我有一个 UTF8Type 验证器(使用 Twitter 的 cassandra Ruby 客户端),这将非常有用:
db.insert(:foo, 'mykey', {'mycol' => 'myval'})
这是出现问题的地方:
db.insert(:foo, 'mykey', {5 => 'myval'})
我认为这更像是一个 Ruby 问题而不是 Cassandra 问题。使用 Rails 控制台,我得到以下信息:
TypeError: no implicit conversion of Fixnum into String
进一步澄清,我不能简单地做:
db.insert(:foo, 'mykey', {'5' => 'myval'})
这将触发验证失败,该验证失败需要列的整数而不是字符串。
有没有办法让它在 Ruby 中合理地工作,这样我就不必使用 UTF8Type 列名,并且可以为我的基于 Cassandra 1.2 的应用程序坚持基于 int 的列名?