【发布时间】:2020-01-08 21:44:34
【问题描述】:
这就是问题所在。
作为批量文件上传 (CSV) 的一部分,我们的“客户”会定期被客户提取。我们从他们那里得到的数据是姓名、地址、邮政编码、客户参考号。
我们将这些保存到 cassandra 的“客户表”中。
当我们这样做时,我们会分配一个 UUID,然后我们会在整个系统的其余部分使用它。
问题是关于主键的……我们真的有两个选择 1) UUID 作为主键或,2)(姓名、地址、邮政编码)的复合主键。
这些选项的问题是:1)我们在初始插入时没有 UUID,“客户”可能重复,那么我们如何进行重复数据删除?获取(选择)后跟 upsert 将是低效的。 2) 有几个问题:a) 如果我们执行更新操作,则 UUID 可能会被覆盖…… b) 还有一个问题是名称、地址、邮政编码无法更新,因为它们是复合主键... a) 可能不是问题,因为对 UUID 的更改将发出一个事件,该事件将被其他感兴趣的服务接收...但是有点删除 UUID 的点... b) 我们可以保留别名 (AKA) 字段为客户提供首选或更新的详细信息,同时保留原始数据以供参考……虽然这感觉很笨拙。
首选且最简单的方法是选择选项 1,但不使用主键进行初始创建 - 不确定这是否可行?使用选项 2,我们还需要能够更新所有字段,但 UUID 列除外……
【问题讨论】:
标签: cassandra primary-key uuid insert-update upsert