Cassandra插入/更新,当您不能依赖主键或uuid时无需重复

问题描述 投票:0回答:1

这是问题。

我们的“客户”作为从客户上传的批量文件(CSV)的一部分被定期提取。我们从他们那里得到的数据是名称,地址,邮政编码,客户参考号。

我们正在将它们保存到cassandra客户表中。

[执行此操作时,我们分配一个UUID,然后在整个系统的其余部分中使用它。

问题涉及主键……我们确实有两个选择1)UUID作为主键,或2)(名称,地址,邮政编码)的复合主键。

这些选项的问题是:1)我们在初始插入时没有UUID,有可能重复了“客户”,那么我们如何删除重复数据?先获取(选择),然后再添加高效率的代码。 2)有两个问题:a)如果我们执行更新操作,则UUID可能会被覆盖…b)还有一个问题,即名称,地址,邮政编码无法更新,因为它们是复合主键... a)可能不成问题,因为对UUID的更改将引发一个事件,该事件将由其他感兴趣的服务来处理...但是可以删除UUID的点... b)我们可以保留别名(AKA)字段供客户偏爱或更新的详细信息,同时保留原始数据以供参考……虽然感觉很笨拙。

首选的最简单的方法是选择选项1,但不使用主键进行初始创建-不确定是否可以?使用选项2,我们还需要能够更新所有字段,但UUID列除外...

cassandra primary-key uuid insert-update upsert
1个回答
0
投票

如果事先知道,则只能真正使用UUID作为分区键。如果您没有UUID,则将无法在表中插入新客户。

根据您的描述,您将UUID用作系统其余部分的唯一ID,因此它确实是完美的分区键。但是,您将需要针对没有客户的UUID的情况找到解决方案。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.