【问题标题】:Is there any sorts of links in Cassandra DB cql?Cassandra DB cql中是否有任何类型的链接?
【发布时间】:2021-10-31 07:54:52
【问题描述】:

我正在使用 Cassandra 作为 DB 构建一个应用程序,我想知道是否有任何方法可以复制粘贴并将列值与另一个列值“同步”。 我尝试使用物化视图,但无法在创建视图的同一行中添加额外的常规列。我还看到了这个关于 cql 中“链接”的图表。

cql links

谁能帮我找到一种方法吗?

【问题讨论】:

    标签: database cassandra cql cqlsh


    【解决方案1】:

    在 Cassandra 中没有办法做到这一点。您将需要使用 CQL BATCH 语句来保持表同步。它将插入、更新和删除分组到一个原子事务中。看看这篇文章,我已经更详细地解释了它——https://community.datastax.com/articles/2744/

    例如,如果您要维护这些表:

    • movies
    • movies_by_actor
    • movies_by_genre

    然后您将在 CQL BATCH 中对更新进行分组,如下所示:

    BEGIN BATCH
      INSERT INTO movies (...) VALUES (...);
      INSERT INTO movies_by_actor (...) VALUES (...);
      INSERT INTO movies_by_genre (...) VALUES (...);
    APPLY BATCH;
    

    请注意,还可以执行 UPDATEDELETE 语句以及批量条件写入。

    上面的例子只是在cqlsh中说明而已,实际并没有用到。这是一个使用 Java 驱动程序的示例BatchStatement

    SimpleStatement insertMovies =
      SimpleStatement.newInstance(
        "INSERT INTO movies (...) VALUES (?, ...)", <some_values>);
    
    SimpleStatement insertMoviesByActor =
      SimpleStatement.newInstance(
        "INSERT INTO movies_by_actor (...) VALUES (?, ...)", <some_values>);
    
    SimpleStatement insertMoviesByGenre =
      SimpleStatement.newInstance(
        "INSERT INTO movies_by_genre (...) VALUES (?, ...)", <some_values>);
    
    BatchStatement batch =
      BatchStatement.builder(DefaultBatchType.LOGGED)
        .addStatement(insertMovies)
        .addStatement(insertMoviesByActor)
        .addStatement(insertMoviesByGenre)
        .build();
    

    详情请见Java driver Batch statements。干杯!

    【讨论】:

    • 感谢您的回答!但是在我的项目中,如果我们每次用户更改他的信息时都进行更新,那么在极端情况下,我们会更新不同键空间中的数千个值。这会导致性能问题还是可以?谢谢
    • 什么是“信息”?而且我不明白您为什么要“更新数千个值”?请详细说明。也许您对数据的建模不正确,但如果不知道细节就很难知道。干杯!
    • 对不起,我的意思是“信息”。我需要更新数千个值,因为,例如,当用户创建帖子时,我将他的姓名和个人资料图片 url 存储在帖子的行中,因此,如果他创建了一千个帖子,我需要在一个中更新他的信息千行。
    猜你喜欢
    • 2012-02-11
    • 2014-10-22
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2015-09-14
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多