不先检查数据是否存在就将数据插入 cassandra 会更好吗?
Is it better to insert data into cassandra without checking its existence first?
考虑到您不能在 Cassandra 中插入重复项(如果键相同)并且它只是覆盖现有数据,如果我必须向数据库中插入一行我实际上并没有知道它是否已经存在,还是直接写更好,还是我应该先检查它是否存在,如果不存在,再插入?
一天结束时的数据将是相同的,但我想知道,从性能方面来说,是否更好地简单地写入数据而不检查它是否存在,或者先检查它然后只插入是否更快如果需要的话。
假设我的读取复制因子设置为 2,写入设置为 3。
有人知道吗?
非常感谢,
更新:
示例列系列是这样的:
CREATE TABLE IF NOT EXISTS notifications (
userid uuid,
deviceid uuid,
devicename text,
PRIMARY KEY(userid, deviceid)
);
此列系列的目的是捕获用户的设备 id/names,当我向他们发送 MQ 通知时将使用这些设备。每次用户登录时,我都必须确保捕获设备 ID,因为这是我用来通知他们的。由于用户可以从许多设备登录,因此我的数据库中每个用户可以有多个 userid/deviceid 对,但 userid/deviceid 对应该是唯一的。
你的数据结构看起来不错。正如您所说,Cassandra 会覆盖现有 PK 上的数据,最好在不检查数据的情况下编写(独特的数据库交互 -> 更好的性能)。请记住,Cassandra 的写入效率更高。
考虑到您不能在 Cassandra 中插入重复项(如果键相同)并且它只是覆盖现有数据,如果我必须向数据库中插入一行我实际上并没有知道它是否已经存在,还是直接写更好,还是我应该先检查它是否存在,如果不存在,再插入?
一天结束时的数据将是相同的,但我想知道,从性能方面来说,是否更好地简单地写入数据而不检查它是否存在,或者先检查它然后只插入是否更快如果需要的话。
假设我的读取复制因子设置为 2,写入设置为 3。
有人知道吗?
非常感谢,
更新:
示例列系列是这样的:
CREATE TABLE IF NOT EXISTS notifications (
userid uuid,
deviceid uuid,
devicename text,
PRIMARY KEY(userid, deviceid)
);
此列系列的目的是捕获用户的设备 id/names,当我向他们发送 MQ 通知时将使用这些设备。每次用户登录时,我都必须确保捕获设备 ID,因为这是我用来通知他们的。由于用户可以从许多设备登录,因此我的数据库中每个用户可以有多个 userid/deviceid 对,但 userid/deviceid 对应该是唯一的。
你的数据结构看起来不错。正如您所说,Cassandra 会覆盖现有 PK 上的数据,最好在不检查数据的情况下编写(独特的数据库交互 -> 更好的性能)。请记住,Cassandra 的写入效率更高。