当前位置: 首页 > 知识库问答 >
问题:

斯普林-数据-卡桑德拉模式操作不起作用

张永嘉
2023-03-14

我试图通过扩展< code > Cassandra auto configuration 在我的应用程序中配置Cassandra

我使用spring < code > Cassandra repository 进行数据库访问,并使用带有< code > o . s . d . Cassandra . core . mapping . table 注释的类来定义我的表。

我还配置了以下属性以及集群所需的其他属性

spring: 
  data:
   cassandra:
     schema-action: CREATE_IF_NOT_EXISTS

但是在应用程序启动时,不会在Cassandra中创建表。CassandraProperties中的SchemaAction不工作。

如果我在启动时在我的Application Runner中使用cassandraTemplate.getCqlOperations()以编程方式创建表。执行(…)然后一切正常。

在这种情况下,我可以使用我的存储库。find()和save()方法。只是为了证明我的@table类写得正确

共有1个答案

姜运珧
2023-03-14

这是我注意到的行为。这不仅适用于应用程序中的此特定键.yaml

>

  • 当您不创建任何扩展抽象的 Bean 时,配置春数据将读取应用程序.yaml 中与 spring.data.* 匹配的每个键,包括您提供的模式操作。(按公约)。我没有看到您提供的文件有任何问题,事实上,我在这里有一个工作示例

    当你创建一个扩展抽象的BeanCassandra配置时,现在你的工作是显式实现你想要的值,请在你的类中添加。此外,您还需要提供明确的注释@EnableCassandraRepositories

    @Value("${spring.data.cassandra.schema-action}")
    private String schemaAction;
        
    @Override
    public SchemaAction getSchemaAction() {
      return SchemaAction.valueOf(schemaAction);
    }
    

    最重要的是,我想建议根本不要使用它。Spring数据很有魅力,但以下是我的担忧:

    >

  • 创建表不仅仅是匹配数据模型的问题。事实上,基于您的用例或TTL或任何元数据的压缩策略呢?

    我们假设您知道如何用分区键和聚集列正确地构建主键,但是如果您需要在两个表中存储完全相同的对象,因为您有两个不同的查询呢?(请记住:如果您需要在应用程序中的任何地方允许过滤=

  •  类似资料:
    • 操作超时 - 仅收到 0 个响应“,信息:”表示来自服务器的错误消息“,代码:4608,一致性:1,已接收:0,阻止:1,isData 呈现:0,... 我每天尝试在我的cassandra集群上执行SELECT查询时都会遇到几次这样的错误。我们在m1.large aws实例上有一个3节点集群。他们大多数时候都能成功,但我们偶尔会遇到上述错误。我们还没有生产,所以所有的桌子都很小。我们没有超过几千行

    • 我目前在cassandra中有一个名为macrecord的表,类似于以下内容: 在这种情况下,我想不出其他解决方案,只有在macadd值重复的情况下删除整行,然后插入具有更新时间戳的新行。 是否有更好的解决方案在macadd值重复时更新时间戳,或者在我的原始表中只有macadd是主键的范围内查询时间戳值的替代方法。

    • 我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为

    • 我对Cassandra相当陌生,在过去的一个月里读了很多书。 我正在研究一个小用例。 查询:基于在某个时间范围内播放的金额排名前 X 的玩家。 因此,在任何给定的时间范围内,我都希望汇总玩家的总游戏次数,并得出排名前X的玩家。 我遵循了创建UDF(使用C*-2.2.0版本)的方法,用于聚合AmountPlay by a Player。 下面是我为这个用例设计的时间序列数据模型。 请让我知道我的数据

    • 我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?

    • 我们运行的cassandra集群有3个节点,复制因子为2。 我们的nodejs服务器是查询这个集群的唯一地方。 是否有其他任何地方的参数设置可能导致不一致的查询? cassandra v2.2.4 nodejs驱动程序v3.0.0 编辑-添加我正在做的事情的示例: 1)检查用户名是否被占用 2)创建用户