【问题标题】:Default float value默认浮点值
【发布时间】:2014-02-19 07:42:23
【问题描述】:

表中的列是浮点类型,插入行时不填充,即稍后填充。 有没有办法选择那些行?

cql CLI 输出 null 值。

这是我尝试过的查询。

select * from <table> where <column> is null;

然后关注了这个CQL: Unable to Null Check in "Where" Clause

即cassandra 中没有类似 null 的东西。

有解决办法吗?

【问题讨论】:

    标签: cassandra cql3


    【解决方案1】:

    很遗憾,目前不支持此功能。 Cassandra 将 null 解释为缺少值,而不是特殊常量。我猜想为选择查询(以及索引、分区等)添加空支持将是代码方面和数据如何在表中持久化方面的重大重新设计,因此目前不追求。

    作为一种解决方法,我建议使用一个常量值,您会在客户端将其解释为“null”(例如:NaN-Infinity 或超出正常值范围的其他值)。您必须确保使用此值显式初始化适当的行,因为当前也不支持默认值。

    【讨论】:

    • 是的,不支持很多东西,我打算搬到 mongodb。
    • 很公平。如果您没有特别要求 Cassandra 可扩展性和性能,MongoDB 可能是一个更简单、更有效的解决方案。
    【解决方案2】:

    Daniel 说得对,这还不被支持,但原因是错误的。 :)

    根据原始问题中的链接,从 1.2.4 开始实际上支持 Null。但是,即使使用 ALLOW FILTERING,仍然不支持像这样的未索引过滤查询 (https://issues.apache.org/jira/browse/CASSANDRA-6377),因为它们超出了 Cassandra 支持大规模应用程序的使命的范围。这种查询在原型设计时非常有用,但是当您有数十亿行时,其中有 10 行是空的,并且在您的集群上释放它,您将度过一段糟糕的时光。

    (现在,如果您需要将此作为大规模分析的一部分,Cassandra 会为您提供我们的 Hadoop 集成或 DataStax Enterprise。)

    也就是说,我们正在朝着让用户做他们想做的事情的方向发展,即使这意味着要在脚下开枪。我们希望在 2014 年晚些时候在 3.0 中支持这种查询。

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 1970-01-01
      • 2019-04-01
      • 1970-01-01
      • 2019-07-05
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多