【问题标题】:cassandra @table dynamically change namecassandra @table 动态更改名称
【发布时间】:2018-12-27 20:56:08
【问题描述】:

我有多个 API 使用者,他们将类似的数据发布到我的 API 中。我的 API 需要使用这些数据并将数据保存到由消费者名称标识的 cassandra 表中。例如。 consumername_tablename

我的 Spring Boot 实体使用 @Table 进行了注释,它不允许我动态更改表名。大多数在线建议表明我们不应该尝试改变它。

但在我的场景中,识别所有消费者并提前创建表格听起来并不正确。将来我希望能够无缝地将消费者添加到我的 API。

我想使用在我的 API 调用中传递的变量作为我的 cassandra 表名称的前缀。这是我能做到的吗?

【问题讨论】:

    标签: spring-boot cassandra spring-data


    【解决方案1】:

    对于初学者:您不能在不重新编译的情况下更改注解——它们被烘焙到已编译的类文件中。这不是正确的方法。

    为什么不把所有东西放在一张桌子上,让消费者成为钥匙的一部分?这应该会为您提供相同的功能,而不会带来任何麻烦。

    【讨论】:

    • 谢谢克里斯。我正在考虑将所有东西都放在一张桌子上,因为这似乎是唯一可行的方法。但是由于我来自 Oracle RDBMS 背景,我不愿意将所有内容都堆积在一个地方。但也许我的理解很愚蠢。但是考虑到一个真正的用例,你不认为应该有另一种方法来做这样的事情吗?
    • 我也不会在 Oracle 中为每个客户创建一张表。我通过创造性地使用分区和索引组织表在 Oracle 中完成了许多亿行表,并获得了出色的查询和插入性能。但这是一个问题。在 Cassandra 中,如果您始终知道要查询哪个客户,那么将客户作为分区键的一部分绝对是正确的方法。如果您不这样做(即您会问诸如“显示订单 ID 638”之类的问题),那么将客户作为集群键字段可能更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多